diff --git a/src/assets/model-instance-rendering.ts b/src/assets/model-instance-rendering.ts index b8efe110..1b003cc3 100644 --- a/src/assets/model-instance-rendering.ts +++ b/src/assets/model-instance-rendering.ts @@ -88,11 +88,17 @@ function applyWireframeMaterialPresentation(group: Group) { } if (Array.isArray(maybeMesh.material)) { - maybeMesh.material = maybeMesh.material.map((material) => createWireframeMaterial(material)); + const originalMaterials = maybeMesh.material; + maybeMesh.material = originalMaterials.map((material) => createWireframeMaterial(material)); + for (const material of originalMaterials) { + material.dispose(); + } return; } - maybeMesh.material = createWireframeMaterial(maybeMesh.material); + const originalMaterial = maybeMesh.material; + maybeMesh.material = createWireframeMaterial(originalMaterial); + originalMaterial.dispose(); }); } diff --git a/src/viewport-three/viewport-host.ts b/src/viewport-three/viewport-host.ts index 2de1d3bf..8bc4a090 100644 --- a/src/viewport-three/viewport-host.ts +++ b/src/viewport-three/viewport-host.ts @@ -719,11 +719,17 @@ export class ViewportHost { } if (Array.isArray(maybeMesh.material)) { - maybeMesh.material = maybeMesh.material.map((material) => this.createWireframeDisplayMaterial(material)); + const originalMaterials = maybeMesh.material; + maybeMesh.material = originalMaterials.map((material) => this.createWireframeDisplayMaterial(material)); + for (const material of originalMaterials) { + material.dispose(); + } return; } - maybeMesh.material = this.createWireframeDisplayMaterial(maybeMesh.material); + const originalMaterial = maybeMesh.material; + maybeMesh.material = this.createWireframeDisplayMaterial(originalMaterial); + originalMaterial.dispose(); }); }