Skip to content

Commit 53e75fb

Browse files
Morph target export performance improvement (#1096)
- Added small performance improvements to morph targets import, reducing load time by 50%.
1 parent 0d548e0 commit 53e75fb

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

3ds Max/Max2Babylon/Exporter/BabylonExporter.Mesh.cs

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -623,30 +623,32 @@ private BabylonNode ExportMasterMesh(IIGameScene scene, IIGameNode meshNode, Bab
623623
return babylonMesh;
624624
}
625625

626-
private IEnumerable<GlobalVertex> ExtractMorphTargetVertices(BabylonAbstractMesh babylonAbstractMesh, List<GlobalVertex> vertices, IMatrix3 offsetTM, int morphIndex, IIGameNode maxMorphTarget, bool optimizeVertices, List<int> faceIndexes)
626+
private IList<GlobalVertex> ExtractMorphTargetVertices(BabylonAbstractMesh babylonAbstractMesh, List<GlobalVertex> vertices, IMatrix3 offsetTM, int morphIndex, IIGameNode maxMorphTarget, bool optimizeVertices, List<int> faceIndexes)
627627
{
628-
if (maxMorphTarget != null )
628+
if (maxMorphTarget != null)
629629
{
630-
foreach(var v in ExtractVertices(babylonAbstractMesh, maxMorphTarget, optimizeVertices, faceIndexes))
631-
{
632-
yield return v;
633-
}
634-
yield break;
630+
return ExtractVertices(babylonAbstractMesh, maxMorphTarget, optimizeVertices, faceIndexes);
635631
}
636-
// rebuild Morph Target
637-
if (exportParameters.rebuildMorphTarget)
632+
633+
var result = new List<GlobalVertex>();
634+
635+
if (!exportParameters.rebuildMorphTarget)
638636
{
639-
var points = ExtractMorphTargetPoints(babylonAbstractMesh, morphIndex, offsetTM).ToList();
640-
for (int i = 0; i != vertices.Count; i++)
637+
return result;
638+
}
639+
640+
var points = ExtractMorphTargetPoints(babylonAbstractMesh, morphIndex, offsetTM).ToList();
641+
for (int i = 0; i != vertices.Count; i++)
642+
{
643+
int bi = vertices[i].BaseIndex;
644+
result.Add(new GlobalVertex()
641645
{
642-
int bi = vertices[i].BaseIndex;
643-
yield return new GlobalVertex()
644-
{
645-
BaseIndex = bi,
646-
Position = points[bi]
647-
};
648-
}
646+
BaseIndex = bi,
647+
Position = points[bi]
648+
});
649649
}
650+
651+
return result;
650652
}
651653

652654
private IEnumerable<IPoint3> ExtractMorphTargetPoints(BabylonAbstractMesh babylonAbstractMesh, int morphIndex, IMatrix3 offsetTM)

0 commit comments

Comments
 (0)