Dan Friedman
Dan Friedman

Reputation: 5228

Clone an Object3D model from a Collada load call

I'm trying to clone an ThreeJS Object3D model. I've found various code here and on GitHub and nothing is working for me. The code below comes in part from How to clone an object3d in Three.js?

var loader = new THREE.ColladaLoader();
loader.load('../Model.dae', function (result) {
    var loadedMesh = // No sure where this comes from

    // Create X of these
    for ( var i = 0; i < 10; i ++ ) {
        var mesh = new THREE.Mesh( loadedMesh.geometry, loadedMesh.material );
        mesh.position.set( i * 100, 0, 0 );
        scene.add( mesh );
    }
}

Can you help be fill in the blanks?

Upvotes: 0

Views: 3251

Answers (1)

Dan Friedman
Dan Friedman

Reputation: 5228

This ended up working:

var loader = new THREE.ColladaLoader();
loader.load('../Turn.dae', function colladaReady(result) {
    var piece = result.scene.children[0];
    for (var i = 0; i < 10; i++) {
        var newPiece = new THREE.Object3D();

        for (var j = 0; j < piece.children.length; j++) {
            newPiece.add(new THREE.Mesh(piece.children[j].geometry, piece.children[j].material));
        }

        newPiece.position.set(i * 100, 0, 0);
        newPiece.scale.set(30, 30, 30);
        scene.add(newPiece);
    }

    renderer.render(scene, camera);
});

So instead of getting a single mesh, I got a group of meshes. I'm new to this, so I don't know why this is different from what every other answer I've seen. The dae file was exported directly from Sketchup. I'd be interested in knowing if there is a easier/better was to do this.

Upvotes: 2

Related Questions