摘 要:研究了用射線來拾取對象的原理,分析了如何利用模型矩陣從二維屏幕坐標(biāo)選取三維空間圖元,提出了兩種射線拾取的實現(xiàn)方法以及可能存在的問題。
關(guān)鍵詞:OpenGL 射線拾取 模型矩陣
中圖分類號:TP31文獻(xiàn)標(biāo)識碼:A文章編號:1674-098X(2011)04(b)-0088-02
1 引言
OpenGL是一個性能優(yōu)越的圖形應(yīng)用程序設(shè)計界面,廣泛地應(yīng)用于科學(xué)計算可視化、視景仿真、虛擬現(xiàn)實等領(lǐng)域。
拾取是計算機(jī)圖形處理系統(tǒng)一個重要功能。拾取是圖形繪制、操作者通過輸入設(shè)備操縱屏幕上的物體、獲取物體的空間坐標(biāo)或圖形數(shù)值的實現(xiàn)基礎(chǔ)。OpenGL中物體的拾取是人機(jī)實時交互技術(shù)的一部分。它是由操作者通過輸入設(shè)備輸入信息,然后選取屏幕上顯示的物體。射線拾取法是根據(jù)二維屏幕坐標(biāo)來選取三維空間中的圖元,通過獲取鼠標(biāo)在二維屏幕上的點,經(jīng)屏幕坐標(biāo)轉(zhuǎn)換得到投影點,以視點為起點,經(jīng)投影點構(gòu)造一條垂直指向屏幕的射線。射線拾取涉及到空間變換。在Opengl里面,空間變換是通過矩陣運(yùn)算完成的。
2 射線拾取技術(shù)原理
所謂空間變換就是,假設(shè)模型有三個頂點A、B、C,這三個頂點在模型坐標(biāo)系中就是固定的。但是如果要在兩個位置繪制兩個相同的模型,那么就要將模型頂點變換到世界空間中,A、B、C三點這時候可能對于兩個物體就產(chǎn)生了A1、B1、C1和A2、B2、C2兩組不同的坐標(biāo),這兩個新的坐標(biāo)就是在世界空間中的。
OpenGL里面調(diào)用glDrawArray或者類似函數(shù)繪制多邊形之前,都會有許多矩陣變換函數(shù),也就是說,多邊形一定……