Memory leak, CSG import, THREEJS

73 views Asked by At

I was able to make this example working https://sbcode.net/threejs/engraving/.

I am now looking to engrave my Mesh previously imported from GLB file in the scene.

Below my code:

 const loader = new GLTFLoader();
    let sword
    loader.load("scene/glb/object.glb", function (gltf) {
        sword = gltf.scene;  // sword 3D object is loaded
        sword.scale.set(1, 1, 1);
        sword.position.y = 0;
        sword.position.x = 0;
        sword.position.z = 0;
    
        engravedMesh = sword.children[0]
        engravedCSG = CSG.fromMesh(engravedMesh)
   
        scene.add(sword);
        engraving()
    });

    let font
function engraving() {
    
    const loaderFont = new FontLoader()
    loaderFont.load('fonts/helvetiker_regular.typeface.json', function (f) {
        font = f
        regenerateGeometry()
    })
}
function regenerateGeometry() {
 
let newGeometry

newGeometry = new TextGeometry("AAAAAAAAAAAAAAAAAAAAAAAA", {
    font: font,
    size: 3,
    height: 3,
    curveSegments: 2,
})

newGeometry.center()
//bender.bend(newGeometry, 'y', Math.PI / 16)
newGeometry.translate(0, 0, 0)
//scene.add(newGeometry)

const textCSG = CSG.fromGeometry(newGeometry)
var engraved = engravedCSG.subtract(textCSG)

engravedMesh.geometry.dispose()
engravedMesh.geometry = CSG.toMesh(
    engraved,
    new THREE.Matrix4()
).geometry
}

When I tried to execute to execute it, my scree has frozen.

Is there something I did wrong ?

1

There are 1 answers

1
Arnaud Coutant On

Finally it works with another glb file. I guess I built a Sphere on Blender with too high definition.