2012-09-22 59 views
0

我試圖克隆ThreeJS Object3D模型。我在這裏和GitHub上發現了各種代碼,而且沒有任何代碼適用於我。下面的代碼部分來自How to clone an object3d in Three.js?從Collada加載調用克隆Object3D模型

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

你能幫是填補空白?

+0

看看這個例子是否可以幫助你:http://mrdoob.github.com/three.js/examples/webgl_geometry_large_mesh.html – WestLangley

+0

我之前曾看過那篇文章,但沒有奏效。看看我提出的答案。 –

+0

@QtBlueWaffle請在社區中發佈新帖子。 – WestLangley

回答

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中導出。我有興趣知道是否有更容易/更好的做法。

+0

我最近也在苦苦掙扎。讓我感到沮喪的是,您必須等到幾何圖形真正加載後才能對其進行迭代以克隆它。這是因爲for循環發生在加載程序的回調中。也許這有幫助?感謝您發佈您的答案! –