From d112c25d0f9651cbc4903e7d35b0edceb9506bb6 Mon Sep 17 00:00:00 2001 From: rgerd Date: Sun, 30 Oct 2022 21:38:51 -0700 Subject: [PATCH] Reduce memory usage in bakeTransformIntoVertices --- packages/dev/core/src/Meshes/mesh.ts | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/dev/core/src/Meshes/mesh.ts b/packages/dev/core/src/Meshes/mesh.ts index 2c759f0463e..88d25b2ef7d 100644 --- a/packages/dev/core/src/Meshes/mesh.ts +++ b/packages/dev/core/src/Meshes/mesh.ts @@ -2657,22 +2657,23 @@ export class Mesh extends AbstractMesh implements IGetSetVerticesData { let data = this.getVerticesData(VertexBuffer.PositionKind); - let temp = new Array(); + const temp = Vector3.Zero(); let index: number; for (index = 0; index < data.length; index += 3) { - Vector3.TransformCoordinates(Vector3.FromArray(data, index), transform).toArray(temp, index); + Vector3.TransformCoordinatesFromFloatsToRef(data[index], data[index + 1], data[index + 2], transform, temp).toArray(data, index); } - this.setVerticesData(VertexBuffer.PositionKind, temp, (this.getVertexBuffer(VertexBuffer.PositionKind)).isUpdatable()); + this.setVerticesData(VertexBuffer.PositionKind, data, (this.getVertexBuffer(VertexBuffer.PositionKind)).isUpdatable()); // Normals if (this.isVerticesDataPresent(VertexBuffer.NormalKind)) { data = this.getVerticesData(VertexBuffer.NormalKind); - temp = []; for (index = 0; index < data.length; index += 3) { - Vector3.TransformNormal(Vector3.FromArray(data, index), transform).normalize().toArray(temp, index); + Vector3.TransformNormalFromFloatsToRef(data[index], data[index + 1], data[index + 2], transform, temp) + .normalize() + .toArray(data, index); } - this.setVerticesData(VertexBuffer.NormalKind, temp, (this.getVertexBuffer(VertexBuffer.NormalKind)).isUpdatable()); + this.setVerticesData(VertexBuffer.NormalKind, data, (this.getVertexBuffer(VertexBuffer.NormalKind)).isUpdatable()); } // flip faces?