Three.js在10个随机对象上生成颜色

时间:2016-03-24 14:26:43

标签: javascript three.js

我正在尝试创建一个可以随机选择10个对象来改变main颜色的函数,但我不知道如何将它“连接”到数组或向量中。我已经尝试将material放入color(selector)这样的数组中,但是,对象的位置是未定义的,根本不会对任何对象进行着色。

meshArrayX

1 个答案:

答案 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个随机框并应用颜色。

我希望它有用