Skip to content

Commit

Permalink
fix: meshes without submeshes and multiple materials behave the same …
Browse files Browse the repository at this point in the history
…as in Unity now (all materials are exported and result in multiple drawcalls)
  • Loading branch information
hybridherbst committed Oct 11, 2023
1 parent 3de4b0f commit 30743f0
Showing 1 changed file with 9 additions and 4 deletions.
13 changes: 9 additions & 4 deletions Runtime/Scripts/SceneExporter/ExporterMeshes.cs
Original file line number Diff line number Diff line change
Expand Up @@ -231,7 +231,9 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh)
Mesh meshObj = primKey.Mesh;
Material[] materialsObj = primKey.Materials;

var prims = new MeshPrimitive[meshObj.subMeshCount];
var maxOfSubMeshesAndMaterials = Math.Max(meshObj.subMeshCount, materialsObj.Length);
var prims = new MeshPrimitive[maxOfSubMeshesAndMaterials];

List<MeshPrimitive> nonEmptyPrims = null;
var vertices = meshObj.vertices;
if (vertices.Length < 1)
Expand Down Expand Up @@ -284,9 +286,11 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh)
var accessors = _meshToPrims[meshObj];

// walk submeshes and export the ones with non-null meshes
for (int submesh = 0; submesh < meshObj.subMeshCount; submesh++)
for (int id = 0; id < maxOfSubMeshesAndMaterials; id++)
{
var mat = materialsObj[submesh % materialsObj.Length];
var mat = materialsObj[id % materialsObj.Length];
var submesh = id % meshObj.subMeshCount;

if (!mat) continue;
if (meshObj.GetIndexCount(submesh) <= 0) continue;

Expand Down Expand Up @@ -324,10 +328,11 @@ private MeshPrimitive[] ExportPrimitive(UniquePrimitive primKey, GLTFMesh mesh)
}

var submeshPrimitive = accessors.subMeshPrimitives[submesh];
prims[submesh] = new MeshPrimitive(submeshPrimitive, _root)
prims[id] = new MeshPrimitive(submeshPrimitive, _root)
{
Material = ExportMaterial(mat),
};
// this will contain only the last one
accessors.subMeshPrimitives[submesh] = prims[submesh];
}

Expand Down

0 comments on commit 30743f0

Please sign in to comment.