計(jì)算機(jī)圖形學(xué)CG08-三維觀察_第1頁
計(jì)算機(jī)圖形學(xué)CG08-三維觀察_第2頁
計(jì)算機(jī)圖形學(xué)CG08-三維觀察_第3頁
計(jì)算機(jī)圖形學(xué)CG08-三維觀察_第4頁
計(jì)算機(jī)圖形學(xué)CG08-三維觀察_第5頁
已閱讀5頁,還剩68頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第8章

三維觀察1本章目標(biāo)三維圖形顯示流程重點(diǎn)掌握透視投影變換學(xué)會(huì)使用OpenGL的顯示函數(shù)2主要內(nèi)容三維圖形的基本問題平面幾何投影觀察坐標(biāo)系中的投影變換投影舉例三維圖形的顯示流程圖三維裁剪圖形顯示過程OpenGL相關(guān)函數(shù)38.1三維圖形的基本問題在二維屏幕上如何顯示三維物體?顯示器屏幕、繪圖紙等是二維的顯示的圖形對(duì)象是三維的解決方法投影三維顯示設(shè)備(正在研制中)如何表示三維物體?二維形體的表示

----直線段、折線、曲線段、多邊形區(qū)域等三維形體的表示(9章)

----空間直線段、折線、曲線段、多邊形、曲面片等48.1三維圖形的基本問題如何反映遮擋關(guān)系?物體之間或物體的不同部分之間存在相互遮擋關(guān)系遮擋關(guān)系是空間位置關(guān)系的重要組成部分解決方法----消除隱藏面與隱藏線(10章)如何產(chǎn)生真實(shí)感圖形何謂真實(shí)感圖形逼真(顏色、紋理、材質(zhì)和光照)人們觀察現(xiàn)實(shí)世界產(chǎn)生的真實(shí)感來源于空間位置關(guān)系----近大遠(yuǎn)小的透視關(guān)系和遮擋關(guān)系光線傳播引起的物體表面顏色的自然分布解決方法----建立光照明模型、開發(fā)真實(shí)感圖形繪制方法(11章)58.1三維圖形的基本問題三維圖形的基本研究內(nèi)容投影三維形體的表示消除隱藏面與隱藏線建立光照明模型、真實(shí)感圖形繪制方法68.2平面幾何投影如何投影?生活中的類比—照相拍攝過程選景取景--裁剪對(duì)焦--參考點(diǎn)按快門--成像取景方式移動(dòng)景物移動(dòng)照相機(jī)78.2.1照相機(jī)模型與投影步驟選定投影類型

——

平行、透視設(shè)置投影參數(shù)——

拍攝方向、距離等三維裁剪

——取景投影和顯示——成像簡單的三維圖形顯示流程圖88.2.2平面幾何投影及分類平面幾何投影投影(Projection)將n維的點(diǎn)變換成小于n維的點(diǎn)

將3維的點(diǎn)變換成2維的點(diǎn)投影中心(COP:CenterofProjection)視覺系統(tǒng)—

觀察點(diǎn)、視點(diǎn)電影放映機(jī)—

光源投影面不經(jīng)過投影中心平面-照相機(jī)底片曲面-球幕電影,視網(wǎng)膜98.2.2平面幾何投影及分類投影線從投影中心向物體上各點(diǎn)發(fā)出的射線

兩類射線直線曲線平面幾何投影投影面是平面投影線為直線投影變換projectiontransformation投影過程投影的數(shù)學(xué)表示(a)(b)108.2.2平面幾何投影及分類平面幾何投影分類平行投影(parallelprojection)

投影中心與投影平面之間的距離為無限透視投影(perspectiveprojection)

投影中心與投影平面之間的距離為有限118.2.2平面幾何投影及分類示例投影中心與投影平面之間的距離為無限

投影中心與投影平面之間的距離為有限

平行投影透視投影128.2.3透視投影透視投影投影中心與投影平面之間的距離為有限例子:室內(nèi)白熾燈的投影,視覺系統(tǒng)滅點(diǎn)(vanishingpoint)不平行于投影平面的平行線,經(jīng)過透視投影之后收斂于一點(diǎn),稱為滅點(diǎn)滅點(diǎn)的個(gè)數(shù)無限138.2.3透視投影主滅點(diǎn):平行于坐標(biāo)軸的平行線的滅點(diǎn)。一點(diǎn)透視:1個(gè)滅點(diǎn)兩點(diǎn)透視:2個(gè)滅點(diǎn)三點(diǎn)透視:3個(gè)滅點(diǎn)特點(diǎn)產(chǎn)生近大遠(yuǎn)小的視覺效果,由它產(chǎn)生的圖形深度感強(qiáng),看起來更加真實(shí)。148.2.3透視投影例一點(diǎn)透視二點(diǎn)透視三點(diǎn)透視158.2.4平行投影平行投影

投影中心與投影平面之間的距離為無限是透視投影的極限狀態(tài)投影線方向投影平面168.2.4平行投影(1)正投影與斜投影正投影(orthogonalprojection)

投影線垂直于投影平面斜投影 投影線不垂直于投影平面正投影斜投影178.2.4平行投影(2)三視圖:正視圖、側(cè)視圖和俯視圖正視圖側(cè)視圖俯視圖188.3觀察坐標(biāo)系中的投影變換如何進(jìn)行投影變換?變換矩陣?在什么坐標(biāo)系中進(jìn)行?觀察坐標(biāo)系生活中的類比--移動(dòng)舞臺(tái)還是移動(dòng)攝像機(jī)移動(dòng)舞臺(tái)投影(攝像)簡單移動(dòng)難度大移動(dòng)攝像機(jī)移動(dòng)容易投影復(fù)雜建立觀察坐標(biāo)系,投影簡單198.3.1觀察坐標(biāo)系什么是觀察坐標(biāo)系ViewReferenceCoordinate或VRC依賴于投影平面建立的三維坐標(biāo)系uvn。如照相機(jī)所在的坐標(biāo)系如何建立觀察坐標(biāo)系坐標(biāo)原點(diǎn)----投影平面(如底片)上的一點(diǎn),稱為觀察參考點(diǎn)VRP(ViewReferencePoint)n軸(VPN)----照相機(jī)鏡頭方向(投影平面的法向)v軸----標(biāo)志物體的朝向,類似照相機(jī)向上的方向(觀察正向VUP在投影平面上的投影)u軸----208.3.1觀察坐標(biāo)系觀察坐標(biāo)系的簡化加速投影變換投影平面----n=0投影中心----(0,0,d)COP218.3.2視見體視見體視見體是三維裁剪窗口建立步驟(1)定義窗口(2)形成觀察空間(發(fā)出射線)(3)形成視見體(前后裁剪面)228.3.2視見體(1)建立窗口在投影平面uv上只有在窗口內(nèi)的圖形才能在視區(qū)中顯示指定參數(shù)(umin,vmin)(umax,vmax)窗口中心CW不一定落在觀察參考點(diǎn)VRP上238.3.2視見體(2)生成觀察空間投影參考點(diǎn)PRP:ProjectionReferencePoint確定投影中心或投影方向透視投影:COP=PRP平行投影:投影方向DOP=窗口中心CW-PRP248.3.2視見體(3)形成視見體可看到的范圍有限:定義前后裁剪面四棱臺(tái)或長方體又稱為裁剪空間有限觀察空間亦稱視見體或裁剪空間258.3.2視見體定義一個(gè)視見體所需的投影參數(shù)及其作用參數(shù)作用投影類型定義投影是平行投影還是透視投影觀察參考點(diǎn)VRP在世界坐標(biāo)系中指定,為觀察坐標(biāo)系原點(diǎn)觀察平面法向VPN在世界坐標(biāo)系中指定,為觀察坐標(biāo)的n軸觀察正向VUP在世界坐標(biāo)系中指定,確定觀察坐標(biāo)系的v投影參考點(diǎn)PRP在觀察坐標(biāo)系中指定確定投影中心或投影方向前裁剪面裁距F在觀察坐標(biāo)系中指定,n=F為前裁剪面后裁剪面裁距B在觀察坐標(biāo)系中指定,n=B為后裁剪面窗口umin,umax、vmin、vmax在觀察坐標(biāo)系的uv平面上指定,確定窗口與視見體268.3.3透視投影變換問題----在uvn中,投影平面為n=0,投影中心為(0,0,d),待投影點(diǎn)為P(up,vp,np),求投影點(diǎn)Q278.3.3透視投影變換投影線的參數(shù)方程投影平面方程n=0Q點(diǎn)的坐標(biāo)由此式可解釋為什么透視投影產(chǎn)生近大遠(yuǎn)小的視覺效果288.3.3透視投影變換透視投影變換矩陣298.3.4平行投影變換問題----在uvn中,投影平面為n=0,投影方向?yàn)椋?,0,-1),待投影點(diǎn)為P,求投影點(diǎn)Q308.3.4平行投影變換投影線的參數(shù)方程投影平面方程n=0Q點(diǎn)的坐標(biāo)318.3.4平行投影變換平行投影變換矩陣328.3.4平行投影變換透視投影與平行投影之間的關(guān)系338.3.5從世界坐標(biāo)系到觀察坐標(biāo)系的變換條件VRC的坐標(biāo)原點(diǎn)(觀察參考點(diǎn))VRP(VRPx,VRPy,VRPz)投影平面法向VPN觀察正向VUP348.3.5從世界坐標(biāo)系到觀察坐標(biāo)系的變換變換公式MWC→VRC358.4投影舉例待投影的單位立方體頂點(diǎn)3的坐標(biāo)(1,1,1)缺省投影參數(shù)

參數(shù) 值投影類型 平行投影VRP(WC)(0,0,0)VPN(WC)(0,0,1) VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,1)窗口(VRC)

(0,1,0,1)F(VRC) 正無窮B(VRC)

負(fù)無窮36一點(diǎn)透視8.4投影舉例參數(shù)值投影類型透視投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,4)窗口(VRC)(-0.5,1.5,-0.5,1.5)參數(shù)值投影類型透視投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(2.0,2.0,4.0)窗口(VRC)(-0.5,1.5,-0.5,1.5)378.4投影舉例兩點(diǎn)透視參數(shù) 值 投影類型透視投影VRP(WC)(0,0,0)VPN(WC)(1,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,4)窗口(VRC)

(-1.5,1.5,-1.5,1.5)

參數(shù) 值 投影類型透視投影VRP(WC)(0,0,0)VPN(WC)(1,0,1)VUP(WC)(1,1,0)PRP(VRC)(0.5,0.5,4)窗口(VRC)

(-1.5,1.5,-1.5,1.5)

38平行投影8.4投影舉例參數(shù) 值投影類型平行投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,1)窗口(VRC)

(-0.5,1.5,0.5,1.5)

參數(shù) 值投影類型平行投影VRP(WC)(0,0,0)VPN(WC)(1,1,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,2)窗口(VRC)(-0.5,1.5,0.5,1.5)39前、后裁剪面的影響8.4投影舉例參數(shù) 值投影類型透視投影VRP(WC)(0,0,0)VPN(WC)(0,0,1)VUP(WC)(0,1,0)PRP(VRC)(0.5,0.5,2)窗口(VRC)(-0.5,1.5,-0.5,1.5)F(VRC)1.2B(VRC)

0.2408.5三維圖形的顯示流程圖顯示流程圖(先裁剪后投影)模型變換:

從局部(模型)坐標(biāo)系到世界坐標(biāo)系的變換觀察變換:從世界坐標(biāo)系到觀察坐標(biāo)系的變換418.5.1模型變換模型坐標(biāo)系ModelingCoordinate物體的局部坐標(biāo)系在模型坐標(biāo)系中物體的表示簡單世界坐標(biāo)系中的立方體模型坐標(biāo)系中的立方體42模型變換ModelingTransformation將物體從本身的模型坐標(biāo)系變換到上層物體的模型坐標(biāo)系(或世界坐標(biāo)系)的幾何變換模型變換是構(gòu)造復(fù)雜物體的方法例子:8.5.1模型變換模型變換143先投影后裁剪優(yōu)點(diǎn)二維裁剪相對(duì)容易缺點(diǎn)需要對(duì)所有的物體進(jìn)行投影變換8.5.2裁剪448.5.2裁剪在投影之前裁剪的理由三維物體的表面通常被離散表示成多邊形或折線,而對(duì)這類簡單圖元,三維裁剪同樣比較簡單三維圖形在顯示過程中需要被消隱,做這個(gè)工作要有圖形的深度信息,所以必須在投影之前完成。消隱很費(fèi)時(shí),如果在此之前裁剪(或部分裁剪)掉不可見的圖形,可使需要消隱的圖形減至最小458.5.3規(guī)范視見體為什么引入規(guī)范視見體簡化投影簡化裁剪規(guī)范化變換將任意視見體變換成規(guī)范視見體的變換規(guī)范投影坐標(biāo)(三維坐標(biāo))經(jīng)規(guī)范化的觀察坐標(biāo)系468.5.3規(guī)范視見體平行投影的規(guī)范視見體半立方體透視投影的規(guī)范視見體四棱臺(tái)478.5.3規(guī)范視見體采用規(guī)范視見體的三維圖形顯示流程圖488.5.4平行投影的規(guī)范視見體將任意的平行投影視見體變換為規(guī)范平行投影視見體方法:變換的分解與合成步驟:p162~164平移變換錯(cuò)切變換平移變換放縮變換結(jié)果498.5.4平行投影的規(guī)范視見體508.5.5透視投影視見體的規(guī)范化將任意的透視投影視見體變換為規(guī)范透視投影視見體方法:變換的分解與合成步驟:p164~166平移變換錯(cuò)切變換平移變換放縮變換結(jié)果518.5.5透視投影視見體的規(guī)范化528.5.6規(guī)范視見體之間的變換將透視投影的規(guī)范視見體變換為平行投影的規(guī)范視見體538.5.6規(guī)范視見體之間的變換原因關(guān)于長方體的裁剪較關(guān)于正四棱臺(tái)的裁剪簡單平行投影較透視投影簡單透視投影與平行投影都采用同一套裁剪與投影程序,處理一致,便于用硬件實(shí)現(xiàn)將視見體變換結(jié)合到透視投影的規(guī)范化變換矩陣中548.5.6規(guī)范視見體之間的變換采用視見體變換的三維圖形顯示流程圖558.6三維裁剪三維裁剪的兩種方法在三維空間關(guān)于視見體裁剪,需要將齊次坐標(biāo)轉(zhuǎn)換為三維坐標(biāo)優(yōu)點(diǎn):三維裁剪相對(duì)容易缺點(diǎn):需要將齊次坐標(biāo)轉(zhuǎn)換為三維坐標(biāo)直接在四維齊次坐標(biāo)空間中進(jìn)行裁剪優(yōu)點(diǎn):不需要將齊次坐標(biāo)轉(zhuǎn)換為三維坐標(biāo)有理曲線曲面可能直接用齊次坐標(biāo)來表示,對(duì)它們的裁剪只能在齊次坐標(biāo)空間中進(jìn)行

缺點(diǎn):四維裁剪相對(duì)復(fù)雜568.6.1關(guān)于規(guī)范視見體的裁剪直線段裁剪Cohen_Sutherland算法-27個(gè)區(qū)域Linang_Barskey算法的直接推廣-三維到一維多邊形裁剪的Sutherland_Hodgman算法的直接推廣-逐面裁剪主要運(yùn)算求線段與平面的交點(diǎn)57求線段與平面的交點(diǎn)平面S的方程記為:直線段(與平面不平行)P1(u1,v1,n1)P2(u2,v2,n2)交點(diǎn)參數(shù)t8.6.1關(guān)于規(guī)范視見體的裁剪58編碼算法平行投影6個(gè)面的方程6位編碼,C1C2C3C4C5C627個(gè)區(qū)域算法過程類似2維裁剪8.6.1關(guān)于規(guī)范視見體的裁剪598.7三維圖形顯示過程三維圖形顯示過程1、將三維坐標(biāo)擴(kuò)展為齊次坐標(biāo),(x,y,z)

(x,y,z,1);2、進(jìn)行模型變換;3、進(jìn)行觀察變換;4、進(jìn)行視見體的規(guī)范化變換Npar或Nper;5、除以h返回三維空間(有些情況下,h保持為1,所以不必做除法運(yùn)算);6、關(guān)于規(guī)范視見體進(jìn)行裁剪;7、將三維坐標(biāo)擴(kuò)展為齊次坐標(biāo);8、進(jìn)行投影變換Mort或Mper;9、進(jìn)行窗口至視區(qū)的變換;10、除以h返回二維設(shè)備坐標(biāo)系;11、掃描轉(zhuǎn)換(顯示)608.8OpenGL相關(guān)函數(shù)觀察變換函數(shù)指定觀察參數(shù),生成一個(gè)矩陣并與當(dāng)前模型觀察矩陣合并建模觀察模式:glMatrixMode(GL_MODELVIEW)指定觀察參數(shù):

gluLookAt(eyex,eyey,eyez,atx,aty,atz,upx,upy,upz)如果不調(diào)用此函數(shù),則默認(rèn)(1)eye=(0,0,0)(2)at=(0,0,-1)(3)up=(0,1,0)61投影模式建立投影變換矩陣:glMatrixMode(GL_PROJECTION)設(shè)定當(dāng)前投影矩陣正投影函數(shù)

glOrtho(xmin,xmax,ymin,ymax,near,far)或glOrtho(left,right,bottom,top,near,far)(1)形成視見體(2)near和far為從觀察坐標(biāo)系原點(diǎn)沿負(fù)Z軸方向的距離8.8OpenGL相關(guān)函數(shù)62正投影函數(shù)(續(xù))默認(rèn)參數(shù):glOrtho(-1.0,1.0,-1.0,1.0,-1.0,1.0)是一對(duì)稱規(guī)范化對(duì)稱正方體對(duì)二維而言,glOrtho2D建立裁剪窗口如不指定投影函數(shù),默認(rèn)正投影來顯示場(chǎng)景8.8OpenGL相關(guān)函數(shù)zviewyviewxview近裁剪面遠(yuǎn)裁剪面63透視投影函數(shù)(1)glFrustum(left,right,bottom,top,near,far)

前四個(gè)參數(shù)設(shè)定近平面上裁剪窗口的坐標(biāo)(OpenGL投影平面為近裁剪面)8.8OpenGL相關(guān)函數(shù)64(2)gluPerspective(fovy,aspect,near,far)

fovy:上下裁剪面間的夾角(0~180)

aspect:裁剪窗口縱橫比(寬度/高度)

near:近裁剪面

far:遠(yuǎn)剪面8.8OpenGL相關(guān)函數(shù)65實(shí)例8-1:觀察立方體移動(dòng)視點(diǎn)旋轉(zhuǎn)物體8.8OpenGL相關(guān)函數(shù)668.8OpenGL相關(guān)函數(shù)#include<stdlib.h>#include<GL/glut.h>GLfloatvertices[][3]={{-1.0,-1.0,-1.0},{1.0,-1.0,-1.0},{1.0,1.0,-1.0},{-1.0,1.0,-1.0},{-1.0,-1.0,1.0},{1.0,-1.0,1.0},{1.0,1.0,1.0},{-1.0,1.0,1.0}};GLfloatcolors[][3]={{0.0,0.0,0.0},{1.0,0.0,0.0},{1.0,1.0,0.0},{0.0,1.0,0.0},{0.0,0.0,1.0},{1.0,0.0,1.0},{1.0,1.0,1.0},{0.0,1.0,1.0}};voidpolygon(inta,intb,intc,intd){

glBegin(GL_POLYGON);glColor3fv(colors[a]);glVertex3fv(vertices[a]);glVertex3fv(vertices[b]);glVertex3fv(vertices[c]);glVertex3fv(vertices[d]);

glEnd();}678.8OpenGL相關(guān)函數(shù)staticGLfloattheta[]={0.0,0.0,0.0};staticGLintaxis=2;staticGLdoubleviewer[]={0.0,0.0,5.0};voidcolorcube(){polygon(0,3,2,1);polygon(2,3,7,6);polygon(0,4,7,3);polygon(1,2,6,5);polygon(4,5,6,7);polygon(0,1,5,4);}voiddisplay(){

glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);

glLoadIdentity();//更新視點(diǎn)位置

gluLookAt(viewer[0],viewer[1],viewer[2],0.0,0.0,0.0,0.0,1.0,0.0);glRotatef(theta[0],1.0,0.0,0.0);glRotatef(theta[1],0.0,1.0,0.0);/*旋轉(zhuǎn)立方體*/glRotatef(theta[2],0.0,0.0,1.0);colorcube();

glutSwapBuffers();}688.8OpenGL相關(guān)函數(shù)voidmouse(int

btn,intstate,intx,inty){

if(btn==GLUT_LEFT_BUTTON&&state==GLUT_DOWN)axis=0;

if(btn==GLUT_MIDDLE_BUTTON&&state==GLUT_DOWN)axis=1;

if(btn==GLUT_RIGHT_BUTTON&&state==GLUT_DOWN)axis=2;

theta[axis]+=2.0;if(theta[axis]>360.0)theta[axis]-=360.0;display();}voidkeys(unsignedcharkey,intx,inty){/*用x,X,y,Y,z,andZ鍵移動(dòng)視點(diǎn)*/

if(key=='x')viewer[0]-=1.0;

if(key=='X')viewer[0]+=1.0;

if(key=='y')viewer[1]-=1.0;

if(key=='Y')viewer[1]+=1.0;

if(key=='z')viewer[2]-=1.0;

if(key=='Z')viewer[2]+=1.0;

display();}698.8OpenGL相關(guān)函數(shù)voidmyReshape(intw,inth){glViewport(0,0,w,h);

glMatrixMode(GL_PROJECTION);glLoadIdentity();

if(w<=h)glFrustum(-2.0,2.0,-2.0*(GLfloat)h/(GLfloat)w,2.0*(GLfloat)h/(GLfloat)w,2.0,20.0);elseglFrustum(-2.0,2.0,-2.0*(GLfloat)w/(GLfloat)h,

溫馨提示

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

評(píng)論

0/150

提交評(píng)論