javascript - MeshFaceMaterial 上的 Three.js Material.color.setHex

标签 javascript three.js html5-canvas

我的代码设置可以根据不同的条件更改某些对象的颜色。它当前使用诸如

之类的循环
for (j = 0; j < objects[i].children.length; j++) {
    objects[i].children[j].material.color.setHex(0x1A75FF);
}

在需要时通过 render() 函数设置颜色。

问题在于,有些对象是 MeshLambertMaterial,有些是 MeshFaceMaterial。上面的代码非常适合 MeshLambertMaterial,但当它尝试在具有 MeshFaceMaterial 的对象上运行时,它会返回错误Cannot read property 'setHex' of undefined

我还没有找到正确执行此操作的方法,但如果有修复,也需要将场景中的所有对象设为 MeshFaceMaterial,以便能够设置任何对象的颜色只要有一个功能,我不介意这样做。

(我不想想要做的是使用 if 语句来检查对象是否具有 LambertMaterial 或 FaceMaterial,并为循环中的每个对象运行一组不同的代码!)

最佳答案

var materials = objects[i].children[j].material.materials;
if ( materials ) {
    for ( var k=0,l=materials.length; k < l; k++ ) {
        materials[k].color.setHex( 0x1A75FF );
    }
} else {
    objects[i].children[j].material.color.setHex( 0x1A75FF );
}

关于javascript - MeshFaceMaterial 上的 Three.js Material.color.setHex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33748207/

相关文章:

javascript - 在 Three.js 中为程序性海洋制作动画

javascript - 计算 ImageData 对象的大小(以字节为单位)

angular - 如何创建响应调整大小的基于 Angular 2 Canvas 的组件?

javascript - 保持一个按钮处于事件状态

javascript - 如何使用VueJS阻止组件上的点击事件冒泡?

javascript - 如何在 Three.js 中正确实现 Cook-Torrance 着色?

javascript - three.js pov 相机环视错误

javascript - 已编辑 : Switch between viewable ares of the HTML <canvas> preferably without page load

javascript - 如何在 Javascript 中访问表内的元素?

javascript - $compile 在递归函数中不起作用