diff --git a/Assets/VRM10/Runtime/IO/Model/MeshImporter.cs b/Assets/VRM10/Runtime/IO/Model/MeshImporter.cs index 94a5dc990..3e0c382e2 100644 --- a/Assets/VRM10/Runtime/IO/Model/MeshImporter.cs +++ b/Assets/VRM10/Runtime/IO/Model/MeshImporter.cs @@ -16,6 +16,10 @@ namespace UniVRM10 { // submesh 方式 var mesh = new UnityEngine.Mesh(); + if (src.IndexBuffer.Count > UInt16.MaxValue) + { + mesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; + } mesh.vertices = src.VertexBuffer.Positions.GetSpan().ToArray(); mesh.normals = src.VertexBuffer.Normals?.GetSpan().ToArray(); diff --git a/Assets/VRM10/Runtime/IO/Model/MeshImporterDivided.cs b/Assets/VRM10/Runtime/IO/Model/MeshImporterDivided.cs index 4e9bd8b36..b2b108139 100644 --- a/Assets/VRM10/Runtime/IO/Model/MeshImporterDivided.cs +++ b/Assets/VRM10/Runtime/IO/Model/MeshImporterDivided.cs @@ -10,6 +10,10 @@ namespace UniVRM10 public static UnityEngine.Mesh LoadDivided(VrmLib.MeshGroup src) { var dst = new UnityEngine.Mesh(); + if (src.Meshes.Sum(x => x.IndexBuffer.Count) > ushort.MaxValue) + { + dst.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; + } // // vertices