Example #1
0
        public static long GetMeshToString(GameObject gameObj, Material[] materials, ref StringBuilder objects, ref StringBuilder connections, GameObject parentObject = null, long parentModelId = 0L)
        {
            StringBuilder stringBuilder  = new StringBuilder();
            StringBuilder stringBuilder2 = new StringBuilder();
            long          randomFBXId    = FBXWriter.GetRandomFBXId();
            long          randomFBXId2   = FBXWriter.GetRandomFBXId();
            MeshFilter    component      = gameObj.GetComponent <MeshFilter>();
            string        name           = gameObj.name;
            string        text           = "Null";
            bool          flag           = component != null;

            if (flag)
            {
                name = component.sharedMesh.name;
                text = "Mesh";
            }
            bool flag2 = parentModelId == 0L;

            if (flag2)
            {
                stringBuilder2.AppendLine("\t;Model::" + name + ", Model::RootNode");
            }
            else
            {
                stringBuilder2.AppendLine("\t;Model::" + name + ", Model::USING PARENT");
            }
            stringBuilder2.AppendLine(string.Concat(new object[]
            {
                "\tC: \"OO\",",
                randomFBXId2,
                ",",
                parentModelId
            }));
            stringBuilder2.AppendLine();
            stringBuilder.AppendLine(string.Concat(new object[]
            {
                "\tModel: ",
                randomFBXId2,
                ", \"Model::",
                gameObj.name,
                "\", \"",
                text,
                "\" {"
            }));
            stringBuilder.AppendLine("\t\tVersion: 232");
            stringBuilder.AppendLine("\t\tProperties70:  {");
            stringBuilder.AppendLine("\t\t\tP: \"RotationOrder\", \"enum\", \"\", \"\",4");
            stringBuilder.AppendLine("\t\t\tP: \"RotationActive\", \"bool\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\tP: \"InheritType\", \"enum\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\tP: \"ScalingMax\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\tP: \"DefaultAttributeIndex\", \"int\", \"Integer\", \"\",0");
            Vector3 localPosition = gameObj.transform.localPosition;

            stringBuilder.Append("\t\t\tP: \"Lcl Translation\", \"Lcl Translation\", \"\", \"A+\",");
            stringBuilder.AppendFormat("{0},{1},{2}", localPosition.x * -1f, localPosition.y, localPosition.z);
            stringBuilder.AppendLine();
            Vector3 localEulerAngles = gameObj.transform.localEulerAngles;

            stringBuilder.AppendFormat("\t\t\tP: \"Lcl Rotation\", \"Lcl Rotation\", \"\", \"A+\",{0},{1},{2}", localEulerAngles.x, localEulerAngles.y * -1f, -1f * localEulerAngles.z);
            stringBuilder.AppendLine();
            Vector3 localScale = gameObj.transform.localScale;

            stringBuilder.AppendFormat("\t\t\tP: \"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\",{0},{1},{2}", localScale.x, localScale.y, localScale.z);
            stringBuilder.AppendLine();
            stringBuilder.AppendLine("\t\t\tP: \"currentUVSet\", \"KString\", \"\", \"U\", \"map1\"");
            stringBuilder.AppendLine("\t\t}");
            stringBuilder.AppendLine("\t\tShading: T");
            stringBuilder.AppendLine("\t\tCulling: \"CullingOff\"");
            stringBuilder.AppendLine("\t}");
            bool flag3 = component != null;

            if (flag3)
            {
                Mesh sharedMesh = component.sharedMesh;
                stringBuilder.AppendLine("\tGeometry: " + randomFBXId + ", \"Geometry::\", \"Mesh\" {");
                Vector3[] vertices = sharedMesh.vertices;
                int       num      = sharedMesh.vertexCount * 3;
                stringBuilder.AppendLine("\t\tVertices: *" + num + " {");
                stringBuilder.Append("\t\t\ta: ");
                for (int i = 0; i < vertices.Length; i++)
                {
                    bool flag4 = i > 0;
                    if (flag4)
                    {
                        stringBuilder.Append(",");
                    }
                    stringBuilder.AppendFormat("{0},{1},{2}", vertices[i].x * -1f, vertices[i].y, vertices[i].z);
                }
                stringBuilder.AppendLine();
                stringBuilder.AppendLine("\t\t} ");
                int   num2      = sharedMesh.triangles.Length;
                int[] triangles = sharedMesh.triangles;
                stringBuilder.AppendLine("\t\tPolygonVertexIndex: *" + num2 + " {");
                stringBuilder.Append("\t\t\ta: ");
                for (int j = 0; j < num2; j += 3)
                {
                    bool flag5 = j > 0;
                    if (flag5)
                    {
                        stringBuilder.Append(",");
                    }
                    stringBuilder.AppendFormat("{0},{1},{2}", triangles[j], triangles[j + 2], triangles[j + 1] * -1 - 1);
                }
                stringBuilder.AppendLine();
                stringBuilder.AppendLine("\t\t} ");
                stringBuilder.AppendLine("\t\tGeometryVersion: 124");
                stringBuilder.AppendLine("\t\tLayerElementNormal: 0 {");
                stringBuilder.AppendLine("\t\t\tVersion: 101");
                stringBuilder.AppendLine("\t\t\tName: \"\"");
                stringBuilder.AppendLine("\t\t\tMappingInformationType: \"ByPolygonVertex\"");
                stringBuilder.AppendLine("\t\t\tReferenceInformationType: \"Direct\"");
                Vector3[] normals = sharedMesh.normals;
                stringBuilder.AppendLine("\t\t\tNormals: *" + num2 * 3 + " {");
                stringBuilder.Append("\t\t\t\ta: ");
                for (int k = 0; k < num2; k += 3)
                {
                    bool flag6 = k > 0;
                    if (flag6)
                    {
                        stringBuilder.Append(",");
                    }
                    Vector3 vector = normals[triangles[k]];
                    stringBuilder.AppendFormat("{0},{1},{2},", vector.x * -1f, vector.y, vector.z);
                    vector = normals[triangles[k + 2]];
                    stringBuilder.AppendFormat("{0},{1},{2},", vector.x * -1f, vector.y, vector.z);
                    vector = normals[triangles[k + 1]];
                    stringBuilder.AppendFormat("{0},{1},{2}", vector.x * -1f, vector.y, vector.z);
                }
                stringBuilder.AppendLine();
                stringBuilder.AppendLine("\t\t\t}");
                stringBuilder.AppendLine("\t\t}");
                int       num3  = sharedMesh.uv.Length;
                Vector2[] array = sharedMesh.uv;
                stringBuilder.AppendLine("\t\tLayerElementUV: 0 {");
                stringBuilder.AppendLine("\t\t\tVersion: 101");
                stringBuilder.AppendLine("\t\t\tName: \"map1\"");
                stringBuilder.AppendLine("\t\t\tMappingInformationType: \"ByPolygonVertex\"");
                stringBuilder.AppendLine("\t\t\tReferenceInformationType: \"IndexToDirect\"");
                stringBuilder.AppendLine("\t\t\tUV: *" + num3 * 2 + " {");
                stringBuilder.Append("\t\t\t\ta: ");
                for (int l = 0; l < num3; l++)
                {
                    bool flag7 = l > 0;
                    if (flag7)
                    {
                        stringBuilder.Append(",");
                    }
                    stringBuilder.AppendFormat("{0},{1}", array[l].x, array[l].y);
                }
                stringBuilder.AppendLine();
                stringBuilder.AppendLine("\t\t\t\t}");
                stringBuilder.AppendLine("\t\t\tUVIndex: *" + num2 + " {");
                stringBuilder.Append("\t\t\t\ta: ");
                for (int m = 0; m < num2; m += 3)
                {
                    bool flag8 = m > 0;
                    if (flag8)
                    {
                        stringBuilder.Append(",");
                    }
                    int num4 = triangles[m];
                    int num5 = triangles[m + 2];
                    int num6 = triangles[m + 1];
                    stringBuilder.AppendFormat("{0},{1},{2}", num4, num5, num6);
                }
                stringBuilder.AppendLine();
                stringBuilder.AppendLine("\t\t\t}");
                stringBuilder.AppendLine("\t\t}");
                bool flag9 = sharedMesh.uv2.Length != 0;
                if (flag9)
                {
                    num3  = sharedMesh.uv2.Length;
                    array = sharedMesh.uv2;
                    stringBuilder.AppendLine("\t\tLayerElementUV: 1 {");
                    stringBuilder.AppendLine("\t\t\tVersion: 101");
                    stringBuilder.AppendLine("\t\t\tName: \"map2\"");
                    stringBuilder.AppendLine("\t\t\tMappingInformationType: \"ByPolygonVertex\"");
                    stringBuilder.AppendLine("\t\t\tReferenceInformationType: \"IndexToDirect\"");
                    stringBuilder.AppendLine("\t\t\tUV: *" + num3 * 2 + " {");
                    stringBuilder.Append("\t\t\t\ta: ");
                    for (int n = 0; n < num3; n++)
                    {
                        bool flag10 = n > 0;
                        if (flag10)
                        {
                            stringBuilder.Append(",");
                        }
                        stringBuilder.AppendFormat("{0},{1}", array[n].x, array[n].y);
                    }
                    stringBuilder.AppendLine();
                    stringBuilder.AppendLine("\t\t\t\t}");
                    stringBuilder.AppendLine("\t\t\tUVIndex: *" + num2 + " {");
                    stringBuilder.Append("\t\t\t\ta: ");
                    for (int num7 = 0; num7 < num2; num7 += 3)
                    {
                        bool flag11 = num7 > 0;
                        if (flag11)
                        {
                            stringBuilder.Append(",");
                        }
                        int num8  = triangles[num7];
                        int num9  = triangles[num7 + 2];
                        int num10 = triangles[num7 + 1];
                        stringBuilder.AppendFormat("{0},{1},{2}", num8, num9, num10);
                    }
                    stringBuilder.AppendLine();
                    stringBuilder.AppendLine("\t\t\t}");
                    stringBuilder.AppendLine("\t\t}");
                }
                stringBuilder.AppendLine("\t\tLayerElementMaterial: 0 {");
                stringBuilder.AppendLine("\t\t\tVersion: 101");
                stringBuilder.AppendLine("\t\t\tName: \"\"");
                stringBuilder.AppendLine("\t\t\tMappingInformationType: \"ByPolygon\"");
                stringBuilder.AppendLine("\t\t\tReferenceInformationType: \"IndexToDirect\"");
                int           num11          = 0;
                int           subMeshCount   = sharedMesh.subMeshCount;
                StringBuilder stringBuilder3 = new StringBuilder();
                bool          flag12         = subMeshCount == 1;
                if (flag12)
                {
                    int num12 = triangles.Length / 3;
                    for (int num13 = 0; num13 < num12; num13++)
                    {
                        stringBuilder3.Append("0,");
                        num11++;
                    }
                }
                else
                {
                    List <int[]> list = new List <int[]>();
                    for (int num14 = 0; num14 < subMeshCount; num14++)
                    {
                        list.Add(sharedMesh.GetIndices(num14));
                    }
                    for (int num15 = 0; num15 < triangles.Length; num15 += 3)
                    {
                        for (int num16 = 0; num16 < list.Count; num16++)
                        {
                            bool flag13 = false;
                            for (int num17 = 0; num17 < list[num16].Length; num17 += 3)
                            {
                                bool flag14 = triangles[num15] == list[num16][num17] && triangles[num15 + 1] == list[num16][num17 + 1] && triangles[num15 + 2] == list[num16][num17 + 2];
                                if (flag14)
                                {
                                    stringBuilder3.Append(num16.ToString());
                                    stringBuilder3.Append(",");
                                    num11++;
                                    break;
                                }
                                bool flag15 = flag13;
                                if (flag15)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
                stringBuilder.AppendLine("\t\t\tMaterials: *" + num11 + " {");
                stringBuilder.Append("\t\t\t\ta: ");
                stringBuilder.AppendLine(stringBuilder3.ToString());
                stringBuilder.AppendLine("\t\t\t} ");
                stringBuilder.AppendLine("\t\t}");
                stringBuilder.AppendLine("\t\tLayer: 0 {");
                stringBuilder.AppendLine("\t\t\tVersion: 100");
                stringBuilder.AppendLine("\t\t\tLayerElement:  {");
                stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementNormal\"");
                stringBuilder.AppendLine("\t\t\t\tTypedIndex: 0");
                stringBuilder.AppendLine("\t\t\t}");
                stringBuilder.AppendLine("\t\t\tLayerElement:  {");
                stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementMaterial\"");
                stringBuilder.AppendLine("\t\t\t\tTypedIndex: 0");
                stringBuilder.AppendLine("\t\t\t}");
                stringBuilder.AppendLine("\t\t\tLayerElement:  {");
                stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementTexture\"");
                stringBuilder.AppendLine("\t\t\t\tTypedIndex: 0");
                stringBuilder.AppendLine("\t\t\t}");
                stringBuilder.AppendLine("\t\t\tLayerElement:  {");
                stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementUV\"");
                stringBuilder.AppendLine("\t\t\t\tTypedIndex: 0");
                stringBuilder.AppendLine("\t\t\t}");
                stringBuilder.AppendLine("\t\t}");
                bool flag16 = sharedMesh.uv2.Length != 0;
                if (flag16)
                {
                    stringBuilder.AppendLine("\t\tLayer: 1 {");
                    stringBuilder.AppendLine("\t\t\tVersion: 100");
                    stringBuilder.AppendLine("\t\t\tLayerElement:  {");
                    stringBuilder.AppendLine("\t\t\t\tType: \"LayerElementUV\"");
                    stringBuilder.AppendLine("\t\t\t\tTypedIndex: 1");
                    stringBuilder.AppendLine("\t\t\t}");
                    stringBuilder.AppendLine("\t\t}");
                }
                stringBuilder.AppendLine("\t}");
                stringBuilder2.AppendLine("\t;Geometry::, Model::" + sharedMesh.name);
                stringBuilder2.AppendLine(string.Concat(new object[]
                {
                    "\tC: \"OO\",",
                    randomFBXId,
                    ",",
                    randomFBXId2
                }));
                stringBuilder2.AppendLine();
                MeshRenderer component2 = gameObj.GetComponent <MeshRenderer>();
                bool         flag17     = component2 != null;
                if (flag17)
                {
                    Material[] sharedMaterials = component2.sharedMaterials;
                    for (int num18 = 0; num18 < sharedMaterials.Length; num18++)
                    {
                        Material material = sharedMaterials[num18];
                        int      num19    = Mathf.Abs(material.GetInstanceID());
                        bool     flag18   = material == null;
                        if (flag18)
                        {
                            Debug.LogError("ERROR: the game object " + gameObj.name + " has an empty material on it. This will export problematic files. Please fix and reexport");
                        }
                        else
                        {
                            stringBuilder2.AppendLine("\t;Material::" + material.name + ", Model::" + sharedMesh.name);
                            stringBuilder2.AppendLine(string.Concat(new object[]
                            {
                                "\tC: \"OO\",",
                                num19,
                                ",",
                                randomFBXId2
                            }));
                            stringBuilder2.AppendLine();
                        }
                    }
                }
            }
            for (int num20 = 0; num20 < gameObj.transform.childCount; num20++)
            {
                GameObject gameObject = gameObj.transform.GetChild(num20).gameObject;
                FBXMeshGetter.GetMeshToString(gameObject, materials, ref stringBuilder, ref stringBuilder2, gameObj, randomFBXId2);
            }
            objects.Append(stringBuilder.ToString());
            connections.Append(stringBuilder2.ToString());
            return(randomFBXId2);
        }
Example #2
0
        public static string MeshToString(GameObject gameObj, string newPath, Material[] materials, bool copyMaterials = false, bool copyTextures = false)
        {
            StringBuilder stringBuilder  = new StringBuilder();
            StringBuilder stringBuilder2 = new StringBuilder();

            stringBuilder2.AppendLine("; Object properties");
            stringBuilder2.AppendLine(";------------------------------------------------------------------");
            stringBuilder2.AppendLine("");
            stringBuilder2.AppendLine("Objects:  {");
            StringBuilder stringBuilder3 = new StringBuilder();

            stringBuilder3.AppendLine("; Object connections");
            stringBuilder3.AppendLine(";------------------------------------------------------------------");
            stringBuilder3.AppendLine("");
            stringBuilder3.AppendLine("Connections:  {");
            stringBuilder3.AppendLine("\t");
            string value  = "";
            string value2 = "";

            FBXMaterialGetter.GetAllMaterialsToString(gameObj, newPath, copyMaterials, copyTextures, materials, out value, out value2);
            FBXMeshGetter.GetMeshToString(gameObj, materials, ref stringBuilder2, ref stringBuilder3, null, 0L);
            stringBuilder2.Append(value);
            stringBuilder3.Append(value2);
            stringBuilder2.AppendLine("}");
            stringBuilder3.AppendLine("}");
            stringBuilder.AppendLine("; FBX 7.3.0 project file");
            stringBuilder.AppendLine("; Copyright (C) 1997-2010 Autodesk Inc. and/or its licensors.");
            stringBuilder.AppendLine("; All rights reserved.");
            stringBuilder.AppendLine("; ----------------------------------------------------");
            stringBuilder.AppendLine();
            stringBuilder.AppendLine("FBXHeaderExtension:  {");
            stringBuilder.AppendLine("\tFBXHeaderVersion: 1003");
            stringBuilder.AppendLine("\tFBXVersion: 7300");
            DateTime now = DateTime.Now;

            stringBuilder.AppendLine("\tCreationTimeStamp:  {");
            stringBuilder.AppendLine("\t\tVersion: 1000");
            stringBuilder.AppendLine("\t\tYear: " + now.Year);
            stringBuilder.AppendLine("\t\tMonth: " + now.Month);
            stringBuilder.AppendLine("\t\tDay: " + now.Day);
            stringBuilder.AppendLine("\t\tHour: " + now.Hour);
            stringBuilder.AppendLine("\t\tMinute: " + now.Minute);
            stringBuilder.AppendLine("\t\tSecond: " + now.Second);
            stringBuilder.AppendLine("\t\tMillisecond: " + now.Millisecond);
            stringBuilder.AppendLine("\t}");
            stringBuilder.AppendLine("\tCreator: \"" + FBXWriter.VersionInformation + "\"");
            stringBuilder.AppendLine("\tSceneInfo: \"SceneInfo::GlobalInfo\", \"UserData\" {");
            stringBuilder.AppendLine("\t\tType: \"UserData\"");
            stringBuilder.AppendLine("\t\tVersion: 100");
            stringBuilder.AppendLine("\t\tMetaData:  {");
            stringBuilder.AppendLine("\t\t\tVersion: 100");
            stringBuilder.AppendLine("\t\t\tTitle: \"\"");
            stringBuilder.AppendLine("\t\t\tSubject: \"\"");
            stringBuilder.AppendLine("\t\t\tAuthor: \"\"");
            stringBuilder.AppendLine("\t\t\tKeywords: \"\"");
            stringBuilder.AppendLine("\t\t\tRevision: \"\"");
            stringBuilder.AppendLine("\t\t\tComment: \"\"");
            stringBuilder.AppendLine("\t\t}");
            stringBuilder.AppendLine("\t\tProperties70:  {");
            string str = Application.dataPath + newPath + ".fbx";

            stringBuilder.AppendLine("\t\t\tP: \"DocumentUrl\", \"KString\", \"Url\", \"\", \"" + str + "\"");
            stringBuilder.AppendLine("\t\t\tP: \"SrcDocumentUrl\", \"KString\", \"Url\", \"\", \"" + str + "\"");
            stringBuilder.AppendLine("\t\t\tP: \"Original\", \"Compound\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"Original|ApplicationVendor\", \"KString\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"Original|ApplicationName\", \"KString\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"Original|ApplicationVersion\", \"KString\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"Original|DateTime_GMT\", \"DateTime\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"Original|FileName\", \"KString\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"LastSaved\", \"Compound\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"LastSaved|ApplicationVendor\", \"KString\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"LastSaved|ApplicationName\", \"KString\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"LastSaved|ApplicationVersion\", \"KString\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\tP: \"LastSaved|DateTime_GMT\", \"DateTime\", \"\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t}");
            stringBuilder.AppendLine("\t}");
            stringBuilder.AppendLine("}");
            stringBuilder.AppendLine("GlobalSettings:  {");
            stringBuilder.AppendLine("\tVersion: 1000");
            stringBuilder.AppendLine("\tProperties70:  {");
            stringBuilder.AppendLine("\t\tP: \"UpAxis\", \"int\", \"Integer\", \"\",1");
            stringBuilder.AppendLine("\t\tP: \"UpAxisSign\", \"int\", \"Integer\", \"\",1");
            stringBuilder.AppendLine("\t\tP: \"FrontAxis\", \"int\", \"Integer\", \"\",2");
            stringBuilder.AppendLine("\t\tP: \"FrontAxisSign\", \"int\", \"Integer\", \"\",1");
            stringBuilder.AppendLine("\t\tP: \"CoordAxis\", \"int\", \"Integer\", \"\",0");
            stringBuilder.AppendLine("\t\tP: \"CoordAxisSign\", \"int\", \"Integer\", \"\",1");
            stringBuilder.AppendLine("\t\tP: \"OriginalUpAxis\", \"int\", \"Integer\", \"\",-1");
            stringBuilder.AppendLine("\t\tP: \"OriginalUpAxisSign\", \"int\", \"Integer\", \"\",1");
            stringBuilder.AppendLine("\t\tP: \"UnitScaleFactor\", \"double\", \"Number\", \"\",100");
            stringBuilder.AppendLine("\t\tP: \"OriginalUnitScaleFactor\", \"double\", \"Number\", \"\",100");
            stringBuilder.AppendLine("\t\tP: \"AmbientColor\", \"ColorRGB\", \"Color\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\tP: \"DefaultCamera\", \"KString\", \"\", \"\", \"Producer Perspective\"");
            stringBuilder.AppendLine("\t\tP: \"TimeMode\", \"enum\", \"\", \"\",11");
            stringBuilder.AppendLine("\t\tP: \"TimeSpanStart\", \"KTime\", \"Time\", \"\",0");
            stringBuilder.AppendLine("\t\tP: \"TimeSpanStop\", \"KTime\", \"Time\", \"\",479181389250");
            stringBuilder.AppendLine("\t\tP: \"CustomFrameRate\", \"double\", \"Number\", \"\",-1");
            stringBuilder.AppendLine("\t}");
            stringBuilder.AppendLine("}");
            stringBuilder.AppendLine("; Object definitions");
            stringBuilder.AppendLine(";------------------------------------------------------------------");
            stringBuilder.AppendLine("");
            stringBuilder.AppendLine("Definitions:  {");
            stringBuilder.AppendLine("\tVersion: 100");
            stringBuilder.AppendLine("\tCount: 4");
            stringBuilder.AppendLine("\tObjectType: \"GlobalSettings\" {");
            stringBuilder.AppendLine("\t\tCount: 1");
            stringBuilder.AppendLine("\t}");
            stringBuilder.AppendLine("\tObjectType: \"Model\" {");
            stringBuilder.AppendLine("\t\tCount: 1");
            stringBuilder.AppendLine("\t\tPropertyTemplate: \"FbxNode\" {");
            stringBuilder.AppendLine("\t\t\tProperties70:  {");
            stringBuilder.AppendLine("\t\t\t\tP: \"QuaternionInterpolate\", \"enum\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationOffset\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingOffset\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationActive\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMin\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMax\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMinX\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMinY\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMinZ\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMaxX\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMaxY\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TranslationMaxZ\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationOrder\", \"enum\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationSpaceForLimitOnly\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationStiffnessX\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationStiffnessY\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationStiffnessZ\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"AxisLen\", \"double\", \"Number\", \"\",10");
            stringBuilder.AppendLine("\t\t\t\tP: \"PreRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"PostRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationActive\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationMin\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationMax\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationMinX\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationMinY\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationMinZ\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationMaxX\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationMaxY\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"RotationMaxZ\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"InheritType\", \"enum\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingActive\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMin\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMax\", \"Vector3D\", \"Vector\", \"\",1,1,1");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMinX\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMinY\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMinZ\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMaxX\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMaxY\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ScalingMaxZ\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"GeometricTranslation\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"GeometricRotation\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"GeometricScaling\", \"Vector3D\", \"Vector\", \"\",1,1,1");
            stringBuilder.AppendLine("\t\t\t\tP: \"MinDampRangeX\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MinDampRangeY\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MinDampRangeZ\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampRangeX\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampRangeY\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampRangeZ\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MinDampStrengthX\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MinDampStrengthY\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MinDampStrengthZ\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampStrengthX\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampStrengthY\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"MaxDampStrengthZ\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"PreferedAngleX\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"PreferedAngleY\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"PreferedAngleZ\", \"double\", \"Number\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"LookAtProperty\", \"object\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\t\tP: \"UpVectorProperty\", \"object\", \"\", \"\"");
            stringBuilder.AppendLine("\t\t\t\tP: \"Show\", \"bool\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"NegativePercentShapeSupport\", \"bool\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"DefaultAttributeIndex\", \"int\", \"Integer\", \"\",-1");
            stringBuilder.AppendLine("\t\t\t\tP: \"Freeze\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"LODBox\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"Lcl Translation\", \"Lcl Translation\", \"\", \"A\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"Lcl Rotation\", \"Lcl Rotation\", \"\", \"A\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"Lcl Scaling\", \"Lcl Scaling\", \"\", \"A\",1,1,1");
            stringBuilder.AppendLine("\t\t\t\tP: \"Visibility\", \"Visibility\", \"\", \"A\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"Visibility Inheritance\", \"Visibility Inheritance\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\t}");
            stringBuilder.AppendLine("\t\t}");
            stringBuilder.AppendLine("\t}");
            stringBuilder.AppendLine("\tObjectType: \"Geometry\" {");
            stringBuilder.AppendLine("\t\tCount: 1");
            stringBuilder.AppendLine("\t\tPropertyTemplate: \"FbxMesh\" {");
            stringBuilder.AppendLine("\t\t\tProperties70:  {");
            stringBuilder.AppendLine("\t\t\t\tP: \"Color\", \"ColorRGB\", \"Color\", \"\",0.8,0.8,0.8");
            stringBuilder.AppendLine("\t\t\t\tP: \"BBoxMin\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"BBoxMax\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"Primary Visibility\", \"bool\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"Casts Shadows\", \"bool\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"Receive Shadows\", \"bool\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\t}");
            stringBuilder.AppendLine("\t\t}");
            stringBuilder.AppendLine("\t}");
            stringBuilder.AppendLine("\tObjectType: \"Material\" {");
            stringBuilder.AppendLine("\t\tCount: 1");
            stringBuilder.AppendLine("\t\tPropertyTemplate: \"FbxSurfacePhong\" {");
            stringBuilder.AppendLine("\t\t\tProperties70:  {");
            stringBuilder.AppendLine("\t\t\t\tP: \"ShadingModel\", \"KString\", \"\", \"\", \"Phong\"");
            stringBuilder.AppendLine("\t\t\t\tP: \"MultiLayer\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"EmissiveColor\", \"Color\", \"\", \"A\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"EmissiveFactor\", \"Number\", \"\", \"A\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"AmbientColor\", \"Color\", \"\", \"A\",0.2,0.2,0.2");
            stringBuilder.AppendLine("\t\t\t\tP: \"AmbientFactor\", \"Number\", \"\", \"A\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"DiffuseColor\", \"Color\", \"\", \"A\",0.8,0.8,0.8");
            stringBuilder.AppendLine("\t\t\t\tP: \"DiffuseFactor\", \"Number\", \"\", \"A\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"Bump\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"NormalMap\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"BumpFactor\", \"double\", \"Number\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"TransparentColor\", \"Color\", \"\", \"A\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TransparencyFactor\", \"Number\", \"\", \"A\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"DisplacementColor\", \"ColorRGB\", \"Color\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"DisplacementFactor\", \"double\", \"Number\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"VectorDisplacementColor\", \"ColorRGB\", \"Color\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"VectorDisplacementFactor\", \"double\", \"Number\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"SpecularColor\", \"Color\", \"\", \"A\",0.2,0.2,0.2");
            stringBuilder.AppendLine("\t\t\t\tP: \"SpecularFactor\", \"Number\", \"\", \"A\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"ShininessExponent\", \"Number\", \"\", \"A\",20");
            stringBuilder.AppendLine("\t\t\t\tP: \"ReflectionColor\", \"Color\", \"\", \"A\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"ReflectionFactor\", \"Number\", \"\", \"A\",1");
            stringBuilder.AppendLine("\t\t\t}");
            stringBuilder.AppendLine("\t\t}");
            stringBuilder.AppendLine("\t}");
            stringBuilder.AppendLine("\tObjectType: \"Texture\" {");
            stringBuilder.AppendLine("\t\tCount: 2");
            stringBuilder.AppendLine("\t\tPropertyTemplate: \"FbxFileTexture\" {");
            stringBuilder.AppendLine("\t\t\tProperties70:  {");
            stringBuilder.AppendLine("\t\t\t\tP: \"TextureTypeUse\", \"enum\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"Texture alpha\", \"Number\", \"\", \"A\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"CurrentMappingType\", \"enum\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"WrapModeU\", \"enum\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"WrapModeV\", \"enum\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"UVSwap\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"PremultiplyAlpha\", \"bool\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"Translation\", \"Vector\", \"\", \"A\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"Rotation\", \"Vector\", \"\", \"A\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"Scaling\", \"Vector\", \"\", \"A\",1,1,1");
            stringBuilder.AppendLine("\t\t\t\tP: \"TextureRotationPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"TextureScalingPivot\", \"Vector3D\", \"Vector\", \"\",0,0,0");
            stringBuilder.AppendLine("\t\t\t\tP: \"CurrentTextureBlendMode\", \"enum\", \"\", \"\",1");
            stringBuilder.AppendLine("\t\t\t\tP: \"UVSet\", \"KString\", \"\", \"\", \"default\"");
            stringBuilder.AppendLine("\t\t\t\tP: \"UseMaterial\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t\tP: \"UseMipMap\", \"bool\", \"\", \"\",0");
            stringBuilder.AppendLine("\t\t\t}");
            stringBuilder.AppendLine("\t\t}");
            stringBuilder.AppendLine("\t}");
            stringBuilder.AppendLine("}");
            stringBuilder.AppendLine("");
            stringBuilder.Append(stringBuilder2.ToString());
            stringBuilder.Append(stringBuilder3.ToString());
            return(stringBuilder.ToString());
        }