我在WebGL(使用OpenGL着色器)中編程簡單的模型加載器。我在片段着色器中實現了phong着色。但是,當我加載比簡單的猴子/立方體更大的物體,並將相機從光源中移出時,網格看起來很奇怪(別名?)。他們中的一些甚至被照亮,儘管他們應該被隱藏(黑色)。光源另一側的網格看起來很奇怪
減輕一邊是OK:
另一邊則是錯誤的:
我計算法線的每個頂點同樣的方式,所以法線應該是OK(當我打開相機對汽車的輕量化側,一切順利)。
非常感謝您的提示。
我在WebGL(使用OpenGL着色器)中編程簡單的模型加載器。我在片段着色器中實現了phong着色。但是,當我加載比簡單的猴子/立方體更大的物體,並將相機從光源中移出時,網格看起來很奇怪(別名?)。他們中的一些甚至被照亮,儘管他們應該被隱藏(黑色)。光源另一側的網格看起來很奇怪
減輕一邊是OK:
另一邊則是錯誤的:
我計算法線的每個頂點同樣的方式,所以法線應該是OK(當我打開相機對汽車的輕量化側,一切順利)。
非常感謝您的提示。
這看起來像一個單面 vs 雙面照明問題給我。如果你的網格只包含一個單獨的「圖層」面,那麼這些將具有僅指向一個方向的法線。如果使用單面照明,那麼背面,即如果光在正常指向的一側,看起來會很奇怪。
有三種方式來克服這一:
我想我發現在我的Collada解析器中的錯誤,我不尊重導出的法線,但我calc使用新的。這導致不時發生倒置法線(例如,這輛車的這個門網)。無論如何,雙面渲染也必須實現。
謝謝。
+1:首先讓我感到震驚的是「這是單面照明」。 – 2013-04-26 03:05:57
感謝響應,我增加背面正常反轉到我的片段着色器是這樣的: '如果(gl_FrontFacing == FALSE)正常正常= * VEC3(-1.0,-1.0,-1.0);' 和它(這輛車的內部看起來更好),但黑色的網格/多邊形仍然是黑色的,並且「鋸齒狀的虛線」仍然可見。是否可以輕鬆實現(或僅啓用)OpenGL ES 2.0中的別名?它可能有幫助。 – lukyer 2013-04-26 11:49:21