我在WebGL中编程(使用OpenGL着色器)简单的模型加载器。我在片段着色器中实现了phong着色。然而,当我加载比简单的猴子/立方体更大的对象并将相机从光源中转出时,网格看起来很奇怪(别名?)。虽然它们应该被隐藏(黑色),但它们中的一些甚至会变亮。
减轻的一面是好的:
另一方面错了:
我以相同的方式计算每个顶点的法线,所以法线应该没问题(当我在汽车的照亮侧转动相机时,一切正常)。
非常感谢您的提示。
答案 0 :(得分:2)
这看起来像单面 vs 双面照明问题。如果你的网格只包含一个面“单层”,那么它们的法线只会指向一个方向。如果使用单面照明,那么背面,即如果光线位于法线指向的一侧,则看起来很奇怪。
有三种方法可以解决这个问题:
答案 1 :(得分:0)
我想我在Collada Parser中发现了一些错误,我不尊重导出的法线,但我正在计算新的法线。这会不时导致倒转法线(例如,这辆车的这种门网)。无论如何还必须实现双面渲染。
谢谢。