【问题标题】:Clone an Object3D model from a Collada load call从 Collada 加载调用中克隆 Object3D 模型
【发布时间】:2012-09-23 10:00:23
【问题描述】:

我正在尝试克隆 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 );
    }
}

你能帮忙填空吗?

【问题讨论】:

  • 看看这个例子对你有没有帮助:mrdoob.github.com/three.js/examples/…
  • 我以前看过那个,但是没有用。看看我想出了什么答案。
  • @QtBlueWaffle 请在新帖子中向社区提问。

标签: three.js


【解决方案1】:

这最终奏效了:

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 导出的。我很想知道是否有更容易/更好的方法来做到这一点。

【讨论】:

  • 我最近也在为此苦苦挣扎。让我感到困惑的是,您必须等到几何图形真正加载后才能迭代它以克隆它。这在这里得到了处理,因为 for 循环发生在加载程序的回调内部。也许这有帮助?感谢您发布您的答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-08
  • 1970-01-01
  • 2013-02-02
  • 2014-02-21
  • 2012-08-18
  • 2012-10-19
  • 2012-02-19
相关资源
最近更新 更多