【问题标题】:Three.js color.setHex on all meshes in a groupThree.js color.setHex 在组中的所有网格上
【发布时间】: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


【解决方案1】:

感谢 gaitat,我已经弄明白了:

不知道你可能想要的其余代码 intersects[0].object.children[j].material.color.setHex(0x1A75FF);

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

【讨论】:

    猜你喜欢
    • 2013-12-31
    • 2012-06-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-23
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多