版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、三維圖形變換,顏色,可見光的波長 400-780 nm 三色原理用三種顏色表示:R,G,B. 減法顏色系統(tǒng): Cyan, Magenta, Yellow CMY 常用于打印 加法顏色系統(tǒng): R+G+B=White CRT 顯示器的基本元素,1,2,顯示器與緩沖區(qū),彩色CRT包含顏色點陣的數(shù)組象素 RGB 三元組 R, G, 和B 由每個象素單獨控制 每個分量8個比特 緩沖區(qū)存儲將顯示在顯示器上的內(nèi)容 一般在顯卡內(nèi)存中,繪制流程,標準的繪制流程由一系列計算組成 輸入是:多邊形 輸出是保存在緩沖區(qū)的圖像 主要涉及的操作是:三維變換與光照!,向量幾何基礎(chǔ),所有點和向量都相對于某個坐標系統(tǒng)定義。,標量
2、:數(shù)值、實數(shù)等. 點:二維或者三維位置,表示了幾何點在三維坐標系統(tǒng)中的位置。 向量:帶長度的有向線段,無物理位置,V,P,X,Y,Z,V,向量,向量是一列數(shù)字,表示如下:,向量幾何:基本操作,加法: 點與向量的加法: 點的減法: 向量縮放,v1,v2,v1+v2,v,p,q=p+v,v,p2,p1,向量幾何的其他操作,線性混合: 長度與距離: 單位向量: 向量歸一化:,向量幾何:點積,定義: 屬性: 向量之間的夾角: 垂直向量:,q,a,b,向量幾何:投影,向量投影: 投影與坐標系,v2,v1,P 0,v2,v1,P 0,i,j,k,向量幾何:叉積,V1和v2的叉積是一個新的向量v,它與 v1
3、和 v2都垂直,其范數(shù)為: 屬性:,a,b,axb,area=|axb|,叉積與點積的區(qū)別,兩個向量的點積是一個數(shù) 兩個向量的叉積仍然是一個向量,點與向量的坐標系統(tǒng),坐標系統(tǒng)由三個正交的向量 i, j, k 以及原點O組成. 向量的表示: 點的表示:,i,j,k,O,線的表示方法,二維解析表達形式 : 三維解析表達形式 : 參數(shù)形式 : 線段,平面表示,解析表達式 參數(shù)表達式 平面法向 解析形式: 參數(shù)形式: 多邊形法向:,p0,v2,v1,v2,p1,p2,p3,p4,平面與法向,三點決定一個平面,法向是垂直平面的向量,平面方程,給定垂直平面的法向N=(A,B,C)T,以及平面上任意一點(x
4、0,y0,z0),我們能夠得到未知系數(shù)D,并確定相應(yīng)的平面方程,齊次坐標,一個統(tǒng)一的點與向量表示方法 向量: 點: 統(tǒng)一的形式:,齊次坐標,右邊的四元組稱為齊次坐標,齊次坐標,非齊次坐標,點的空間坐標與齊次坐標,三維空間上的點(x,y,z)T可以表示為四維空間中的一個齊次點(x,y,z,w)T,其中w=1 用齊次坐標表示空間中的點,能夠方便進行各種運算。同樣的,可將矩陣寫作齊次形式,即將原來的3x3大小的矩陣擴充為4x4大小的矩陣。例如,I的齊次形式為:,空間坐標系到齊次坐標系的轉(zhuǎn)換,點的齊次坐標表示 齊次向量!坐標形式(w0),幾何求交,線段求交 平行? 求交點的計算 通過三個點的園: 主要
5、任務(wù)是計算中心點 線與線求交、線與面求交: 參數(shù)解 可用于裁剪 線與多邊形求交 邊界計算 光線與多邊形求交,矩陣,矩陣是n個向量的并列表示,矩陣的加法,將矩陣對應(yīng)的元素直接相加,矩陣減法,將矩陣對應(yīng)的元素直接相減,矩陣與向量的乘法,矩陣與向量相乘 注意:矩陣的列數(shù)必須與向量的行數(shù)相等,矩陣乘法,兩個矩陣的乘法可以分解為第一個矩陣與第二個矩陣中的每一列向量的乘法,矩陣乘法,如果A和B分別為mxp以及pxn大小的矩陣,則AxB為mxn矩陣 一般的,矩陣乘法不滿足交換率,即AxB BxA 如果I是單位陣,則AxI = IxA = A I具有如下形式:,方陣的逆和行列式的值,方陣A的逆記為A-1:A-
6、1A=AA-1=I 如果方陣對應(yīng)的行列式的值det(A)0,則A不可逆 如果A是3x3的方陣,則,游戲中的矩陣,三維圖形學(xué)中一般使用4x4矩陣 矩陣乘法:,Point3數(shù)據(jù)結(jié)構(gòu),struct Point3 Union struct float x,y,z; /分量形式 ; float v3; / 數(shù)組形式 ; Point3() ; /缺省構(gòu)造函數(shù) Point3 (float X, float Y, float Z) /帶參構(gòu)造函數(shù) x = X; y=Y; z=Z / 更多 ;,Plane3數(shù)據(jù)結(jié)構(gòu),struct Plane3 Point3 n; / 平面法向 float d; /原點垂直法向距
7、離 Plane3() /缺省構(gòu)造函數(shù) plane3(float nX,float nY, float nZ, float D) n(nX, nY, nZ); d=D /更多: 從三點構(gòu)在一個平面,從多邊形構(gòu)造一個平面等等 ;,struct matrix4 union struct float _11,_12,_13,_14; float _21,_22,_23,_24; float _31,_32,_33,_34; float _41,_42,_43,_44 ;/分量表示 float m44;/矩陣表示 ; /帶參構(gòu)造函數(shù) matrix4 (float IN_11, float IN_12,
8、float IN_13, float IN_14, float IN_21, float IN_22, float IN_23, float IN_24, float IN_31, float IN_32, float IN_33, float IN_34, float IN_41, float IN_42, float IN_43, float IN_44) _11=IN_11; _12=IN_12; _13=IN_13; _14=IN_14; _21=IN_21; _22=IN_22; _23=IN_23; _24=IN_24; _31=IN_31; _32=IN_32; _33=IN_3
9、3; _34=IN_34; _41=IN_41; _42=IN_42; _43=IN_43; _44=IN_44; ;,Matrix4數(shù)據(jù)結(jié)構(gòu),三維變換,一個變換通常用4x4矩陣表示. 對一個點或者向量進行變換等價于將一個矩陣乘以該點或向量的齊次坐標. 向量的嵌套: 如矩陣乘法,左手坐標系-右手坐標系,右手坐標系:當右手四指沿x軸至y軸方向握緊,拇指所指的方向即為+z方向(缺省坐標系) 左手坐標系:判斷方法類似,用左手,平移,利用平移矩陣,將點V=(x,y,z)T平移至V=(x+Tx,y+Ty,z+Tz)T處,表示為V=V+T,縮放,利用縮放矩陣,將點V=(x,y,z)T縮放(d1,d2,d3
10、)倍 其中對角線上的元素表示對應(yīng)坐標系分別放大(di1)或者縮小了(di1)的量,旋轉(zhuǎn),矩陣R是旋轉(zhuǎn)矩陣,如果R的轉(zhuǎn)置等于R的逆,即RTR=RRT=I 每個矩陣R對應(yīng)一單位長度的旋轉(zhuǎn)軸U和旋轉(zhuǎn)角度。該對應(yīng)并不是唯一的,例如-U也是對應(yīng)R的旋轉(zhuǎn)軸,繞x軸旋轉(zhuǎn),當點繞x軸以逆時針方向(從x軸正方向向原點看)旋轉(zhuǎn)角時,旋轉(zhuǎn)矩陣為:,x,y,z,繞y軸旋轉(zhuǎn),當點繞y軸以逆時針方向旋轉(zhuǎn)角時,旋轉(zhuǎn)矩陣為:,繞z軸旋轉(zhuǎn),當點繞z軸以逆時針方向旋轉(zhuǎn)角時,旋轉(zhuǎn)矩陣為:,旋轉(zhuǎn),令 c=cos(q) 且 s=sin(q) 沿X-軸s: 沿Y-軸s: 沿 Z-軸:,矩陣復(fù)合,矩陣復(fù)合可完成對空間點的任意操作 矩陣乘法
11、不滿足交換率,因此復(fù)合的次序非常重要! 例如:先縮放后平移先平移后縮放 通常情況下,給出的旋轉(zhuǎn)矩陣是繞原點旋轉(zhuǎn)的。因此首先要將物體平移至原點,進行旋轉(zhuǎn),再平移回來。,沿平行坐標軸的直線旋轉(zhuǎn)物體,如何得到變換矩陣: 將物體平移至原點 繞坐標軸旋轉(zhuǎn) 將物體重新平移至其原先的位置,舉例,將盒子繞平行于z軸且經(jīng)過P=(Tx,Ty,Tz)T點的直線旋轉(zhuǎn),初始狀態(tài),結(jié)束狀態(tài),舉例(續(xù)),平移至原點 旋轉(zhuǎn) 再平移回來,變換矩陣,將每一步的基本變換矩陣連接,得到總的變換矩陣,圖形流水線中的物體坐標系,建模時所采用的坐標系 選取物體上或靠近物體的某一點作為原點,物體上的其他點相對于該點的坐標進行表示 針對物體的
12、局部坐標系 舉例:選取立方體的某一個頂點作為原點,建立局部坐標系,圖形流水線中的世界坐標系,全局坐標系 所有物體組成一個場景,場景坐標系稱為世界坐標系 所有物體必須變換至該坐標系,以確定彼此之間的相對空間位置 將物體放至場景內(nèi)等價于定義一個從物體局部坐標系至世界坐標系的變換矩陣 場景需要定義光照,圖形流水線中的照相機坐標系統(tǒng),照相機坐標系統(tǒng)決定照相機參數(shù)和可見域 必須包括 視點位置 視線 視點坐標系 投影平面 視域 其他(可選),視點和視線方向,從C沿著N方向看,投影平面,照相機坐標系,視域四棱錐,坐標軸系統(tǒng),世界坐標系,相機矩陣,投影矩陣,相機坐標,Device coordinates,視區(qū)
13、矩陣,窗口坐標,物體坐標,模型矩陣,ModelView 變換,局部物體坐標,世界坐標,相機坐標,設(shè)備坐標,窗口坐標系統(tǒng),投影與裁剪,模型變換,將局部坐標系變換到世界坐標系 包括縮放、旋轉(zhuǎn)、平移等,相機變換,將世界坐標系中的一點變換至照相機坐標系 可以分成平移和旋轉(zhuǎn)兩部分,參數(shù)確定,用戶給出C、N、V,U通過下面的公式計算:U=NXV,則N、U和V組成一個左手坐標系 一般地,用戶大致給出V的方向,記為V,(V不需要垂直于N),然后計算V:,投影變換,視域、投影方式、屏幕分辨率 投影物體首先與視域求交決定可見部分,平行投影,透視投影,投影過程,投影:n維空間上一點變換至m(n)維空間 m=n-1且
14、n=3的情況,P,Q,平行投影,將物體從三維場景投影到屏幕 投影矩陣:,Z=0 plane,正交相機模型,透視投影,將物體從三維場景投影到投影平面 投影矩陣:,Z=0 plane,eye,focus,標準透視相機模型(I),標準相機模型,視點與原點重合,視線平行于+z方向,近切割平面z=n0,遠切割平面z=f0 視區(qū)(投影平面)為一長方體 視域四棱錐四個側(cè)面由下列方程給出:左側(cè)面x=lz/n,右側(cè)面x=rz/n,上側(cè)面y=tz/n,下側(cè)面y=bz/n,投影矩陣,OpenGL,DirectX,透視相機模型(II),透視變換圖例,仿射投影,透視變換圖例,透視變換圖例,透視變換規(guī)則,利用相似三角形定
15、理,有: 用齊次坐標表示:,透視變換矩陣,給定 其中,背面剔除,將多邊形的朝向與視點或投影中心相比較,去除那些不可見多邊形 可見性測試在視見空間內(nèi)進行。計算每一個多邊形的法向,并檢查法向與視線方向點積后值的符號,背面剔除,如果法向指向物體外部,則可見性的判斷條件為: 其中Np為法向,N為視線方向,視域體裁剪,當且僅當視域體內(nèi)的物體將被投影. 決定物體的哪一部分將被投影,哪一部分被剔除的過程叫做裁剪.,Z=0 plane,視域體裁剪,三維物體裁剪,用視域四棱錐對物體進行裁剪 把一個多邊形相對于視域四棱錐的每個裁剪面進行裁剪測試 在齊次坐標系中,視域四棱錐的六個裁剪面為:,三維物體裁剪,采用三維S
16、utherland-Hodgman裁剪算法 最終分解為線段與平面的求交的基本問題 根據(jù)多邊形頂點的坐標,很容易判斷出頂點位于裁剪面的內(nèi)側(cè)還是外側(cè),若求取直線與裁剪面的交點,只需把直線方程代入裁剪面方程即可,視域四棱錐裁剪(二維示例),視域四棱錐裁剪的四種情況,兩個頂點完全位于視域四棱錐內(nèi),把第二個頂點加入輸出頂點表 第一個頂點在裁剪平面內(nèi)側(cè),第二個頂點在裁剪平面外側(cè),將交點加入輸出頂點表 兩個頂點均在裁剪平面外側(cè),輸出頂點表不加任何頂點 第一個頂點在裁剪平面外側(cè),第二個頂點在裁剪平面內(nèi)側(cè),將交點和第二個頂點加入輸出頂點表,裁剪的四種情況-1,裁剪的四種情況-2,裁剪的四種情況-3,裁剪的四種情
17、況-4,視域四棱錐裁剪,視域四棱錐裁剪對所有四個齊次坐標進行,w分量與其他分量一樣處理 輸出仍為齊次坐標,裁剪方法-1,在場景坐標系中進行裁剪,然后變換到視點坐 標系 把物體從局部坐標系變換至場景坐標系 背面剔除 將視域四棱錐反變換至場景坐標系,稱之為場景四棱錐 在場景坐標系中用場景四棱錐裁剪物體 裁剪后的物體從場景坐標系變換至視點坐標系,裁剪方法-2,在局部坐標系中進行裁剪,然后變換到視點坐 標系 把相機從場景坐標系變換至局部坐標系 背面剔除 將視域四棱錐反變換至局部坐標系 局部坐標系中用反變換得到的四棱錐裁剪物體 裁剪后的物體從局部坐標系變換至視點坐標系,裁剪方法-3,將物體首先變換到視點
18、坐標系,在視點坐標系 中進行裁剪, 把相機從場景坐標系變換至局部坐標系 背面剔除 將物體從局部坐標系變換至視點坐標系 用視域四棱錐進行裁剪,從世界坐標系到屏幕坐標系,將物體從世界坐標系變換至屏幕坐標系,可以看成是:將物體首先作相機變換,再作透視變換: 一般還需要一個視區(qū)變換,視區(qū)變換,將視域歸一化 視域與物體求交,視域之外的部分物體不參與顯示過程 求交后的物體投影,并按照相應(yīng)的視見區(qū)域大小xmin,xmax、 ymin,ymax、 zmin,zmax進行縮放,OpenGL中的變換矩陣,相機變換: 指定照相機位置和方向(也叫照相機坐標系統(tǒng)) 模型變換: 將物體在場景中移動,也可以視為從局部坐標系
19、到全局坐標系 ModelView變換: 相機變換和模型變換的混合. 投影變換: 定義視域體并指向投影 視區(qū)變換: 將二維投影后的場景變換到繪制窗口.,相機坐標,照相機坐標系統(tǒng): 也叫視點坐標系統(tǒng)或者視見坐標系統(tǒng). 它表示了在照相機后面看場景的坐標關(guān)系。X-Y平面是投影面(也叫平面) ,照相機一般往負z方向看。,相機變換的兩種方法 保持相機不變,將物體(在世界坐標系統(tǒng)中)繞著相機旋轉(zhuǎn)。 保持物體不變,將相機在世界坐標系統(tǒng)中變換。相機變換是物體變換的逆變換。,y,x,z,-z,eye,設(shè)置相機: “Look At” 相機,將相機放置到世界坐標系統(tǒng)中定義相機變換 glMatrixMode (GL_M
20、ODELVIEW); glLoadIdentity (); gluLookAt (eye.x, eye.y, eye.z, look.x, look.y, look.z, up.x, up.y, up.z);,up,eye,look,Y,Z,X,WCS,x,y,z,P0,Q0,VCS,從 LookAt 設(shè)置中計算相機變換,坐標系統(tǒng), 形成了.:,v,u,n,-n,eye,look,相機變換:,OpenGL例子(Look At相機),Void DisplayScene () glClear (GL_COLOR_BUFFER_BIT); glColor3f (1.0f, 0.0f, 0.0f);
21、glLoadIdentity (); 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 (); ,設(shè)置相機的另一種方法: 變換場景,gluLookAt 函數(shù)顯式地定義相機。另外一種方法式將場景進行旋轉(zhuǎn)(glRotate)和平移(glTranslate)
22、同時,將相機置于缺省的世界坐標系統(tǒng). 旋轉(zhuǎn)和平移的累積效果構(gòu)成了最終的相機變換. 當然, glTranslate 和 glRotate也可用作其他用途,OpenGL例子(變換場景),/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
23、, 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 (); ,ModelView 矩陣,ModelView變換式建模矩陣M和相機變換V的乘積 C = VM 所有在OpenGL中的變換函數(shù)只能設(shè)置modelview 矩陣. 因此, ModelView 在物體被操作之前被調(diào)用. 例如: glMatrixMode (GL_MODELVIEW); glL
24、oadIdentity (); glScalef (2.0f, 2.0f, 2.0f); DrawScene ();,ModelView 矩陣堆棧,矩陣堆棧的頂部矩陣就是當前的ModelView 矩陣 (C). glPushMatrix (): 將當前的矩陣加入到矩陣堆棧 glPopMatrix (): 將頂部矩陣刪除,并將所有其他矩陣往上移動一位。 矩陣堆棧的好處:允許一系列位置(代表了坐標系統(tǒng))保留下來,并在需要的時候使用它們。,M1,M2,M3,變換的合成,一系列變換的合成可通過矩陣的嵌套完成 關(guān)于任意一點的縮放: 關(guān)于任意軸的旋轉(zhuǎn),矩陣陣列,建模變換: glLoadIdentity :
25、 C I glLoadMatrix(m) : C m glMultiMatrix(m) : C C m glRotatef(q,x,y,z) : C C RL(q) glTranslatef(x,y,z) : C C T(x,y,z) glScalef(x,y,z) : C C S(x,y,z) 最后定義的變換最先被執(zhí)行.,投影變換,投影變換設(shè)置視域體,從而定義裁剪面和投影矩陣以及投影方式。 投影矩陣在ModelView矩陣之后被實行,因此,視域體是定義 在相機坐標系統(tǒng)中的。 透視投影與平行投影,平行(正交)投影,定義正交視域體: glOrtho (left, right, bottom, top, near, far); 或者: glOrtho2D (left, right, bottom, top); 定義投影矩陣: glMatrixMode (GL_PROJECTION); glLoadIdentity ( ); glOrtho (left, right, bottom, top, near, far),Y,Z,X,成像平面,視域體,VCS,(Left, righ, bottom, top) 定義視域體的最小、最大的 X 和Y坐標; (near, far) 定義視域體的近和遠平面到X-Y平面的距離.,透視投影,視域四堎錐的定義
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新穎游樂活動策劃方案(3篇)
- 2026內(nèi)蒙古昌都市丁青縣消防救援大隊補招政府專職消防員4人備考考試試題及答案解析
- 2026山東事業(yè)單位統(tǒng)考淄博高新區(qū)事業(yè)單位面向退役大學(xué)生士兵招聘綜合類(專項)崗位備考考試題庫及答案解析
- 2026中電科金倉(北京)科技股份有限公司校園招聘備考考試試題及答案解析
- 2026年上半年黑龍江省林業(yè)科學(xué)院事業(yè)單位公開招聘工作人員55人筆試備考試題及答案解析
- 2026甘肅蘭州市安寧區(qū)人民醫(yī)院招聘編外醫(yī)務(wù)工作人員1名備考考試題庫及答案解析
- 2026四川宜賓市屏山縣融媒體中心第一次招聘編外工作人員1人參考考試題庫及答案解析
- 2026浙江寧波東方蔚藍人力資源有限公司第一期招聘2人備考考試試題及答案解析
- 2026中國科學(xué)院理化技術(shù)研究所熱聲熱機團隊招聘特別研究助理博士后1人備考考試題庫及答案解析
- 2026廣東茂名出入境邊防檢查站編制外人員招聘1人筆試模擬試題及答案解析
- 太倉市高一化學(xué)期末考試卷及答案
- 生活物資保障指南解讀
- 2025年浙江省委黨校在職研究生招生考試(社會主義市場經(jīng)濟)歷年參考題庫含答案詳解(5卷)
- DB3704∕T0052-2024 公園城市建設(shè)評價規(guī)范
- 采購領(lǐng)域廉潔培訓(xùn)課件
- 公司股東入股合作協(xié)議書
- 2025年中國化妝品注塑件市場調(diào)查研究報告
- 小兒藥浴治療
- 保險實務(wù)課程設(shè)計
- 物業(yè)管理公司管理目標標準
- 2023年重慶巴南區(qū)重點中學(xué)指標到校數(shù)學(xué)試卷真題(答案詳解)
評論
0/150
提交評論