diff --git a/Runtime/Scripts/ModelBaker/MeshCombiner.cs b/Runtime/Scripts/ModelBaker/MeshCombiner.cs index f0d3c34..9ebcd44 100644 --- a/Runtime/Scripts/ModelBaker/MeshCombiner.cs +++ b/Runtime/Scripts/ModelBaker/MeshCombiner.cs @@ -211,6 +211,20 @@ namespace TAO.VertexAnimation // Actually combine and recalculate mesh. Mesh skinnedMesh = new Mesh(); + + // Large mesh support. + int vertexCount = 0; + foreach (var ci in combineInstances) + { + vertexCount += ci.mesh.vertexCount; + } + + if (vertexCount > 65535) + { + skinnedMesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; + } + + // Combine meshes. skinnedMesh.CombineMeshes(combineInstances.ToArray(), true, true); skinnedMesh.RecalculateBounds(); diff --git a/Runtime/Scripts/ModelBaker/MeshSimplifier.cs b/Runtime/Scripts/ModelBaker/MeshSimplifier.cs index d64b400..e1ab8cb 100644 --- a/Runtime/Scripts/ModelBaker/MeshSimplifier.cs +++ b/Runtime/Scripts/ModelBaker/MeshSimplifier.cs @@ -261,7 +261,13 @@ namespace TAO.VertexAnimation tris.Add(t * 3 + v - skipped); } } - + + // Large mesh support. + if (vertices.Count > 65535) + { + mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; + } + mesh.vertices = vertices.ToArray(); mesh.normals = normals.ToArray();