【问题标题】:Three.js material.color.setHex on a MeshFaceMaterialMeshFaceMaterial 上的 Three.js material.color.setHex
【发布时间】:2016-02-18 07:24:24
【问题描述】:

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

之类的循环
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 并为循环中的每个对象运行一组不同的代码!)

【问题讨论】:

    标签: javascript three.js html5-canvas


    【解决方案1】:
    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 );
    }
    

    【讨论】:

      猜你喜欢
      • 2015-05-21
      • 1970-01-01
      • 2015-10-15
      • 1970-01-01
      • 2014-02-16
      • 2014-10-25
      • 2014-12-26
      • 1970-01-01
      • 2023-03-29
      相关资源
      最近更新 更多