計算機圖形學:(5-2)三維視圖-計算機視圖_第1頁
計算機圖形學:(5-2)三維視圖-計算機視圖_第2頁
計算機圖形學:(5-2)三維視圖-計算機視圖_第3頁
計算機圖形學:(5-2)三維視圖-計算機視圖_第4頁
計算機圖形學:(5-2)三維視圖-計算機視圖_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、1Angel: Interactive Computer Graphics 5E Addison-Wesley 2009計算機視圖2Angel: Interactive Computer Graphics 5E Addison-Wesley 2009基本內容介紹投影的數學表示介紹OpenGL中的視圖函數其它類型API中的視圖功能計算機視圖視圖有三個功能,都在流水線結構中實現定位照相機設置模型視圖矩陣設置鏡頭設置投影矩陣裁剪設置視景體3Angel: Interactive Computer Graphics 5E Addison-Wesley 2009虛擬照相機計算機視圖是基于虛擬照相機模型的,

2、原則上可以實現所有的經典視圖所有的經典視圖是基于對象、觀察者和投影線之間的緊密聯(lián)系的,而在計算機圖形學中強調的則是對象定義與照相機定義之間的獨立性在OpenGL中可以指定采用的是透視投影或者正交投影,但在透視投影中OpenGL并不知道什么是單點、兩點或三點透視為了實現這些細節(jié)需要知道對象與照相機之間的關系4Angel: Interactive Computer Graphics 5E Addison-Wesley 2009最終的選擇偏好對象定義與照相機定義之間的獨立性如果應用程序需要特定類型的視圖,那么應當仔細確定照相機相對于對象的位置因為在透視投影中,從射影幾何的角度來說,肯定有三個滅點,只

3、是有些滅點在無窮遠5Angel: Interactive Computer Graphics 5E Addison-Wesley 2009OpenGL中的照相機在OpenGL中,初始的世界標架和照相機標架相同初始的模型視圖矩陣是單位陣照相機位于原點,并指向z軸的負向OpenGL也指定了默認的視景體,它是一個中心在原點的邊長為2的立方體缺省的投影矩陣是單位陣6Angel: Interactive Computer Graphics 5E Addison-Wesley 2009缺省投影缺省投影7Angel: Interactive Computer Graphics 5E Addison-Wesl

4、ey 2009定義可見的對象在缺省的照相機設置下,為了使定義的對象可見,只要使對象的位置和尺寸與默認視景體相匹配通??梢詫祿M行適當的平移和各向同性放縮注意這并不是利用OpenGL的平移和放縮函數進行的操作8Angel: Interactive Computer Graphics 5E Addison-Wesley 2009移動照相機標架如果想看到具有更大的正z坐標的對象,我們可以把照相機沿z軸正向移動平移照相機標架把對象沿z軸負向移動移動世界標架兩者是完全等價的,都是由模型視圖矩陣確定的需要平移glTranslated(0.0, 0.0, -d);此處d 09Angel: Interact

5、ive Computer Graphics 5E Addison-Wesley 200910Angel: Interactive Computer Graphics 5E Addison-Wesley 2009移動照相機可以利用一系列旋轉和平移把照相機定位到任意位置例如,為了得到側視圖旋轉照相機: R把照相機從原點移開: T模型視圖矩陣C = TR11Angel: Interactive Computer Graphics 5E Addison-Wesley 2009OpenGL代碼注意最后指定的變換是最先被應用的變換glMatrixMode(GL_MODELVIEW);glLoadIdent

6、ity();glTranslated(0.0, 0.0, -d);glRotated(-90.0, 0.0, 1.0, 0.0);12Angel: Interactive Computer Graphics 5E Addison-Wesley 2009模型視圖矩陣模型視圖矩陣是OpenGL狀態(tài)的一部分任何時刻的模型視圖矩陣包含了照相機標架與世界標架的位置關系雖然表面上看把模型與視圖矩陣結合為一個矩陣會導致一些混淆,但仔細體會這種流水線體系就會發(fā)現其中的優(yōu)勢如果把照相機也看作具有幾何屬性的對象,那么改變對象位置和定向的變換當然對照相機的位置和定向相對于其它對象也發(fā)生改變可以認為在定義真正對象之前

7、的模型視圖變換是定位照相機13Angel: Interactive Computer Graphics 5E Addison-Wesley 2009如何構造正等軸測投影假設從中心在原點的立方體開始,立方體平行于坐標軸希望移動照相機得到該立方體的正等軸測投影首先繞y軸旋轉45度然后繞x軸旋轉35.26度最后從原點移開14Angel: Interactive Computer Graphics 5E Addison-Wesley 2009構造正等軸測投影繞y軸逆時針旋轉45,(-1,1,1)變換到(0,1,21/2)繞x軸逆時針旋轉35.26,(0,1,21/2)變換到(0,0,31/2)旋轉矩陣

8、: R= Rx(35.26)Ry(45)15Angel: Interactive Computer Graphics 5E Addison-Wesley 2009OpenGL代碼注意最后指定的變換是最先被應用glMatrixMode(GL_MODELVIEW);glLoadIdentity();glTranslated(0.0, 0.0, -d);glRotated(35.26, 1.0, 0.0, 0.0);glRotated(90, 0.0, 1.0, 0.0);16Angel: Interactive Computer Graphics 5E Addison-Wesley 2009兩個視

9、圖API為了實現某種投影,需要經過復雜的計算得到變換的構成可以采用在PHIGS和GKS-3D中的方法定位照相機在世界標架中描述照相機的位置投影的類型是由在OpenGL中等價的投影矩陣確定的視圖過程的這部分操作也稱為規(guī)范化變換(normalization transformation)用標架中的變換實現17Angel: Interactive Computer Graphics 5E Addison-Wesley 2009照相機參數照相機的默認位置在原點,指向z軸負向所期望的位置稱為視圖參考點(view-reference point, VRP)照相機定向視圖平面法向n(view-plane n

10、ormal, VPN)VUP (view-up vector)18Angel: Interactive Computer Graphics 5E Addison-Wesley 2009VPN & VUPVPN給出投影面的方向,即平面的法向只有平面的定向不能完全確定照相機的定向照相機還可以繞VPN方向旋轉只有給出了VUP,才完全確定了照相機的方向19Angel: Interactive Computer Graphics 5E Addison-Wesley 2009VUP不必要求VUP向量必定平行于投影面把VUP投影到投影平面上得到上方向量vv與n正交設u = v x n由(u, v, n)構成

11、的直角坐標系稱為視圖坐標系加上VRP,構成照相機標架實現這種變換的矩陣稱為視圖定向矩陣20Angel: Interactive Computer Graphics 5E Addison-Wesley 2009視圖定位矩陣設VRP點p = x,y,z,1T, 視平面法向n = nx,ny,nz,0T, 上方向量為vup= vupx, vupy, vupz, 0T.v = vup(vupn)/(nn)n, 把v, n單位化u = v x n視圖定位矩陣為21Angel: Interactive Computer Graphics 5E Addison-Wesley 2009LookAt()函數在G

12、LU庫中包含了函數gluLookAt(),提供了創(chuàng)建定位照相機所用的模型視圖矩陣的簡單方法注意在設置中需要一個向上的方向需要初始化,即加載單位陣也可以與模型變換復合在一起例如:平行于軸的立方體的正等軸測投影glMatrixMode(GL_MODELVIEW);glLoadIdentity();gluLookAt(1.,1.,1.,0.,0.,0.,0.,1.,0.);22Angel: Interactive Computer Graphics 5E Addison-Wesley 2009gluLookAt()gluLookAt(eyex, eyey, eyez, atx, aty, atz,

13、upx, upy, upz);23Angel: Interactive Computer Graphics 5E Addison-Wesley 2009gluLookAt()與其它變換默認情況下照相機的設置:gluLookAt(0.,0.,0.,0.,0.,-100.,0.,1.,0.);用戶可以自己定義模型視圖矩陣實現同樣的功能但是從概念上可以把gluLookAt()作為照相機的定位,而把后續(xù)的其它變換作為對象的定位24Angel: Interactive Computer Graphics 5E Addison-Wesley 2009其它視圖API在OpenGL中gluLookAt()函數

14、是唯一的專門用來定位照相機的函數在許多實際應用中,已有的視圖定義方法不適用例如飛機操縱模擬25Angel: Interactive Computer Graphics 5E Addison-Wesley 2009飛機操縱模擬26Angel: Interactive Computer Graphics 5E Addison-Wesley 2009OpenGL代碼:飛行員視圖飛機位于坐標(x,y,z),相對于飛機重心glRotated(roll, 0., 0., 1.);glRotated(pitch, 0., 1., 0.);glRotated(yaw, 1., 0., 0.);glTransl

15、ated(-x, -y, -z);27Angel: Interactive Computer Graphics 5E Addison-Wesley 2009星空觀察采用極坐標點在天空中的位置指定方向由方位角和仰角定義觀察者所在的平面,即法向n照相機還可以繞視線方向旋轉,稱為扭轉角(twist angle)28Angel: Interactive Computer Graphics 5E Addison-Wesley 2009OpenGL代碼:極坐標視圖照相機繞一個位于原點的物體做軌道運動distance:軌道半徑(照相機與原點的距離)glTranslated(0, 0, -distance);

16、glRotated(-twist, 0, 0, 1);glRotated(-elevation, 1, 0, 0);glRotated(azimuth, 0, 0, 1);29Angel: Interactive Computer Graphics 5E Addison-Wesley 2009物理照相機在定位后仍然可以選擇鏡頭鏡頭與底片的大小結合在一起確定在照相機前面多大范圍的對象出現在最終的照片上廣角鏡頭可以使離照相機近的對象看起來比離照相機遠的對象大,長焦鏡頭則會近似得到平行投影的效果30Angel: Interactive Computer Graphics 5E Addison-Wes

17、ley 2009計算機中的照相機可以選擇投影的類型和視圖參數模擬鏡頭的遠近絕大多數API提供不同的函數用于定義平行投影和透視投影OpenGL就是如此,雖然兩者是在同一個流水線體系中實現用glLoadMatrix設置投影矩陣31Angel: Interactive Computer Graphics 5E Addison-Wesley 2009兩種照相機模型32Angel: Interactive Computer Graphics 5E Addison-Wesley 2009投影與規(guī)范化在視點(照相機)標架中默認的投影是正交投影對于在默認視景體內的點,xp= x, yp= y, zp= 0大多

18、數圖形系統(tǒng)應用視圖規(guī)范化的過程通過由投影矩陣確定的變換把所有其它的視圖轉化為默認視圖從而可以對所有的視圖采用同樣的流水線體系33Angel: Interactive Computer Graphics 5E Addison-Wesley 2009正交投影的齊次坐標表示默認的正交投影矩陣在實際應用中可以令M = I, 然后把對角線第三個元素置為零。34Angel: Interactive Computer Graphics 5E Addison-Wesley 2009簡單透視只考慮兩種照相機模型的第一種投影中心在原點投影平面為z= d, d 035Angel: Interactive Compu

19、ter Graphics 5E Addison-Wesley 2009透視方程考慮頂部與側邊視圖36Angel: Interactive Computer Graphics 5E Addison-Wesley 2009齊次坐標形式p= Mq37Angel: Interactive Computer Graphics 5E Addison-Wesley 2009透視除法如果w1, 那么必須從齊次坐標中除以w而得到所表示的點這就是透視除法,結果為上述方程稱為透視方程后面會用OpenGL函數考慮相應的裁剪體38Angel: Interactive Computer Graphics 5E Addis

20、on-Wesley 2009透視變換透視除法是非線性的,導致非均勻縮短離COP遠的對象投影后尺寸縮短得比離COP近的對象大透視變換是保直線的,但不是仿射變換透視變換是不可逆的,因為沿一條投影直線上的所有點投影后的結果相同,無法從投影點恢復原來的點39Angel: Interactive Computer Graphics 5E Addison-Wesley 2009投影流水線在模型視圖矩陣后應用4x4的投影矩陣實現簡單的投影,但在最后需要進行透視除法透視除法可以成為流水線的一部分40Angel: Interactive Computer Graphics 5E Addison-Wesley 2009視角(angle of view)只有位于視角內的對象才會出現在照片中41Angel: Interactive Computer Graphics 5E Addison-Wesley 2009視景體若底片是矩形的,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論