我正在尝试创建一个可以随机选择10个对象来改变main
颜色的函数,但我不知道如何将它“连接”到数组或向量中。我已经尝试将material
放入color(selector)
这样的数组中,但是,对象的位置是未定义的,根本不会对任何对象进行着色。
meshArrayX
答案 0 :(得分:2)
我不确定我理解你的要求,但我会尽力帮助你。
我认为你想创建一个27盒(3x3x3)的数组,但我不理解你的代码...,你使用全局变量网格,但只在z循环中添加到场景。
此操作的代码是:
var BoxGeometry = new THREE.BoxGeometry(5, 5, 5);
var meshArray = [];
for (var x=0; x<3; x++) {
for(var y=0; y<3; y++){
for(var z=0; z<3; z++){
var mesh = new THREE.Mesh(BoxGeometry, material.clone());
meshArray.push(mesh);
mesh.position.x = 16*x;
mesh.position.y = 16*y;
mesh.position.z = 16*z;
scene.add(mesh);
console.log(meshArray.length, mesh.position);
}
}
}
注意&#34; material.clone()&#34;必须为每个网格创建新的材质实例。
你的色彩功能可以是这样的:
function color(selector){
for(var v=0; v<10; v++){
var pos= Math.floor((Math.random() * selector.length));
selector[pos].material.color.setHex( 0x0000ff );
}
}
呼叫:
color(meshArray);
现在,当您调用颜色函数时,从数组中选择10个随机框并应用颜色。
我希望它有用