AcTools.Kn5File.XmlWriterExtension.MatrixToCollada C# (CSharp) Method

MatrixToCollada() public static method

public static MatrixToCollada ( float matrix ) : string
matrix float
return string
        public static string MatrixToCollada(float[] matrix) {
            var sb = new StringBuilder();
            for (var i = 0; i < 4; i++) {
                for (var j = 0; j < 4; j++) {
                    if (i > 0 || j > 0) {
                        sb.Append(" ");
                    }

                    sb.Append(matrix[j * 4 + i].ToString(CultureInfo.InvariantCulture));
                }
            }

            return sb.ToString();
        }

Usage Example

Example #1
0
        private void ExportCollada_NodeSub(XmlWriter xml, IReadOnlyList <string> boneNames, Kn5Node node)
        {
            xml.WriteStartElement("node");
            xml.WriteAttributeStringSafe("id", node.Name);
            xml.WriteAttributeStringSafe("sid", node.Name);
            xml.WriteAttributeStringSafe("name", node.Name);

            xml.WriteAttributeString("layer", node.Active ? "Visible" : "Hidden");
            xml.WriteAttributeString("type", node.NodeClass == Kn5NodeClass.Base && boneNames.Contains(node.Name) ? "JOINT" : "NODE");

            if (node.Children?.FirstOrDefault()?.NodeClass != Kn5NodeClass.SkinnedMesh)
            {
                xml.WriteElement("matrix",
                                 "sid", "transform",
                                 node.NodeClass == Kn5NodeClass.Base ? XmlWriterExtension.MatrixToCollada(node.Transform) : "1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0");
            }

            if (IsMultiMaterial(node) && node.Children != null)
            {
                xml.WriteStartElement("instance_geometry");
                xml.WriteAttributeStringSafe("url", $"#{node.Name}-mesh");
                ExportCollada_NodeSub_BindMaterial(xml, node.Children.Select(x => x.MaterialId).ToArray());
                xml.WriteEndElement();
            }
            else
            {
                ExportCollada_NodeSub_Inner(xml, boneNames, node);
            }

            xml.WriteEndElement(); // node
        }
All Usage Examples Of AcTools.Kn5File.XmlWriterExtension::MatrixToCollada