我正在創建一個HTML5畫布3D渲染器,並且我會說我沒有SO的幫助已經變得相當遠了,但我遇到了各種各樣的困難。我正試圖在一些法線計算的幫助下實施背面剔除。另外,我將它標記爲WebGL,因爲這是一個足夠普遍的問題,它可以適用於我的用例和3D加速的用例。使用曲面法線進行正視3D背面剔除
無論如何,當我旋轉立方體時,我發現錯誤的面孔被隱藏起來。例如:
我使用的一般程序:
創建,通過該變換的變換矩陣立方體的頂點
對於每個面和每個f上的每個點ace,我將它們轉換爲vec3s,並將它們與步驟1中製作的矩陣相乘。
然後,我使用Newell的方法獲取臉部的曲面法線,然後從該法線獲得點積, up vec3,例如[-1,1,1],因爲我想不出有什麼價值。我見過一些人使用相機的位置,但是...
跳過使用相機矩陣的常用步驟,我從結果向量中拉出x和y值以發送到我的行並面對渲染器,但只有當它們的點積大於0時,我纔會意識到這真的是我所拉動的那些東西。
我想知道兩件事;如果我在第3步中的過程是正確的(最可能不是),並且如果我在臉上繪製的點的順序不正確(很可能)。如果後者是真的,我不太確定如何看到問題。我曾經看到有人說法線不相關,它是線條被繪製的方向,但是......我很難圍繞這一點,或者如果這是我的問題的根源。
它可能並不重要,但我使用矩陣庫是GL-矩陣:
https://github.com/toji/gl-matrix
而且,我用我的開源代碼庫的特定文件是在這裏:
http://code.google.com/p/nanoblok/source/browse/nb11/app/render.js
提前感謝!
嗯,是的,我已經嘗試了一些,但沒有考慮到它。我簡直不敢相信 - 一個簡單的0,0,1(或z:-1)向量做了這個訣竅。該死的!謝謝一堆。 :) – 2012-07-29 06:42:23