Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算Three.js中自定义几何体的灯光_Javascript_Three.js - Fatal编程技术网

Javascript 计算Three.js中自定义几何体的灯光

Javascript 计算Three.js中自定义几何体的灯光,javascript,three.js,Javascript,Three.js,我创建了一个自定义几何体,并使用geometry.computeFaceNormals()获得正确的照明。到目前为止还不错 当我为几何体设置动画时,问题就出现了。在动画循环中,我再次调用了geometry.computeFaceNormals(),但面照明没有改变 下面是一个示例:您正在更新几何体的顶点,因此通常也必须更新法线才能正确着色 但是,由于需要平面着色,因此还有另一种解决方案 MeshPhongMaterial使用OES_标准_衍生工具扩展生成平面着色。这意味着当顶点更改时,不必指定或

我创建了一个自定义几何体,并使用
geometry.computeFaceNormals()
获得正确的照明。到目前为止还不错

当我为几何体设置动画时,问题就出现了。在动画循环中,我再次调用了
geometry.computeFaceNormals()
,但面照明没有改变


下面是一个示例:

您正在更新几何体的顶点,因此通常也必须更新法线才能正确着色

但是,由于需要平面着色,因此还有另一种解决方案

MeshPhongMaterial
使用OES_标准_衍生工具扩展生成平面着色。这意味着当顶点更改时,不必指定或更新几何体法线

您所要做的就是使用以下模式,如果支持扩展,平面着色将“正常工作”

var material = new THREE.MeshPhongMaterial( {
    color: 0xFFFFFF,
    shading: THREE.FlatShading
} );

three.js r.80

您想要平面明暗处理吗?还是平滑着色?非常感谢@WestLangley!我在找平面阴影。请随意详细阐述您的评论,并将其作为答案,以便我可以将其标记为已回答。