【发布时间】:2016-02-16 03:54:28
【问题描述】:
我目前正在尝试设置一个系统,通过悬停/单击来选择场景中的对象。场景包含对象组,它们是这样创建的(我还是 three.js 的初学者,所以这段代码可能远非最佳方式):
var obj = new THREE.Object3D();
// Put all segments of the model together into a single object
for (c = 0; c < seg.length; c++) {
obj.add(seg[c]);
}
// Add object to object array and update the screen
objects[objects.length] = obj;
scene.add(objects[objects.length-1]);
问题是,当我想在对象组中的网格物体已经在场景中之后更改它们的颜色时,会出现错误(color.setHex 未定义)。 我尝试用来设置颜色的代码如下所示:
for (j = 0; j < intersects[0].object.children.length; j++) {
intersects[0].object.children[j].color.setHex(0x1A75FF);
}
【问题讨论】:
-
不知道你可能想要的其余代码
intersects[0].object.children[j].material.color.setHex(0x1A75FF); -
正如 gaitat 所说,您可能想要更改材质的颜色,并非所有材质都有颜色(例如 MeshBasicMaterial 有),这将更改着色器的统一值,因此使用相同材质的所有对象都会更改颜色,如果您只想更改对象一部分的颜色,则该颜色保留在其几何图形内(请参阅 BufferGeometries 的属性或几何图形的面)
标签: javascript three.js html5-canvas