从Collada加载调用克隆Object3D模型

时间:2012-09-22 22:43:18

标签: three.js

我正在尝试克隆ThreeJS Object3D模型。我在这里和GitHub上找到了各种代码,没有什么对我有用。以下代码部分来自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 );
    }
}

你能帮忙填补空白吗?

1 个答案:

答案 0 :(得分:2)

这最终起作用了:

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);
});

因此,我没有获得单个网格,而是获得了一组网格。我是新手,所以我不知道为什么这与我见过的其他答案有所不同。 dae文件直接从Sketchup导出。我有兴趣知道是否有更容易/更好的做法。