簡體   English   中英

在哪個空間中進行可見表面測定以及如何進行?

[英]In which space to do Visible Surface Determination and how?

可視性問題可以通過按深度對多邊形進行排序(Painter算法)來解決,並在z范圍重疊的情況下使用Newell算法進行支持。 Newell的算法在這里這里進行了解釋。 點3和4涉及將面1的每個頂點與面2的平面進行比較。

為了獲得正確的結果,我們應該在裁剪后進行比較(因為裁剪后的多邊形從視點可能會完全變為與另一個多邊形平面相對的一側)。 裁剪是在投影之后進行的(因為投影矩陣定義了要修剪的視錐),這意味着我們必須在投影之后將頂點與平面進行比較。

此外,我們必須將向量歸一化,因為投影空間中的x,y和z值僅適用於w的上下文。

歸一化后,我們不再具有線性深度,這意味着如果將兩個多邊形的位置更靠近遠平面,則它們的z值會變得更近。 在非線性深度空間中,計算法線,點到平面的距離或檢測點在平面的哪一側所需的任何東西都將失敗。

那么,如何執行步驟“ P的所有頂點都比Q的平面深”?

將問題縮小為“如何將裁剪后的多邊形放回可以計算其法線向量的空間(意味着世界空間或眼睛空間)”之后,出現了一種方法:我們需要反轉管道操作, 此處進行描述。

為了避免非平凡的數學運算從窗口空間返回到剪輯空間,我們可能會在沿管線移動時緩存剪輯坐標。 然后,我們只需要使用投影矩陣的逆來變換剪輯坐標即可。 然后,裁剪的坐標將在眼空間中,並且我們能夠進行頂點平面比較(例如,通過平面到矢量法線和參考矢量的點積或測試是否存在線(射線)-平面相交點)並完成我們的VSD操作。

如果我們正在進行照明計算(在眼睛空間中),則可能已經有了法線向量。 當沿管道向下轉換法線矢量(例如,從對象空間到世界空間)時要記住的一件事是使用矩陣的轉置逆,因此法線矢量不會在任何方向上轉換。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM