我想知道是否可以通過對glutSolidCube(GLDouble size)
應用某種轉換來構建3D平方體。我猜測涉及到某種剪切矩陣,從我所知道的來看,它不是一種內置的轉換。通過向立方體應用轉換創建3D平方體?
請注意,我根本不在乎收看視錐體(正如您可能想象的那樣,會讓所有Google搜索產生偏斜)。我只想在我的場景中有一個三維正方形的平截頭體。任何想法如何從立方體產生一個將不勝感激!
我想知道是否可以通過對glutSolidCube(GLDouble size)
應用某種轉換來構建3D平方體。我猜測涉及到某種剪切矩陣,從我所知道的來看,它不是一種內置的轉換。通過向立方體應用轉換創建3D平方體?
請注意,我根本不在乎收看視錐體(正如您可能想象的那樣,會讓所有Google搜索產生偏斜)。我只想在我的場景中有一個三維正方形的平截頭體。任何想法如何從立方體產生一個將不勝感激!
它不是剪切矩陣,它是透視投影的投影矩陣。將單位立方體頂點的座標乘以逆投影矩陣以獲得平截頭頂點的座標。爲了在世界空間得到視錐的座標,還需要通過逆相機矩陣(視圖矩陣)來多重頂點。
看看這裏的詳細公式: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/
他明確要求不要進行OpenGL轉換。我認爲一個簡單的轉換是爲了將立方體轉換成梯形。 – linello
是有可能你的立方體變成給予了非常投影矩陣截錐體。首先定義一個焦點距離d,該距離是平截頭體邊緣會聚的點。然後用這個矩陣乘以你的音量的所有角落:
P = [ 1 0 0 0
0 1 0 0
0 1 1/d 0
0 0 1 0 ]
我的一位朋友告訴我,還有一個剪切變換,將立方體變成一個平截體。他談論剪切矩陣內的負係數。 但現在我找不到這個矩陣。 Colud有人幫助我們? – Gabrer