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