在ThreeJS中克隆一组对象的函数?

时间:2016-11-01 22:45:50

标签: javascript object three.js

我正在尝试为我的班级创建一个场景,其中必须克隆一组对象(模型)并以随机位置显示。我为此创建了一个函数,但不幸的是,它只将同一个对象从一个地方传输到另一个地方。我需要添加更多的对象而不是移动相同的对象,但遗憾的是我找不到任何有关它的信息。我试图克隆,但我失败了:/稍后,我将不得不逐个删除这些模型,所以如果有人也可以给出建议,我将不胜感激。

这是我的代码:

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

2 个答案:

答案 0 :(得分: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示例

答案 1 :(得分:0)

实际上,我将代码用于新的THREE.Object3D();。现在我可以复制我制作的图片帧,但想知道如何访问组属性。 .... position.x等...