diff --git a/packages/editor/src/lib/glb-export.ts b/packages/editor/src/lib/glb-export.ts index bc80a2fb5..7f614993c 100644 --- a/packages/editor/src/lib/glb-export.ts +++ b/packages/editor/src/lib/glb-export.ts @@ -156,6 +156,11 @@ function pairClones( // plain transform node instead of a primitive. const EMPTY_GEOMETRY = new THREE.BufferGeometry() +// Hidden placeholder for a neutralised renderable that has no material: a valid +// material keeps GLTFExporter from crashing on `material.isShaderMaterial`, while +// EMPTY_GEOMETRY makes it emit a transform node instead of a primitive. +const PLACEHOLDER_MATERIAL = new THREE.MeshBasicMaterial({ visible: false }) + /** * Strip everything that must not bake into the model: * - Editor overlays on non-scene layers (gizmos, selection handles, ground @@ -182,6 +187,25 @@ function pruneNonRenderableMeshes(root: THREE.Object3D, identityNodes: Set