圖像處理三維圖形變換_第1頁
圖像處理三維圖形變換_第2頁
圖像處理三維圖形變換_第3頁
圖像處理三維圖形變換_第4頁
圖像處理三維圖形變換_第5頁
已閱讀5頁,還剩44頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、標準的繪制流程由一系列計算組成輸入是:多邊形輸出是保存在緩沖區(qū)的圖像主要涉及的操作是:三維變換與光照!OriginalRotationUniform ScaleNonuniform ScaleShearImages from Conan The Destroyer, 1984利用平移矩陣,將點V=(x,y,z)T平移至V=(x+Tx,y+Ty,z+Tz)T處,表示為V=V+T利用縮放矩陣,將點V=(x,y,z)T縮放(d1,d2,d3)倍其中對角線上的元素表示對應(yīng)坐標系分別放大(di1)或者縮小了(di1)的量二維旋轉(zhuǎn)隱含著繞平面軸旋轉(zhuǎn)二維旋轉(zhuǎn)隱含著繞平面軸旋轉(zhuǎn)cossinsincosRcos

2、sin0sincos0001Rcossin0sincos0001zRcos0sin010sin0cosyR1000cossin0sincosxR“Z 正對面”可以由軸平行旋轉(zhuǎn)復(fù)合而得可以用歐拉角表示(非唯一)也可以用四元數(shù)表示 zyxRRRRrot( , , )x y zR zyxRRRR矩陣復(fù)合可完成對空間點的任意操作矩陣乘法不滿足交換率,因此復(fù)合的次序非常重要!例如:先縮放后平移先平移后縮放通常情況下,給出的旋轉(zhuǎn)矩陣是繞原點旋轉(zhuǎn)的。因此首先要將物體平移至原點,進行旋轉(zhuǎn),再平移回來。適合于人體動畫Mike Marr, COS 426,Princeton University, 1995單個物

3、體可能在場景出現(xiàn)多次三維數(shù)據(jù)可以配備多個變換建模時所采用的坐標系選取物體上或靠近物體的某一點作為原點,物體上的其他點相對于該點的坐標進行表示針對物體的局部坐標系舉例:選取立方體的某一個頂點作為原點,建立局部坐標系 y z x 全局坐標系所有物體組成一個場景,場景坐標系稱為世界坐標系所有物體必須變換至該坐標系,以確定彼此之間的相對空間位置將物體放至場景內(nèi)等價于定義一個從物體局部坐標系至世界坐標系的變換矩陣場景需要定義光照照相機坐標系統(tǒng)決定照相機參數(shù)和可見域必須包括 視點位置 視線 視點坐標系 投影平面 視域 其他(可選)Eye position(focal point) View plane世界

4、坐標系相機矩陣相機矩陣投影矩陣投影矩陣相機坐標Device coordinates視區(qū)矩陣視區(qū)矩陣窗口坐標物體坐標模型矩陣模型矩陣ModelView 變換變換局部物體坐標世界坐標相機坐標設(shè)備坐標窗口坐標系統(tǒng)投影與裁剪將局部坐標系變換到世界坐標系包括縮放、旋轉(zhuǎn)、平移等將世界坐標系中的一點變換至照相機坐標系可以分成平移和旋轉(zhuǎn)兩部分視域、投影方式、屏幕分辨率投影物體首先與視域求交決定可見部分平行投影平行投影透視投影透視投影將多邊形的朝向與視點或投影中心相比較,去除那些不可見多邊形可見性測試在視見空間內(nèi)進行。計算每一個多邊形的法向,并檢查法向與視線方向點積后值的符號當且僅當視域體內(nèi)的物體將被投影.決定

5、物體的哪一部分將被投影,哪一部分被剔除的過程叫做裁剪.Z=0 plane將物體從世界坐標系變換至屏幕坐標系,可以看成是:將物體首先作相機變換,再作透視變換:一般還需要一個視區(qū)(視口)變換(viewport transformation)將視域歸一化視域與物體求交,求交后的物體投影,并按照相應(yīng)的視見區(qū)域大小xmin,xmax、 ymin,ymax、 zmin,zmax進行縮放相機變換: 指定照相機位置和方向(也叫照相機坐標系統(tǒng))模型變換: 將物體在場景中移動,也可以視為從局部坐標系到全局坐標系ModelView變換: 相機變換和模型變換的混合.投影變換: 定義視域體并指向投影視區(qū)變換: 將二維投

6、影后的場景變換到繪制窗口.一系列變換的合成可通過矩陣的嵌套完成關(guān)于任意一點的縮放:關(guān)于任意軸的旋轉(zhuǎn)12311231121.).().)(.(TTTTTTPTPTTTTTPTTTTQnnnnnn)()()()()(yzxzyLRRRRRR),(),(),(zyxzyxzyxdddTsssSdddTModelView變換式建模矩陣M和相機變換V的乘積 C = VM所有在OpenGL中的變換函數(shù)只能設(shè)置modelview 矩陣. 因此, ModelView 在物體被操作之前被調(diào)用.例如: glMatrixMode (GL_MODELVIEW); glLoadIdentity (); glScalef

7、 (2.0f, 2.0f, 2.0f); DrawScene ();矩陣堆棧的頂部矩陣就是當前的ModelView 矩陣 (C). glPushMatrix (): 將當前的矩陣加入到矩陣堆棧glPopMatrix (): 將頂部矩陣刪除,并將所有其他矩陣往上移動一位。矩陣堆棧的好處:允許一系列位置(代表了坐標系統(tǒng))保留下來,并在需要的時候使用它們。M1M2M3Transform demo建模變換: glLoadIdentity : C I glLoadMatrix(m) : C m glMultiMatrix(m) : C C m glRotatef(q,x,y,z) : C C RL(q)

8、 glTranslatef(x,y,z) : C C T(x,y,z) glScalef(x,y,z) : C C S(x,y,z)最后定義的變換最先被執(zhí)行.照相機坐標系統(tǒng): 也叫視點坐標系統(tǒng)或者視見坐標系統(tǒng). 它表示了在照相機后面看場景的坐標關(guān)系。X-Y平面是投影面(也叫平面) ,照相機一般往負z方向看。相機變換的兩種方法保持相機不變,將物體(在世界坐標系統(tǒng)中)繞著相機旋轉(zhuǎn)。保持物體不變,將相機在世界坐標系統(tǒng)中變換。相機變換是物體變換的逆變換。yxz-zeye將相機放置到世界坐標系統(tǒng)中定義相機變換 glMatrixMode (GL_MODELVIEW); glLoadIdentity ();

9、 gluLookAt (eye.x, eye.y, eye.z, look.x, look.y, look.z, up.x, up.y, up.z);upeyelookYZXWCSxyzP0Q0VCS),(),( 1000neyeveyeueyedddwherednnndvvvduuuVzyxzzyxyzyxxzyx坐標系統(tǒng), 形成了.:,eyen , v , uunvnupulookeyenvun-neyelook相機變換:Void DisplayScene () glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0f, 0.0f, 0.0f); glL

10、oadIdentity (); gluLookAt (0.0, 0.0, 10.0, 0.0, 0.0, -100.0, 0.0, 1.0, 0.0); glBegin (GL_TRIANGLE); glVertex3f (10.0f, 0.0f, 0.0f); glVertex3f (0.0f, 10.0f, 0.0f); glVertex3f (-10.0f, 0.0f, 0.0f); glEnd(); glFlush ();gluLookAt 函數(shù)顯式地定義相機。另外一種方法式將場景進行旋轉(zhuǎn)(glRotate)和平移(glTranslate) 同時,將相機置于缺省的世界坐標系統(tǒng).旋轉(zhuǎn)和平

11、移的累積效果構(gòu)成了最終的相機變換. 當然, glTranslate 和 glRotate也可用作其他用途/viewing a scene centered at origin from +X direction:Void DisplayScene () glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0f, 0.0f, 0.0f); glLoadIdentity (); glTranslatef (0.0, 0.0, -10.0); glRotatef (-90.0, 0.0, 1.0, 0.0); / glBegin (GL_TRIANGLE); gl

12、Vertex3f (10.0f, 0.0f, 0.0f); glVertex3f (0.0f, 10.0f, 0.0f); glVertex3f (-10.0f, 0.0f, 0.0f); glEnd(); glFlush ();投影變換設(shè)置視域體,從而定義裁剪面和投影矩陣以及投影方式。投影矩陣在ModelView矩陣之后被實行,因此,視域體是定義在相機坐標系統(tǒng)中的。透視投影與平行投影定義正交視域體: glOrtho (left, right, bottom, top, near, far); 或者: glOrtho2D (left, right, bottom, top);定義投影矩陣: g

13、lMatrixMode (GL_PROJECTION); glLoadIdentity ( ); glOrtho (left, right, bottom, top, near, far)YZX成像平面視域體VCS(Left, righ, bottom, top) 定義視域體的最小、最大的 X 和Y坐標; (near, far) 定義視域體的近和遠平面到X-Y平面的距離.視域四堎錐的定義: glFrustum (left, right, bottom, top, near, far)視域體的形成是:將原點與前面的四個頂點連接起來,并由Z方向的近平面和遠平面限制。YZX成像平面視域四堎錐原點投影

14、矩陣 glMatrixMode (GL_PROJECTION); glLoadIdentity (); glFrustum (left, right, bottom, top, near, far)視域體的定義 glMatrixMode (GL_PROJECTION); glLoadIdentity (); gluPerspective (angle, aspect, near, far)YZXangle: y方向張的視角aspect: 方正率 (成像平面的寬度/高度).Vvv demo視區(qū)是窗口的繪制區(qū)域,特殊的視區(qū)是全屏幕缺省視區(qū)是窗口本身視區(qū)矩陣將投影后的成像平面投到視區(qū) glViewport (GLint left, GLint bottom, GLint width, GLint height)(left, bottom, width, height) 定義在窗口系統(tǒng)中(象素級)窗口窗口視區(qū)視區(qū)(left, bottom)(right, top)可隨意裝入矩陣: GLfloat m16 = 1.0, 0.0, 0.0, ; glLoa

溫馨提示

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

最新文檔

評論

0/150

提交評論