2014-01-13 51 views
1

我正在學習從webgl書籍入門(WebGL編程指南:使用WebGL進行交互式3D圖形編程)的示例,並且我很難理解爲什麼正交投影有助於解決此特定問題。Webgl - 當改變視點三角形部分消失

其中一個例子讓我們通過應用一些矩陣變換來改變我們如何查看3個三角形的'眼點'。他們表明,如果我們將視角改變到正確的位置(+ X),三角形開始消失。這裏是本書網站的精確webgl示例(按右箭頭鍵旋轉三角形):http://www.magic.ubc.ca/webgl-pg/uploads/examples/ch07/LookAtTrianglesWithKeys.html

這本書說這是因爲「這是因爲你沒有指定可見範圍(你的界限實際上可以看到)。「

爲了解決這個問題,他們首先將正交投影矩陣應用到每個頂點,然後解決問題。爲什麼這會解決這個問題,一個矩陣變換如何導致以前不存在的事情現在可以看到?我在哪裏可以找到完整的解釋,爲什麼webgl選擇不再顯示三角形?

+0

我不是要求建議找到工具,圖書館或最喜歡的非現場資源。我也不是要求任何形式的主觀答案,我提供了一個確切的例子,並且正在尋找確切的具體答案。 –

+0

你怎麼稱呼這個「我在哪裏可以找到完整的解釋......」 – Vallentin

+0

聽起來像這個規則的目的是爲了避免主觀的討論,但它的使用方式不符合規則的精神。 將其編輯爲「爲什麼webgl選擇不再顯示三角形?」不以任何方式改變我所要求的。 很明顯,有人花時間寫一個問題的原創解決方案的答案是可以接受的,但提供相同信息的非現場鏈接對我來說也是可以接受的。 –

回答

3

的座標系統,其中在OpenGL中要顯示的對象(屏幕空間)具有用於xy,和一個z範圍的[-1,1]

使用viewMatrix.setLookAt(g_eyeX, g_eyeY, g_eyeZ, 0, 0, 0, 0, 1, 0);您的示例創建了一個轉換矩陣,用於將三角形的座標從世界空間轉換爲相機空間(您從中看到該對象的方向)。

因爲這種轉變將改變三角形,這些可能不是在[-1,1]範圍的座標了,在你的例子發生這種情況的z座標(移動背後屏幕)。

爲了解決這個問題,可以使用正投影改變範圍z座標,不改變的角度看,只有屏幕空間的當前z值縮放。

+0

謝謝,這解釋了它。 –