public static void Export() { var p = EditorPrefs.GetString("projectPath"); if (Directory.Exists(p)) { Terrn.ExportTerrn(); Terrn.ExportTextures(); Tobj.Export(); Otc.ExportMain(); Otc.ExportPage(); var root = GameObject.Find("root"); if (root != null) { var objectExported = new List <string>(); var meshesExported = new List <string>(); foreach (Transform child in root.transform) { if (!objectExported.Contains(child.name) && child.tag != "DefaultContent") { objectExported.Add(child.name); Odef.Export(child.gameObject); /* * var m = child.GetComponentsInChildren<MeshFilter>(); * var mr = child.GetComponentsInChildren<MeshRenderer>(); * * * if (m.Length > 1 && !meshesExported.Contains(m[0].sharedMesh.name)) * { * var combinedMesh = new Mesh(); * var combineIns = new List<CombineInstance>(); * var materials = new List<Material>(); * for (var i = 0; i < m.Length; i++) * { * print("combing " + m[i].sharedMesh.name); * combineIns.Add(new CombineInstance * { * mesh = m[i].sharedMesh, * transform = m[i].transform.worldToLocalMatrix * * }); * materials.AddRange(mr[i].sharedMaterials); * } * combinedMesh.name = m[0].sharedMesh.name; * materials = materials.Distinct().ToList(); * combinedMesh.CombineMeshes(combineIns.ToArray(), false); * Meshes.Export(combinedMesh, materials.ToArray()); * Materials.Export(materials.ToArray()); * meshesExported.Add(combinedMesh.name); * } * else if (m.Length == 1 && !meshesExported.Contains(m[0].sharedMesh.name)) * { * Meshes.Export(m[0].sharedMesh, mr[0].sharedMaterials); * Materials.Export(mr[0].sharedMaterials); * meshesExported.Add(m[0].sharedMesh.name); * } */ } } var m = root.GetComponentsInChildren <MeshFilter>(); var mr = root.GetComponentsInChildren <MeshRenderer>(); if (m.Length > 0) { for (var i = 0; i < m.Length; i++) { if (!meshesExported.Contains(m[i].sharedMesh.name) && m[i].gameObject.tag != "DefaultContent") { Meshes.Export(m[i].sharedMesh, mr[i].sharedMaterials); Materials.Export(mr[i].sharedMaterials); meshesExported.Add(m[i].sharedMesh.name); } } } } } }
public void testmeshexp() { Meshes.Export(GetComponent <MeshFilter>().sharedMesh, GetComponent <MeshRenderer>().sharedMaterials); }
public IndexedResource <Transform> ForceExport(Transform trans) { var go = trans.gameObject; IndexedResource <Mesh> meshResource = null; int?skinIndex = null; var mr = go.GetComponent <MeshRenderer>(); var smr = go.GetComponent <SkinnedMeshRenderer>(); if (mr != null) { var meshFilter = mr.gameObject.GetComponent <MeshFilter>(); var sharedMesh = meshFilter.sharedMesh; meshResource = Meshes.Export(mr, sharedMesh); } else if (smr != null) { var sharedMesh = smr.sharedMesh; meshResource = Meshes.Export(smr, sharedMesh); if (smr.bones.Length > 0) { skinIndex = ExportSkin(smr, sharedMesh).Index; } } var t = CoordUtils.ConvertSpace(go.transform.localPosition); var r = CoordUtils.ConvertSpace(go.transform.localRotation); var s = go.transform.localScale; var gltfNode = new Types.Node { Name = go.name, Mesh = meshResource != null ? (int?)meshResource.Index : null, Skin = skinIndex, Matrix = null, Translation = new float[] { t.x, t.y, t.z }, Rotation = new float[] { r.x, r.y, r.z, r.w }, Scale = new float[] { s.x, s.y, s.z }, }; var nodesIndices = new List <int>(); for (int i = 0; i < go.transform.childCount; ++i) { var c = go.transform.GetChild(i); var nodeResource = Export(c.gameObject); nodesIndices.Add(nodeResource.Index); } if (nodesIndices.Count > 0) { gltfNode.Children = nodesIndices.ToArray(); } foreach (var h in Hooks) { h.PostHook(this, trans, gltfNode); } return(new IndexedResource <Transform> { Index = Types.GltfExtensions.AddNode(Gltf, gltfNode), Value = trans, }); }