




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、第6章 三維圖形變換及觀察1第6章 三維圖形變換及觀察6.1 三維幾何變換6.2 坐標變換6.3 投影變換6.4 三維觀察6.5 三維裁剪26.1 三維幾何變換三維幾何變換是指將點從一個坐標位置變換到另一個坐標位置的過程。每個三維點(x,y,z)對應于一個齊次坐標x,y,z,1。所有的三維變換都可通過乘以一個44的變換矩陣來進行。三維幾何變換的基本方法同二維幾何變換一樣,將變換矩陣M作用于齊次坐標點P生成新的坐標點P,即P=MP;連接變換后的新的圖形頂點,可以繪制出變換后的三維圖形。三維基本幾何變換和二維基本幾何變換一樣是相對于坐標原點和坐標軸進行的幾何變換,包括平移、比例、旋轉、反射和錯切5
2、種變換。因此三維幾何變換矩陣的推導過程和二維變換矩陣的推導過程類似。zyx36.1 三維幾何變換1. 平移變換 2. 縮放變換 3. 旋轉變換 4. 變形變換5. 對稱變換6. 復合變換41. 平移變換平移變換點(x,y,z)沿x軸方向平移Tx距離, 沿y軸方向平移Ty距離,沿z軸方向平移Tz距離, 變成點(x,y,z),這一變換過程的變換矩陣為:TxTzTy52. 縮放變換設一個點沿x,y,z軸縮放的比例分別為Sx,Sy,Sz,則縮放變換矩陣可表示為: 當|Sx|,|Sy|,|Sz|分別大于1時,為物體的放大;小于1時,為縮小變換; 當|Sx|,|Sy|,|Sz|皆等于1時,即為恒等變換;當
3、Sx,Sy,Sz分別等于-1時,作相應坐標平面的鏡面變換。63. 旋轉變換 繞坐標軸旋轉繞X軸變換 空間上的立體繞X軸旋轉時,立體上各點的X坐標不變,只是Y、Z坐標發生相應的變化。轉角的正向滿足右手螺旋法則。yo(y,z)(y,z)zx = xy = cos(+) = y*cos- z*sinz = sin(+) = y*sin+z*cos(x, y, z)(x, y, z)xyz73. 旋轉變換 繞坐標軸旋轉繞Y軸旋轉 此時,Y坐標不變,X,Z坐標相應變化。xozx = sin(+) = x*cos + z*siny = yz = cos(+) = z*cos- x*sinxyz(x, y,
4、 z)(x, y, z)83. 旋轉變換 繞坐標軸旋轉繞Z軸旋轉 此時,Z坐標不變,X,Y坐標相應變化。xyo(x, y, z)(x, y, z)x = cos(+) = x*cos - y*siny = sin (+) = x*sin+ y*cosz = zxzy9繞x軸旋轉:繞y軸旋轉:繞z軸旋轉:3. 旋轉變換 繞坐標軸旋轉103. 旋轉變換 旋轉的方向旋轉角度為時,點的旋轉方向:在右手坐標系中,(右手螺旋法則): 旋轉軸 相應的旋轉方向 x軸從y軸到z軸 y軸從z軸到x軸 z軸從x軸到y軸在左手坐標系中,(左手螺旋法則): 從旋轉軸的正向看去,旋轉方向是順時針方向。這樣定義旋轉方向的目
5、的是為了保證無論在右手坐標系中還是在左手坐標系中,所用的旋轉矩陣是相同的。zxyyzx114. 變形變換(錯切變換)三維錯切變換的坐標表示為: 即:三維錯切變換中,一個坐標的變化受另外兩個坐標變化的影響。如果變換矩陣第一行中元素d和g不為0,產生沿x軸方向的錯切;第二行中元素b和h不為0,產生沿y軸方向的錯切;第三行中元素c和f不為0,產生沿z軸方向的錯切。124. 變形變換(錯切變換)沿x方向錯切:此時,b0,h0,c0,f0。當d0時,錯切平面離開z軸,沿x方向移動gz距離;當g0時,錯切平面離開y軸,沿x方向移動dy距離。zyx沿x含y錯切zyx 沿x含z錯切134. 變形變換(錯切變換
6、)沿y方向錯切此時,d0,g0,c0,f0。當b0時,錯切平面離開z軸,沿y方向移動hz距離;當h0時,錯切平面離開x軸,沿y方向移動bx距離。zyx沿y含x錯切zyx沿y含z錯切144. 變形變換(錯切變換)沿z方向錯切:此時,d0,g0,b0,h0。當c0時,錯切平面離開y軸,沿z方向移動fy距離;當f0時,錯切平面離開x軸,沿z方向移動cx距離。zyx沿z含x錯切zyx沿z含y錯切155. 對稱變換三維對稱變換可以分為:關于坐標軸的對稱;關于坐標平面的對稱;關于坐標原點的對稱;關于x軸的對稱關于y軸的對稱關于z軸的對稱165. 對稱變換關于xoy面的對稱關于yoz面的對稱關于zox面的對
7、稱關于原點的對稱:176. 組合變換通過基本幾何變換的組合,可以完成復雜的幾何變換組合(復合)變換復雜幾何變換 基本幾何變換的組合例如:求繞任意直線旋轉的變換矩陣:饒任意直線旋轉的問題 繞坐標軸旋轉的組合18例:繞任意軸旋轉 繞直線P1P2旋轉角yxz P2yxzP1P2zyxP2P1 P2zyxP2(a, b, c)abc19例:繞任意軸旋轉 繞直線P1P2旋轉角繞直線P1P2旋轉角的過程可分解為下列步驟:把點P1 (x1, y1, z1)移至原點;繞x軸旋轉,使直線與xoz平面重合;繞y軸旋轉,使直線與z軸重合;繞z軸旋轉角;執行步驟(3)的逆變換;執行步驟(2)的逆變換;執行步驟(1)的
8、逆變換;20例:繞任意軸旋轉 繞直線P1P2旋轉角步驟(1):把點P1(x1,y1,z1)移至原點,變換矩陣為:P1P2zyxP2P121例:繞任意軸旋轉 繞直線P1P2旋轉角步驟(2):繞x軸旋轉,使直線與xoz平面重合。可知: P2zyxP2(a, b, c)abc設d1=(b2+c2)1/2,則變換矩陣為: 22例:繞任意軸旋轉 繞直線P1P2旋轉角步驟(3):繞y軸旋轉,使直線與z軸重合,此刻P2的坐標已變為P2(a,0,d1),可知:yxz P 2 (a,0,d1)令d2 =(a2+b2+c2)1/2,則變換矩陣為: 23例:繞任意軸旋轉 繞直線P1P2旋轉角步驟(4):繞z軸旋轉角
9、,變換矩陣為: yxz24例:繞任意軸旋轉 繞直線P1P2旋轉角步驟(5),執行步驟(3)的逆變換,變換矩陣為Ry(-);步驟(6),執行步驟(2)的逆變換,變換矩陣為Rx(-);步驟(7),執行步驟(1)的逆變換,變換矩陣為T3(x1,y1,z1)。綜上,繞直線P1P2旋轉角的變換矩陣為:R()=T3(x1,y1,z1) Rx(-) Ry(-) Rz() Ry() Rx() T3(-x1,-y1,-z1) 注意:變換的過程有多種選擇。如果中間的幾個旋轉次序變了,則各個矩陣的對應矩陣參數也會不同。25第6章 三維圖形變換及觀察6.1 三維幾何變換6.2 坐標變換6.3 投影變換6.4 三維觀察
10、6.5 三維裁剪266.2 坐標變換6.2.1 坐標系6.2.2 坐標變換6.2.3 幾何變換和坐標變換的關系276.2.1 坐 標 系對圖形的描述、圖形的輸入輸出都是在坐標系中進行的。現實的物體具有高度、寬度、和深度。它們可以用三維坐標系的x軸、y軸和z軸來表示。常用的坐標系有:用戶坐標系觀察坐標系設備坐標系參見第5章的相關內容。zxyUCzxyxyzVC286.2 坐標變換6.2.1 坐標系6.2.2 坐標變換6.2.3 幾何變換和坐標變換的關系296.2.2 坐標變換同一物體在不同的坐標系中描述時,會有不同的坐標值。在甲坐標系中定義一個物體,那么只要把乙坐標系的坐標軸及坐標原點變換成甲坐
11、標系的坐標軸及坐標原點,就可以得到物體在乙坐標系中的坐標值了。yoxP(4,5)yox(2,4)例1:坐標系平移坐標系xoy的原點o在坐標系xoy的坐標為(2, 4), 則從xoy到xoy的變換矩陣為T2(-2, -4),xoy坐標系中一點P(4, 5) 在xoy坐標系中的坐標矢量為: T2(-2, -4) 4, 5, 1T =2, 1, 1T306.2.2 坐標變換例2:坐標系旋轉xoy坐標系與xoy坐標系原點重合,將xoy坐標系旋轉45就變成了xoy坐標系,則變換矩陣為: yxxyo(o)45。P316.2.2 坐標變換例3:坐標系復合變換求變換矩陣為平移矩陣和旋轉矩陣的乘積矩陣: R2(
12、/4) T2(-2,-4)yyooxx326.2.2 坐標變換三維坐標的推廣前面的推導比較適合于給出了旋轉角度或很容易求出旋轉角度的情況。當新坐標系的旋轉角度沒有給出,且不易計算。這時一般會給出新坐標系的原點坐標和三個坐標軸的方向矢量。XYZWVUo336.2.2 坐標變換把給出的新坐標系的3個方向矢量分別規格化,得到用原坐標系定義的3個正交單位矢量: xyzwvuo記為: 346.2.2 坐標變換要使wuv坐標系的坐標軸與xyz的坐標軸重合,只需:xyzwvuoM356.2.2 坐標變換所以,如果已知wuv坐標系的坐標原點在xyz坐標系中的坐標(x,y,z),及wuv的坐標軸方向矢量,即可求
13、出xyz坐標系中的一點P在wuv坐標系中的坐標: xyZwvuo366.2 坐標變換6.2.1 坐標系6.2.2 坐標變換6.2.3 幾何變換和坐標變換的關系376.2.3 幾何變換和坐標變換的關系兩者的原理及效果是相同的。都是利用變換矩陣來實現對圖形的變換。根據條件的不同,靈活選用幾何變換或坐標變換可以簡化問題。幾何變換:直觀;坐標變換:便于求解復雜問題。386.2.3 幾何變換和坐標變換的關系前面利用幾何變換求解的問題:繞空間中的直線P1P2旋轉的問題。也可以利用坐標變換來實現:以P1點為坐標原點,P1P2為z軸構建一個直角坐標系。則問題就簡化為繞z軸旋轉的問題。如何構造x軸、y軸?利用矢
14、量的運算。P1P2zyx39第6章 三維圖形變換及觀察6.1 三維幾何變換6.2 坐標變換6.3 投影變換6.4 三維觀察6.5 三維裁剪406.3 投影變換6.3.1 概 述 6.3.2 平行投影6.3.3 透視投影416.3.1 概 述在二維屏幕上如何表示三維物體?顯示器屏幕、繪圖紙等是二維的,顯示對象是三維的。解決方法?投影三維顯示設備要把現實世界的三維物體在計算機的二維屏幕上表示出來,必須經過投影變化這一步驟,把物體從三維表示形式轉化為二維表示形式。ABABzyABABzy426.3.1 概 述投影的分類:根據投影中心(COP:Center of Projection)與投影平面之間的
15、距離(投影線是否平行),投影可分為透視投影以及平行投影。投影面COP無窮遠投影線ABAB平行投影投影面投影線ABABCOP透視投影43平面幾何投影分類446.3 投影變換6.3.1 概 述 6.3.2 平行投影6.3.3 透視投影456.3.2 平行投影根據投影線是否垂直于投影平面,平行投影可分為:正平行投影三視圖正軸測投影斜平行投影斜等測斜二測俯視圖主視圖側視圖XYZ461. 正平行投影 三視圖正平行投影:投影方向垂直于投影平面時稱為正平行投影。三視圖正軸測投影zyx三視圖:包括主視圖、俯視圖和側視圖。投影面分別與y軸、 z軸和x軸垂直。即將三維物體分別對正面、水平面和側平面做正平行投影得到
16、三個基本視圖。三視圖的生成就是把形體投影到x=0,y=0,z=0的平面。一般還需將三視圖在一個平面上畫出。zyyxo471. 正平行投影 三視圖主視圖:將三棱柱向xoz面作正平行投影,得到主視圖。設三棱柱上任一點坐標用P(x,y,z)表示,它在xoz面上投影后坐標為P(x,y,z)。其中x=x, y=0, z=z。變換矩陣為:zyxzyyxo主視圖481. 正平行投影 三視圖俯視圖:將三棱柱向xoy面作正平行投影得到俯視圖。設三維物體上任一點坐標用P(x,y,z)表示,它在xoy面上投影后坐標為P(x,y,z)。其中x=x,y=y,z=0。為了使俯視圖和主視圖在一個平面內,就要使投影結果(xo
17、y面)繞x軸旋轉-90;為了使俯視圖和主視圖有一定的間距,還要使旋轉后的投影結果(xoy面)沿z方向平移一段距離 -z0。zyxzyyxo主視圖俯視圖491. 正平行投影 三視圖變換矩陣為:zyyxo主視圖俯視圖zyx501. 正平行投影 三視圖側視圖:將三維形體向yoz面作正平行投影得到側視圖。設三維物體上任一點坐標用P(x,y,z)表示,它在yoz面上投影后坐標為P(x,y,z)。其中x=0,y=y,z=z。為了在xoz平面內表示側視圖,需要將投影結果(yoz面) 繞z軸旋轉90。為了使側視圖和主視圖之間有一定的間距,還要將投影結果(yoz面)沿x軸平移一段距離-x0。yzyx側視圖zyy
18、xo主視圖俯視圖511. 正平行投影 三視圖變換矩陣為:zyx側視圖zyyxo主視圖俯視圖521. 正平行投影 三視圖前面討論的三視圖是在用戶坐標系(UC)中生成的。實際顯示時,還需考慮考慮UCDC的轉換問題。zyxuov側視圖zyyxo主視圖俯視圖531. 正平行投影 三視圖三視圖是工程上常用的圖樣,保留了長度、角度、及物體的形狀等信息,能真實地反映物體的實際尺寸。常用三視圖來測量距離、角度等。但是三視圖缺乏立體感(同時可見的面較少),只有將主視圖、俯視圖和側視圖結合在一起加以抽象,才能獲得物體的空間結構。三視圖的使用者一般需要接受畫法幾何、機械制圖等課程的專業培訓。541. 正平行投影 正
19、軸測投影當正平行投影的投影平面不垂直于坐標軸時,產生的投影稱為正軸測投影。正軸測投影分類:根據軸向變形系數的關系分為正等測、正二測、正三測三類。zyxoyoxz空間直角坐標系在軸測投影面上的投影Ox、Oy、Oz稱為軸測軸;相鄰軸測軸間的夾角稱為軸間角;軸向變形系數定義為:Oxyz的單位坐標矢量的長度。相應的軸測軸上的投影長度。551. 正平行投影 正軸測投影正等測:沿三個軸線具有相同的變形系數。即:x= y= z(投影平面與三個坐標軸的交點到坐標原點的距離都相等)561. 正平行投影 正軸測投影正二測:沿兩個軸線具有相同的變形系數。即:x、y、 z三者中有兩個相等。(投影平面與兩個坐標軸的交點
20、到坐標原點的距離都相等)571. 正平行投影 正軸測投影正三測:沿三個軸線具有各不相同的變形系數。即: x、y、 z三者互不相等。(投影平面與三個坐標軸的交點到坐標原點的距離都不相等)581. 正平行投影 正軸測投影如何獲得正軸測投影的變換矩陣?利用三視圖。正軸測投影的形成過程如下:將空間一立體繞y軸旋轉y角;然后再繞x軸旋轉x;最后向z=0平面做正投影。(其中旋轉角度由軸向變形系數確定)zxy591. 正平行投影 正軸測投影由于這種投影的投影平面不與立體的軸線垂直,同時可見到物體的多個面,因而可產生立體效果。經過正軸測投影變換后,物體線間的平行性不變,但角度有變化。線條比例發生變化。真實感差
21、。(沒有遠小近大的效果)602. 斜平行投影如果投影方向不垂直于投影平面,則稱為斜平行投影。根據軸向變形系數的關系也可分為斜等測、斜二測、斜三測三類。通過不同角度強調物體的某一面。在斜平行投影中,投影平面一般取坐標平面。yzx(xs,ys)(x,y,z)(xp,yp,zp )斜等側:投影平面與一坐標軸垂直;投影線與投影平面成45角。與投影平面垂直的線投影后長度不變。斜二側:投影平面與一坐標軸垂直;投影線與該軸夾角成 arcctg(1/2)角。該軸軸向變形系數為。即與投影平面垂直的線投影后長度變為原來的一半。612. 斜平行投影(方法1)設投影方向矢量為(xp,yp,zp),若形體被投影到xoy
22、平面上,形體上的一點為(x,y,z),要確定其投影(xs,ys)。 可知投影線的方程為: 因為(xs,ys,zs)在z=0平面上,故t = -z/zp, 由此: 若令Sxp=xp/zp, Syp=yp/zp, 則有:yzx(xs,ys)(x,y,z)(xp,yp,zp )622. 斜平行投影(方法2)在觀察(左手)坐標系中求斜平行投影的坐標變換:設投影平面為xcocyc,立方體上的一點P(0,0,1)在平面xcocyc 上的投影坐標為 P(lcos,lsin,0),投影方向為PP,與投影平面的夾角為,其方向矢量為(lcos,lsin,-1)。現考慮任意一點(xe ,ye ,ze) 在平面xco
23、cyc上的投影(xs,ys),因為投影方向與投影線平行,則投影線的方程為:因為zs=0,所以:矩陣形式為:xcyczcoczcycxcPP(0,0,1)l636.3.2 平行投影特性平行投影具有以下特性:平行性:形體上互相平行的線段在投影圖中仍然互相平行。定比性:形體上兩平行線段的長度之比在投影圖中保持不變;形體上平行于坐標軸的線段,在投影圖中具有與相應軸測軸相同的軸向伸縮系數,因而可以度量,而不平行于坐標軸的線段都不能直接測量。實形性:形體上平行于投影面的平面在投影圖中反映實形。646.3 投影變換6.3.1 概 述 6.3.2 平行投影6.3.3 透視投影656.3.3 透視投影透視投影是
24、一種中心投影法,在日常生活中,我們觀察外界的景物時,常會看到一些明顯的透視投影現象。如:我們站在筆直的大街上,向遠處看去,會感到街上具有相同高度的路燈柱子,顯得近處的高,遠處的矮,越遠越矮。這些路燈柱子,即使它們之間的距離相等,但是視覺產生的效果則是近處的間隔顯得大,遠處的間隔顯得小,越遠越密。觀察道路的寬度,也會感到越遠越窄,最后匯聚于一點。這些現象(遠小近大),稱之為透視現象。投影面投影線ABABCOP投影中心(COP:Center of Projection)與投影平面之間的距離有限(投影線平行) 。666.3.3 透視投影在現實世界中,人們通常使用世界坐標系(用戶坐標系)來描述物體。而
25、在觀察物體時(觀察坐標系),一般采用左手坐標系。指定COP為原點,定義z軸從原點開始,指向屏幕內部,表示深度。xyz67AABBCCccbbaaE6.3.3 透視投影產生透視的原因,可用下圖來說明:686.3.3 透視投影若連接abc及abc,它們的連線匯聚于一點。實際上,ABC與ABC的連線是兩條互相平行的直線,這說明空間任何一束不平行于投影平面的平行線的投影將匯聚在一點,即abc與abc的連線,必交于一點,這點我們稱之為滅點。EABCABCacbcba696.3.3 透視投影706.3.3 透視投影主滅點:平行于坐標軸的平行線產生的滅點。主滅點數是和投影平面切割坐標軸的數量相對應的。若投影
26、平面僅切割z軸,則z軸是投影平面的法線。平行于xy平面的直線也平行于投影平面,因而沒有滅點,所以“只在z軸上”有一個主滅點。yxzo716.3.3 透視投影 一點透視透視投影的視線是從視點(觀察點)出發,視線是不平行的,透視投影按照主滅點的個數分為一點透視,兩點透視和三點透視。人眼從正面去觀察一個立方體,當z軸與投影平面垂直時,另兩根軸ox,oy軸平行于投影平面。這時的立方體透視圖只有一個主滅點,即與投影面垂直的那組平行線的透視投影交于一點。zxyE726.3.3 透視投影 兩點透視人眼觀看的立方體是繞y軸旋轉一個角度之后,再進行透視投影。三坐標軸中oy軸與投影平面平行,這時除平行于oy軸的那
27、組平行線外,其它兩組平行線的透視投影分別在投影平面的左右兩側,作出的立方體透視圖產生兩個主滅點。zxyE736.3.3 透視投影 三點透視投影平面與三坐標軸均不平行。這時的三組平行線均產生主滅點。zxyE741. 一點透視推導假設投影中心為原點,投影面平行于xy平面,方程為z=D。設物體上一點 P(x1,y1,z1),它的投影點為P(x,y,z),則z=D。投影線的方程為:把z=D代入的,得 t = D/z1 ,則: xyDzPP751. 一點透視由上面分析,一點透視投影的變換矩陣為:xyDzPP注意此時所得到的是在VC中的坐標,而不是所要求的最終坐標(在DC中坐標)。761. 一點透視若D固
28、定,z1,則x,y;即對象越遠,成像越小。若視點取無窮遠(D=)時,則: x=x1 ,y=y1,此時,透視投影變為正平行投影。Doxzz1P(x,y,z)P(x1,y1,z1)投影面Doyzz1P(x,y,z)P(x1,y1,z1)投影面xyDzPP776.3.3 透視投影在變換矩陣中,第四行的p,q,r起透視變換作用;當p、q、r中有一個不為0時即為一點透視投影。當p、q、r中有兩個不為0時的透視變換即為二點透視。若p、q、r都不為0,則可得到有三個滅點的三點透視。zxyE旋轉物體,獲得兩點、三點透視圖。786.3.3 透視投影透視投影的技巧在生成一點透視圖時,為了避免將物體安置在坐標系原點
29、,而產生中圖所示的透視效果,通常在透視變換前,先將立體作一平移變換。對于兩點或三點透視,也可利用平移、旋轉等操作來獲得較好的投影效果。主要是考慮物體的軸線。zxyE796.3.3 透視投影另一種推導透視投影變換中,物體采用用戶坐標系描述;觀察坐標系為左手系,視點為坐標原點, zV軸沿著視線方向OVO ;投影位于屏幕坐標系中。三種坐標系的關系如圖所示。zxyozvxvyvzDxDyDoDovP用戶坐標系采用右手球面坐標系。坐標圓點在o點;視點的直角坐標為o(a,b,c), oo的長度為R, oo和z軸的夾角為, o點在xoy平面內的投影為P(a,b), oP和x軸的夾角為。806.3.3 透視投
30、影另一種推導用戶坐標系采用右手球面坐標系。坐標圓點在o點;視點的直角坐標為o(a,b,c), oo的長度為R, oo和z軸的夾角為,o點在xoy平面內的投影為P(a,b), oP和x軸的夾角為。視點的球面坐標表示為O(R,)。視點的球面坐標和直角坐標的關系為:zxyozvxvyvzDxDyDoDovP816.3.3 透視投影另一種推導可見,求物體的透視投影其實就是已知在UC中物體的坐標,求出其在DC中的坐標。根據坐標變換的關系,實際上就是求出DC坐標系轉換為UC坐標系的變換矩陣。(設d為oVoD的長度)(推導過程略)zxyozvxvyvzDxDyDoDovP826.3.3 透視投影另一種推導用
31、戶坐標系到屏幕坐標系的投影變換矩陣為:其中, d為oVoD的長度、R為ooD的長度。836.3.3 透視投影另一種推導將不同的,值代入,可得到一點、二點、三點透視圖。zxyozvxvyvzDxDyDoDovP846.4.2 透視投影具有真實感。與投影面不平行的平面中,線條的平行關系、長度、及角度會發生改變。85第6章 三維圖形變換及觀察6.1 三維幾何變換6.2 坐標變換6.3 投影變換6.4 三維觀察6.5 三維裁剪866.4 三維觀察回顧前面介紹的內容:二維圖元生成;二維裁剪;幾何變換、坐標系變換;投影;所謂“三維觀察”,簡單的說就是通過計算機構建虛擬場景,并在二維平面上顯示觀察結果:在世
32、界坐標系中建立場景;根據觀察的位置、姿態建立觀察坐標系,生成投影圖;把投影結果顯示在平面上(窗口視區的轉換)。876.4 三維觀察從坐標變換的角度看,兩者是等價的:坐標系變換投影(模型-視圖矩陣、投影矩陣)前面的推導中:物體和相機(觀察坐標系)在 UC/WC中定義;投影圖的生成在觀察坐標系(VC)中進行;如果需要多角度觀察物體,怎么辦?相機不動,物體動;物體不動;相機動。xCyCzCxyz886.4 三維觀察三維觀察的流程如下:1. 視變換;2. 三維裁剪;3. 投影;4. 窗口視區變換。uVPNvcopuVPNvVRPzxoy891. 視變換視變換的目的是:求出模型-視圖矩陣。把以cop為原
33、點,u,v,VPN為坐標軸方向的觀察坐標系變換成世界坐標系,便于進行投影變換。可利用基本幾何變換的組合來實現;也可直接利用坐標系變換來實現。uVPNvcopuVPNvVRPzxoyzxyUCuvVPNVC901. 視變換 相關參數在進行視變換時,需要一系列的參數來定位相機(投影面的位置、方向和投影中心的位置)。這些參數用世界坐標系來定義。定義視平面(也稱投影面):由平面上的一點和平面的法矢量來定義。視平面上的一點為視圖參考點; (VRP:View Reference Point)視平面法矢量為平面方向。(VPN:View Plane Normal)VPNVUPVRPuv視平面窗口 COP視平面
34、uVPNvcopuVPNvVRPzxoy911. 視變換 相關參數定義觀察坐標系:(用于投影變換)軸VPN:一根坐標軸,方向就是視平面的法線方向;軸 v:用一條不平行于VPN的視圖上方矢量(VUP:View Up)在視平面上的投影來構造,即:v=VUP-(VPNVUP)VPN;軸 u:使得u, v, VPN形成一個左手坐標系,即VPN, v, u形成一個左手坐標系,即:u=VPNv;坐標原點:COP;VPNVUPVRPuv視平面窗口 COP視平面921. 視變換 相關參數視圖上方矢量(VUP:View Up):用于確定相機繞視線方向(VC的z軸)的旋轉角度。Up vectorProjectio
35、n of Up vectorLook vectorzxyUCuvVPNVC932. 三維裁剪窗口和投影中心定義了一個無限四棱錐體,稱為視體積;只有在視體積內的物體才會被投影到視平面窗口內并最終顯示出來;通過制定平行于視平面的前后剪取平面來截取視體積,以刪除離視平面過近和過遠的物體;這樣視體積是有限的。后剪取窗口前剪取窗口BF視平面窗口COP942. 三維裁剪先對物體在視體積內的部分進行三維剪取。第一步是求出視體積的6個平面方程,然后進行裁剪。為了使裁剪過程相對方便一些,可對視體積進行縮放變換,把視體積變成由以下6個平面構成:前平面:z=a;后平面:z=1;頂平面:y=z;底平面:y=-z;左平
36、面:x=-z;右平面:x=z;zyxFB前視窗口后xyzy=zz=az=1y=-z952. 三維裁剪然后進行三維物體的裁剪;最后進行縮放變換的逆變換,把物體恢復原狀。zyxFB前視窗口后xyzy=zz=az=1y=-z963. 投影裁剪后的物體還需經過投影變換。根據不同投影的要求,確定相關參數。如:若采用透視投影,需要決定透視變換矩陣中的D值,即投影面(視平面)到投影中心的距離D。zxyUCuvVPNVC怎樣生成不同的投影圖?改變VPN、VUP。974. 窗口視區變換在觀察坐標系中定義的確定顯示內容的區域(通常是一個矩形)稱為窗口(Window)。顯然此時窗口內的圖形是用戶希望在屏幕上輸出的。
37、在設備坐標系中定義的輸出圖形的區域(通常也是一個矩形)稱為視區(Viewport)。視區和窗口的大小可以不相同。一般情況下,用戶把窗口內感興趣的圖形輸出到屏幕上相應的視區內。圖形輸出需要進行從窗口到視區的變換,只有窗口內的圖形才能在視區中輸出,并且輸出的形狀要根據視區的大小進行調整,這稱為窗口視區變換(Window Viewport Transformation,WVT)。986.4 三維觀察小結視變換截取視體積,執行三維剪取剪 取執行投影,把三維物體投影到視平面上投影變換窗口內圖像變換到屏幕坐標系加以顯示窗口視區變換用三維世界坐標系定義物體,相機把物體變換到觀察坐標系,原點為觀察者,觀察方向
38、為Z軸996.4 三維觀察何時裁剪?投影之前裁剪:三維裁剪優點:只對可見的物體進行投影變換;缺點:三維裁剪相對復雜。投影之后裁剪:二維裁剪優點:二維裁剪相對容易;缺點:需要對所有的物體進行投影變換。1006.4 三維觀察在投影之前裁剪的理由:三維物體的表面通常被離散表示成多邊形或折線,而對這類簡單圖元,三維裁剪同樣比較簡單。三維物體在顯示過程中需要被消隱,做這個工作要有物體的深度信息,所以必須在投影之前完成。 消隱很費時,如果在此之前裁剪(或部分裁剪)掉不可見的圖形,可使需要消隱的對象減少。1016.4 三維觀察小結在變換開始時,輸入視變換參數:視圖參考點 (VRP),視平面法矢量(VPN),
39、視圖上方矢量(VUP)和投影中心(cop);然后輸入視窗口在u,v, VPN坐標系中 的位置:輸入窗口左下角的位置(umin,vmin)和右上角的位置(umax,vmax);以及輸入前后剪取平面與視平面的距離F和B。注意以上參數所處的坐標系。VPNVUPVRPuv視平面窗口 COP視平面zyxFB前視窗口后1026.4 三維觀察小結根據應用的不同,可以采用不同的“接口”(參數)來推導變換矩陣。例如:飛行模擬器控制飛機的3個角度:俯沖、側轉、偏航,這3個角度都是相對于飛行器的質量中心,并且相對于對齊飛行器各軸的坐標系。在天文觀測中,更多的是使用極坐標軸。因此,不同的API中所提供的接口參數可能不
40、同,但原理和我們前面的介紹是一致的。1036.4 三維觀察OpenGLThere are three aspects of the viewing process, all of which are implemented in the pipeline:Positioning the cameraSetting the model-view matrixSelecting a lensSetting the projection matrixClippingSetting the view volume1046.4 三維觀察OpenGLCTM in OpenGLOpenGL has a mo
41、del-view and a projection matrix in the pipeline which are concatenated together to form the CTM;Can manipulate each by first setting the correct matrix mode.1056.4 三維觀察OpenGLIn OpenGL the model-view matrix is used toPosition the cameraCan be done by rotations and translations but is often easier to
42、 use gluLookAt Build models of objects The projection matrix is used to define the view volume and to select a camera lens1066.4 三維觀察OpenGLIn OpenGL, initially the object and camera frames are the sameDefault model-view matrix is an identityThe camera is located at origin and points in the negative
43、z directionOpenGL also specifies a default view volume that is a cube with sides of length 2 centered at the originDefault projection matrix is an identity107Default projection is orthogonal6.4 三維觀察OpenGLclipped outz=02108The LookAt FunctionThe GLU library contains the function gluLookAt to form the
44、 required modelview matrix through a simple interfaceNote the need for setting an up directionStill need to initialize Can concatenate with modeling transformationsExample: isometric view of cube aligned with axesglMatrixMode(GL_MODELVIEW):glLoadIdentity();gluLookAt(1.0, 1.0, 1.0, 0.0, 0.0, 0.0, 0.,
45、 1.0. 0.0);109gluLookAtglLookAt(eyex, eyey, eyez, atx, aty, atz, upx, upy, upz)110Other Viewing APIsThe LookAt function is only one possible API for positioning the cameraOthers includeView reference point, view plane normal, view up (PHIGS, GKS-3D)set_view_reference_point(x,y,z);set_view_plane_norm
46、al(nx,ny,nz);set_view_up(vup_x,vup_y,vup_z);Yaw, pitch, rollElevation, azimuth, twistDirection angles1116.4 三維觀察OpenGLOpenGL Orthogonal Viewing:glOrtho(left,right,bottom,top,near,far)near and far measured from camera;1126.4 三維觀察OpenGLOpenGL Perspective:glFrustum(left,right,bottom,top,near,far)并沒有要求視
47、體積關于z軸對稱。1136.4 三維觀察OpenGLUsing Field of View:With glFrustum it is often difficult to get the desired view;gluPerpective(fovy, aspect, near, far) often provides a better interface。aspect = w/hfront plane114OpenGL執行的次序:OpenGL三維觀察編程的次序:1. 操作投影矩陣,設置投影方式和參數(視坐標系窗口坐標)2. 操作ModelView矩陣,設置觀察方向和參數(世界坐標視坐標)3.
48、 操作ModelView矩陣,設置物體的位置(局部坐標世界坐標)4. 給出待繪制物體的坐標(在局部坐標系下的坐標)6.4 三維觀察OpenGL1156.4 三維觀察OpenGL前面介紹的OpenGL中的投影函數只能實現正投影(視線方向垂直于視平面)。OpenGL并沒有直接提供斜投影視圖的函數。我們可以通過自己設置投影矩陣,或通過修改某個標準視圖來得到斜投影的視圖。前面的OpenGL中設置投影的函數glFrustum、gluPerpective中并沒有提及“投影面”的信息。對投影視圖有沒有影響?假設投影面為z=-1;投影方向為z軸負向。zxyUCuvVPNVC1166.4 三維觀察OpenGL投
49、影歸一化:所謂投影歸一化是指把所有的投影都變換為正交投影。簡單的說就是先把對象變形,使得變形后的對象經正交投影后得到與原對象所要求的投影一樣的視圖。這樣除了可以利用基本幾何變換來實現歸一化以外,還可以把關于視體積的裁剪簡化為關于一個正則視體積的裁剪,從而大大簡化裁剪和消隱的過程。COPz=zminz=zmaxz=1z=-1x=-1x=1117第6章 三維圖形變換及觀察6.1 三維幾何變換6.2 坐標變換6.3 投影變換6.4 三維觀察6.5 三維裁剪1181. 三維剪取體的形狀通常的三維剪取體有長方體和棱錐臺體。 其中長方體適用于平行投影,棱錐臺體適用于透視投影,這兩種剪取體均為六面體,包括左側面、右側面、頂面、底面、前面和后面。其他形狀的剪取體并不常見。頂面左面后面右面前面底面yxz頂面左面后面右面前面底面yxz1192. Cohen-
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 銀冶煉過程中的生產質量控制方法考核試卷
- 烘焙坊設計與布局考核試卷
- 軟件項目管理工具與實踐考核試卷
- 后鼻韻母教學設計
- 校園急救事故案例分析及應對策略
- 淺析外科換藥
- 章小緩口腔健康環境研究
- 東南亞消費行業4月跟蹤報告:印尼與泰國經濟增長放緩
- 數字化銀行零售業務營銷轉型中的金融產品創新報告2025
- 針對金融衍生品市場2025年創新風險的保險產品設計與應用報告
- 牡丹的藥用價值課件
- kW殼管式干式蒸發器設計
- 新進員工三級教育卡(參考)范本
- 最新藥店員工手冊
- 系列螺桿冷水機組操作培訓
- 五金用樣品承認書
- 催化劑對異氰酸酯反應活性的影響
- 國家開放大學《C語言程序設計》綜合測試題參考答案
- 老年人生活自理能力評估表
- 火電機組能耗指標分析指導性意見
- 四年級下冊英語外研一起點知識要點匯總
評論
0/150
提交評論