2012-10-06 69 views
2

我想知道是否可以通過對glutSolidCube(GLDouble size)應用某種轉換來構建3D平方體。我猜測涉及到某種剪切矩陣,從我所知道的來看,它不是一種內置的轉換。通過向立方體應用轉換創建3D平方體?

請注意,我根本不在乎收看視錐體(正如您可能想象的那樣,會讓所有Google搜索產生偏斜)。我只想在我的場景中有一個三維正方形的平截頭體。任何想法如何從立方體產生一個將不勝感激!

A Square Frustum

+1

我的一位朋友告訴我,還有一個剪切變換,將立方體變成一個平截體。他談論剪切矩陣內的負係數。 但現在我找不到這個矩陣。 Colud有人幫助我們? – Gabrer

回答

2

它不是剪切矩陣,它是透視投影的投影矩陣。將單位立方體頂點的座標乘以逆投影矩陣以獲得平截頭頂點的座標。爲了在世界空間得到視錐的座標,還需要通過逆相機矩陣(視圖矩陣)來多重頂點。

看看這裏的詳細公式:http://www.songho.ca/opengl/gl_projectionmatrix.html

變形立方體最好是與所需的頂點創建VBO或只呈現了一些變形的四邊形,如果您使用需要一些quick'n'dirty實施固定功能流水線。

P.S.

有一個代碼片段來計算視錐的角落:http://www.gamedev.net/topic/606716-frustum-corners-from-view-projection/

+0

他明確要求不要進行OpenGL轉換。我認爲一個簡單的轉換是爲了將立方體轉換成梯形。 – linello

0

是有可能你的立方體變成給予了非常投影矩陣截錐體。首先定義一個焦點距離d,該距離是平截頭體邊緣會聚的點。然後用這個矩陣乘以你的音量的所有角落:

P = [ 1 0 0 0 
     0 1 0 0 
     0 1 1/d 0 
     0 0 1 0 ]