2016-11-01 33 views
0

我想爲我的課程創建一個場景,其中一組對象(模型)必須被克隆並顯示在隨機位置。我爲此創建了一個函數,但不幸的是,它只將同一個對象從一個地方轉移到另一個地方。我需要添加更多的對象,而不是移動同一個對象,但很遺憾,我找不到任何有關它的信息。我試圖克隆,但是我失敗了:/之後,我將不得不逐一刪除這些模型,所以如果有人可以就此提出建議,我將不勝感激。在ThreeJS中克隆一組對象的函數?

這裏是我的代碼:

this.addmodel = function() { 
    scene.add(model); 
    model.name = "model-" + scene.children.length; 
    model.position.x= -20 + Math.round((Math.random() * 40)); 
    model.position.y= Math.round((Math.random() * 5)); 
    model.position.z= -17.5 + Math.round((Math.random() * 35)); 
    this.numOfObjects = scene.children.length; 
} 
+0

的可能的複製[如何克隆Three.js中的object3d?](http://stackoverflow.com/questions/11919694/how-to-clone-an-object3d-in-three-js) – Keno

回答

1

樣本對象:

function Model(){ 
    this.mesh = new THREE.Mesh(new THREE.BoxGeometry(1, 1, 1),new THREE.MeshBasicMaterial({color:"red"})); 
    this.addModel = function(){ 
    var newModel = this.mesh.clone(); 
    newModel.name = "model-" + scene.children.length; 
    newModel.position.x= -20 + Math.round((Math.random() * 40)); 
    newModel.position.y= Math.round((Math.random() * 5)); 
    newModel.position.z= -17.5 + Math.round((Math.random() * 35)); 
    scene.add(newModel); 
    } 
}; 

然後創建一個實例,並調用它的方法:

var cubeModel = new Model(); 
    for(var i = 0; i < 10; i++){ 
    cubeModel.addModel(); 
    } 

jsfiddle例如

+0

我想我沒有讓自己清楚。我有一組對象分組到一個var model = new THREE.Object3D();我需要用一個函數(一個人點擊一個按鈕,一個新的「模型」出現在屏幕上的隨機位置)一個接一個地重新創建該組對象(「模型」) – Sicili

+0

我已經更新了jsfiddle 。克隆分組到THREE.Object3D()中的一組對象也適用。 – prisoner849