Skip to content

Loading object as Geometry instead of BufferGeometry in threejs

I’m trying to load an .stl file into three.js. Everything works fine and I get the model as BufferGeometry using this code:

    var loader = new THREE.STLLoader();
    loader.addEventListener( 'load', function ( event )
    {

        var material = new THREE.MeshLambertMaterial({
            color: 0x888888,
            side: THREE.DoubleSide
        });

        var bufferGeometry = event.content;
        var mesh = new THREE.Mesh(geometry, material);
        scene.add( mesh );
    });
    loader.load( 'model.stl' );

To make it easier to further manipulate the model I would like to have the geometry as regular THREE.Geometry instead of THREE.BufferGeometry. Is it possible to either load the .stl in a way so I receive it as a THREE.Geometry or is it possible to convert from THREE.BufferGeometry to THREE.Geometry? Or is this possible using a .obj file or sth else?

Answer

This answer only applies to versions of three.js prior to r.125.

STLLoader now returns a BufferGeometry object.

You can convert that to a THREE.Geometry like so:

var geometry = new THREE.Geometry().fromBufferGeometry( bufferGeometry );

three.js r.124