电竞比分网-中国电竞赛事及体育赛事平台

分享

根據(jù)gluLookat求解ViewMatrix

 昵稱12278894 2014-09-23
如何根據(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ù)文檔均未提及。

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多