THREE.js - 颜色在更新顶点时搞砸了

时间:2014-11-25 05:00:51

标签: three.js

我是Three.js的新手,因此我觉得我错过了成功谷歌自己摆脱这个烂摊子所需的术语。

我有一个从数组数组生成的网格物体。它在加载时看起来很好,但随后我将THREE.Geometry对象的顶点和面设置为具有相同尺寸但位置不同的新内容。

据我所见,那些不起作用的事情:

  • verticesNeedUpdate
  • colorsNeedUpdate
  • uvsNeedUpdate

以下是之前和之后的屏幕截图:

enter image description here

enter image description here

请不要羞辱我那肮脏的金字塔。提前谢谢!

2 个答案:

答案 0 :(得分:0)

我也是初学者...当我不得不更新我的场景时(添加灯光以后它不同......)我用过:

    function updateMaterials(scene) {
        scene.traverse(function (node) {
            if (node.material) {
                node.material.needsUpdate = true;
                if (node.material instanceof THREE.MeshFaceMaterial) {
                    for (var i = 0; i < node.material.materials.length; i++) {
                        node.material.materials[i].needsUpdate = true;
                    }
                }
            }
        });
    }

这可能正是你设置你的&#34; NeedUpdate&#34; ?

答案 1 :(得分:0)

好的,在使用Chrome开发工具浏览每个可能的变量和功能后,我找到了它。

解决方案是THREE.Geometry()需要在每次顶点更新后设置以下标志:my_geometry_object.normalsNeedUpdate = true;