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