如何根據(jù)OpenGL中的gluLookat函數(shù)求解 ViewMatrix矩陣。
視圖坐標轉(zhuǎn)換實際上就是把定點的坐標轉(zhuǎn)換進眼睛(攝像機)坐標系中,這個操作與將眼睛轉(zhuǎn)換到相應(yīng)位置并設(shè)定朝向的操作相反。 來完成視圖變換操作的矩陣V由兩部分矩陣連乘形成的,一部分是朝向矩陣O,一部分是平移矩陣T,所以我們有: V= OT; 朝向矩陣是由視線朝向D和眼睛的上方向U決定的,這兩個方向向量叉乘得到向量C,向量C和向量D叉乘得到U‘,C,U,D(對應(yīng)x,y,z),形成了眼睛坐標系的三個方向,它們屬于右手坐標系, 相關(guān)的公式如下: c = d x u, u' = c x d, 將得到的三個變量相應(yīng)的單位化,分別用這三個變量傳到下面的矩陣中,就得到了轉(zhuǎn)換需要的朝向矩陣O: ,注意向量d的各個分量都被取了原值的負值。 而平移矩陣,則是將眼睛移動操作的反操作,如果你有眼睛的位置,直接將眼睛的位置全取原值負值就OK了,但是需要注意的一點是,此時必須先把眼睛在世界坐標系中的位置通過上面剛求出來的矩陣轉(zhuǎn)換為眼睛坐標系中的位置,然后再把眼睛位置取負值。 以上紅字部分是十分重要的,大多數(shù)文檔均未提及。
|
|
來自: 昵稱12278894 > 《opengL》