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:ExtrudeGeometry:为正面和背面设置不同材质时出现问题_Javascript_Three.js - Fatal编程技术网

Javascript Three.js:ExtrudeGeometry:为正面和背面设置不同材质时出现问题

Javascript Three.js:ExtrudeGeometry:为正面和背面设置不同材质时出现问题,javascript,three.js,Javascript,Three.js,我正在创建一个六边形的挤出计量,并尝试为正面和背面设置不同的材质,如中所述 现在的问题是,这种方法(在面上迭代并查找那些正常的面。z==1)不能正确地用于挤出计量学。数量=0.05。值0.1可以正常工作 是否有另一种方法为正面和背面设置不同的材质,还是我做得不对 谢谢你的帮助 问题是由于四舍五入造成的。而是这样做 if ( face.normal.z < - 0.99999 ) { // instead of == - 1 face.materialIndex = 2; }

我正在创建一个六边形的挤出计量,并尝试为正面和背面设置不同的材质,如中所述

现在的问题是,这种方法(在面上迭代并查找那些
正常的面。z==1
)不能正确地用于
挤出计量学。数量=0.05
。值
0.1
可以正常工作

是否有另一种方法为正面和背面设置不同的材质,还是我做得不对


谢谢你的帮助

问题是由于四舍五入造成的。而是这样做

if ( face.normal.z < - 0.99999 ) { // instead of == - 1

    face.materialIndex = 2;

}
if(face.normal.z<-0.99999){//而不是==-1
face.materialIndex=2;
}
此外,背面法线在理论上是(0,0,-1)

更新小提琴:


three.js r.84

提示:
环境光
不应该像你在小提琴上设置的那样亮。将“强度”设置为0.2,然后向场景添加一个
方向光
,或向摄影机添加一个
点光
。或者只使用不响应灯光的
MeshBasicMaterial
。谢谢@WestLangley的提示。在我真正的应用程序中,我的abientLight为0.1,directionalLight为0.5,pointLight为0.8,但我真的不是闪电方面的专家。^^可以如此逻辑和简单。非常感谢。
if ( face.normal.z < - 0.99999 ) { // instead of == - 1

    face.materialIndex = 2;

}