Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 组中所有网格上的Three.js color.setHex_Javascript_Three.js_Html5 Canvas - Fatal编程技术网

Javascript 组中所有网格上的Three.js color.setHex

Javascript 组中所有网格上的Three.js color.setHex,javascript,three.js,html5-canvas,Javascript,Three.js,Html5 Canvas,我目前正在尝试设置一个系统,通过悬停/单击来选择场景中的对象。场景包含对象组,它们是这样创建的(我仍然是three.js的初学者,所以这段代码可能远不是实现这一点的最佳方式): var obj=new THREE.Object3D(); //将模型的所有分段放在一个对象中 对于(c=0;c

我目前正在尝试设置一个系统,通过悬停/单击来选择场景中的对象。场景包含对象组,它们是这样创建的(我仍然是three.js的初学者,所以这段代码可能远不是实现这一点的最佳方式):

var obj=new THREE.Object3D();
//将模型的所有分段放在一个对象中
对于(c=0;c
问题是,当我想在对象组中的网格已经在场景中之后更改其颜色时,会出现错误(color.setHex未定义)。 我试图用来设置颜色的代码如下所示:

for (j = 0; j < intersects[0].object.children.length; j++) {
    intersects[0].object.children[j].color.setHex(0x1A75FF);
}
for(j=0;j
多亏了gaitat,我才明白这一点:


在不知道其他代码的情况下,您可能希望与[0]相交。对象。子对象[j]。材质。颜色。setHex(0x1A75FF)


现在我只需要弄清楚如何使光线投射器与对象组一起工作,因为这似乎是导致现在找不到对象组并将其放置在相交数组中的原因。

在不知道可能需要的其余代码的情况下,
intersects[0]。object.children[j]。material.color.setHex(0x1A75FF)正如gaitat所说,您可能想要更改材质的颜色,但并非所有材质都有颜色(例如MeshBasicMaterial有颜色),这将更改着色器的统一值,因此使用相同材质的所有对象都将更改颜色,如果您只想更改对象部分的颜色,则该颜色将保留在其几何体中(请参见缓冲几何体的属性或几何体的面)
for (j = 0; j < intersects[0].object.children.length; j++) {
    intersects[0].object.children[j].color.setHex(0x1A75FF);
}