freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)論文—生物器官三維模型的色彩及紋理映射技術(shù)研究-資料下載頁(yè)

2024-11-07 19:47本頁(yè)面

【導(dǎo)讀】臟三維網(wǎng)格模型的基礎(chǔ)上,添加紋理,表現(xiàn)人體心臟外形的色彩及特征。在VC++中構(gòu)建OpenGL環(huán)境,并編寫相應(yīng)的程序。5-6周查閱與翻譯資料,紋理映射的概念及相關(guān)算法,熟悉紋理映射的過程,7-9周完成紋理映射程序的設(shè)計(jì)。14-16周完成論文撰寫。[3]DaveShrener,MasonWoo,JackieNeider,TomDavis著,鄧鄭祥譯.OpenGL. [6]王雪莉李宗民.VisualC++下OpenGL開發(fā)框架與應(yīng)用.電腦學(xué)習(xí)第5期..人機(jī)交互、通訊等方面具有廣泛的應(yīng)用。三維建模一般包括幾何建模和紋理建模兩。在采集好的心臟幾何數(shù)。中的三維坐標(biāo)之間的對(duì)應(yīng)關(guān)系,應(yīng)用程序?qū)π呐K進(jìn)行紋理映射。

  

【正文】 NEAREST_MIPMAP_LINEAR GL_LINEAR_MIPMAP_NEAREST GL_LINEAR_MIPMAP_LINEAR 表 31 放大和縮小濾波方式 濾波: 一般來(lái)說,紋理圖像為正方形或長(zhǎng)方形。但當(dāng)它映射到一個(gè)多邊形或曲面上并變換到屏幕坐標(biāo)時(shí),紋理的單個(gè)紋素很少對(duì)應(yīng)于屏幕圖像上的象素。根據(jù)所用變換和所用紋理映射,屏幕上單個(gè)象素可以對(duì)應(yīng)于一個(gè)紋素的一小部分(即放大)或一大批紋素(即縮?。?。下面用函數(shù) glTexParameter*()說明放大 和縮小的方法: glTexParameter*(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEA REST); glTexParameter*(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); 實(shí)際上,第一個(gè)參數(shù)可以是 GL_TEXTURE_1D 或 GL_TEXTURE_2D,即表明所用的紋理是一維的還是二維的;第二個(gè)參數(shù)指定濾波方法,其中參數(shù)值GL_TEXTURE_ MAG_FILTER 指定為放大濾波方法, GL_TEXTURE_MIN_FILTER指定為縮小濾波方法;第三個(gè)參數(shù)說明濾波方式,其值見表 31 所示。 若選擇 GL_NEAREST 則采用坐標(biāo)最靠近象素中心的紋素,這有可能使圖像走樣;若選擇 GL_LINEAR 則采用最靠近象素中心的四個(gè)象素的加權(quán)平均值。GL_NEAREST 所需計(jì)算比 GL_LINEAR 要少,因而執(zhí)行得更快,但 GL_LINEAR提供了比較光滑的效果。 ( 2)重復(fù)與簡(jiǎn)約: 紋理坐標(biāo)可以超出 (0,1)范圍,并且在紋理映射過程中可以重復(fù)映射或約簡(jiǎn)映射。在重復(fù)映射的情況下,紋理可以在 s, t 方向上重復(fù),即: glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAP_S,GL_REPEAT); 本科畢業(yè)設(shè)計(jì)論文 21 glTexParameterfv(GL_TEXTURE_2D,GL_TEXTURE_WRAP_T,GL_REPEAT); 若將參數(shù) GL_REPEAT 改為 GL_CLAMP,則所有大于 1 的紋素值都置為 1,所有小于 0 的值都置為 0。參數(shù)設(shè)置參見表 31。 光照函數(shù) 在 OpenGL的簡(jiǎn)化光照模型中,將光照分為 4個(gè)獨(dú)立的組成部分:輻射光 (Emitted Light)、環(huán)境光 (Ambient Light)、漫反射光 (Diffuse Light)和鏡面反射光 (Specular Light)。輻射光是直接從物體或光源發(fā)出的,不受任何其他光源的影響。環(huán)境光是這樣一種光線,它被環(huán)境多次反射,以至于連初始方向也難以確定。在被照射物體表面的反射光中,那些均勻地各個(gè)方向反射出去的光,稱為漫反射光。鏡面反射光式指朝一定方向的發(fā)射光,如果點(diǎn)光源照射光滑金屬球表面時(shí),會(huì)在球面上形成一個(gè)特別亮的地區(qū),呈現(xiàn)所謂的高亮 (High Light),這就是光源在該物體表面形成的鏡面反射光 (Specular Light)。 在 OpenGL 中光照和光源是由函數(shù) glLight()來(lái)實(shí)現(xiàn)的,該函數(shù)的原型如下 : ◆ GLfloat light_ambient [] = {, , , }; ◆ GLfloat light_diffuse [] = {, , , }; ◆ GLfloat light_specular [] = {, , , }; ◆ GLfloat light_position [] = {, , , }; ◆ GILightfv (GL_LIGHTO, GL_AMBIENT, light_ambient)。 ◆ GILightfv (GL_LIGHTO, GL_DIFFUSE, light_diffuse)。 ◆ GILightfv (GL_LIGHTO, GL_SPECULAR, light_specular)。 ◆ GILightfv (GL_LIGHTO, GL_POSITION, light_position)。 心臟模型在 窗口區(qū)和視圖區(qū) 中 的坐標(biāo)變換 通常把用戶指定的任一區(qū)域 (W)叫做窗口。任何小于或等于屏幕的區(qū)域都成為視圖區(qū)。 在用戶 坐標(biāo)系下,窗口區(qū)的四條邊分別定義為 WXL(左邊界 ), WXR(右邊界 ),WYB(底邊界 ), WYT(頂邊界 ),其相應(yīng)的屏幕中視圖區(qū)的邊框區(qū)的邊框在設(shè)備坐標(biāo)系 本科畢業(yè)設(shè)計(jì)論文 22 下分別為 VXL,VXR,VYB,VYT,如圖 31 所示 ,則在用戶坐標(biāo)系下 心臟模型 的點(diǎn)( Xω ,Yω )對(duì)應(yīng)屏幕視圖區(qū)中的點(diǎn)( Xs, Ys),其變換公式 [3]為: ( VXR VXL )Xs ( X W XL ) VXL( W XR W XL )( VYT VYB )Ys ( Y W YB ) VYB( W YT W YB )???? ? ? ???? ? ? ?? ( 31) 如令: a ( VXR VXL ) / ( W XR W XL )b VXL W XL ( VXR VXL ) / ( W XR W XL )c ( VYT VYB ) / ( W YT W YB )d VYB W YB ( VYT VYB ) / ( W YT W YB )? ? ?? ? ? ? ?? ? ?? ? ? ? ? ( 32) 則 31 式可簡(jiǎn)化為: X s a X bY s c Y d??? ? ???? ? ?? ( 33) 若求得了 a, b, c, d, 把窗口區(qū)內(nèi)的一點(diǎn)坐標(biāo)轉(zhuǎn)換成屏幕視圖區(qū)內(nèi)的對(duì)應(yīng)點(diǎn)坐標(biāo),只需兩次乘法和加法運(yùn)算。對(duì)于用戶定義的一張整圖,需要把圖中每條線段的端點(diǎn)都用上式進(jìn)行轉(zhuǎn)換,才能形成屏幕上的相應(yīng)視圖,如圖 31。則 33 式的矩陣可以表示如下: ? ?a 0 0X s Y s 1 [ X Y 1 ] 0 c 0b d 1??????????? ( 34) 當(dāng) a≠ c 時(shí),即當(dāng) x 方向圖形的變化與 y 方向不同時(shí),視圖區(qū)中的圖形會(huì)有伸縮變化。當(dāng) a=c=1,b=d=0 時(shí),且窗口與視圖區(qū)的坐標(biāo)原點(diǎn)也相同,則在視圖區(qū)產(chǎn)生與窗口區(qū)相同的圖形。 本科畢業(yè)設(shè)計(jì)論文 23 圖 31 用戶整圖中的窗口與屏幕中視圖區(qū)的對(duì)應(yīng)關(guān)系 當(dāng)采用多窗口,多視圖區(qū)時(shí),需正確選擇用戶圖形所在窗口以及輸出圖形所在視圖區(qū)的參數(shù),用( 33)式實(shí)現(xiàn)用戶圖形從窗口到視圖區(qū)的變換。窗口的適當(dāng)選用,可以較方便 地 觀察用戶的整圖和局部圖形,便于對(duì)圖形進(jìn)行局部修改和圖形質(zhì)量評(píng)價(jià)。應(yīng)用窗口技術(shù)的最大優(yōu)點(diǎn)是能方便的顯示用戶感興趣的部分圖形。 心臟模型 紋理坐標(biāo)的獲取 繪制紋理 映射場(chǎng)景時(shí),需要提供每個(gè)頂點(diǎn)的物體坐標(biāo)和紋理坐標(biāo)。經(jīng)過變換后,物體坐標(biāo)決定了頂點(diǎn)將被渲染到屏幕的什么地方,紋理坐標(biāo)決定紋理圖像中的哪個(gè)紋素將被用于該頂點(diǎn)。繪制填充多邊形和線段時(shí),在頂點(diǎn)之間通過插值計(jì)算顏色,在頂點(diǎn)之間通過插值計(jì)算紋理坐標(biāo)的方法與此完全相同。 紋理坐標(biāo) 可包含 1~ 4 個(gè)分量,這些分量通常被稱為 s、 t、 r 和 q 坐標(biāo),以便將其與物體坐標(biāo)( x、 y、 z 和 w)和求值程序( evaluator)坐標(biāo)( u 和 v)區(qū)分開來(lái)。對(duì)于一維紋理,使用 s 坐標(biāo);對(duì)于二維紋理,使用 s 和 t 坐標(biāo);對(duì)于三維紋理,使用 s、 t 和 r 坐標(biāo)。與 w 坐 標(biāo)一樣, q 坐標(biāo)通常被設(shè)置為 1,用于創(chuàng)建齊次坐標(biāo)。指定紋理坐標(biāo)的函數(shù)是 glTexCoord*(),它類似于函數(shù) glVertex*()、 glColor*()和glNormal*():它們有類似的版本 (variation),都用于函數(shù) glBegin()和 glEnd()之間。通常,紋理坐標(biāo)的取值范圍為 0~ 1;但也可以將其設(shè)置為其它值。 指定紋理坐標(biāo)函數(shù) glTexCoord*()的原型 [6]如下: ◆ void glTexCoord{1234}{sifd}(TYPE coords); WYB WYT (Xs, Ys) 用戶整圖 屏幕 窗 口 視圖 WXL WXR VYT VYB VXL VXR (Xω ,Yω ) 本科畢業(yè)設(shè)計(jì)論文 24 ◆ void glTexCoord{1234}{sifd}v(TYPE *coords); 功能:設(shè)置當(dāng)前紋理坐標(biāo)。 參數(shù)說明: s, t, r, q 指定紋理坐標(biāo)。 V 指定一個(gè)指向一元、二元、三元或四元數(shù)組的指針,它將順次指定相應(yīng)的紋理坐標(biāo) s、 t、 r 和 q。 對(duì)于紋理坐標(biāo) s, t, r 和 q,并不是所有的命令形式都需要提供所有這些參數(shù)。廚師情況下, s, t, r 和 q 的值是( 0, 0, 0, 1)。 紋理映射的過程就是紋理坐標(biāo)和表示物體的幾 何坐標(biāo)一一對(duì)應(yīng)的過程,物體的幾何屬性是由物體的頂點(diǎn)來(lái)描述的,由頂點(diǎn)構(gòu)成物體的許許多多個(gè)面,再由這些面來(lái)組成幾何物體。按照上文所述方法,對(duì) 照視圖區(qū)中心臟網(wǎng)格三維模型的位置,選擇相應(yīng)的照片,給幾何物體頂點(diǎn)賦予適當(dāng)?shù)募y理坐標(biāo),就可以把紋理成功地映射到心臟模型 上,從而達(dá)到期望的效果。假如已知 心臟模型的 坐標(biāo)為( Xs, Ys, Zs), 心臟 與圖片中的點(diǎn)能一一對(duì)應(yīng)起來(lái),可計(jì)算在 0~ 1 范圍內(nèi)的紋理坐標(biāo)( Xm, Ym)為: |X s WX L |X m =|WX R WX L ||Y s WY B |Y m =|WY T WY B |?? ( 35) 在某些場(chǎng)合(環(huán)境映射等)下,為獲得特殊效果需要自動(dòng)產(chǎn)生紋理坐標(biāo),并不要求為用函數(shù) gltexCoord*()為每個(gè)物體頂點(diǎn)賦予紋理坐標(biāo)值。 OpenGL 提供了自動(dòng)產(chǎn)生紋理坐標(biāo)的函數(shù),其如下: ◆ void glTexGen{i*f}[v](GLenum coord, GLenum pname, TYPE param); 功能:自動(dòng)產(chǎn)生紋理坐標(biāo)。第一個(gè)參數(shù)必須是 GL_S、 GL_T、 GL_R 或 GL_Q,它指出紋理坐標(biāo) s, t, r 和 q 中的哪一個(gè)要自動(dòng)產(chǎn)生;第二個(gè)參數(shù)值為GL_TEXTURE_GEN_MODE、 GL_OBJECT_PLANE 或 GL_EYE_PLANE;第三個(gè)參數(shù) param是一個(gè)定義紋理產(chǎn)生參數(shù)的指針,其值取決于第二個(gè)參數(shù) pname 的設(shè)置 ,當(dāng) pname 為 GL_TEXTURE_GEN_MODE 時(shí), param 是一個(gè)常量,即 GL_OBJECT _LINEAR、 GL_EYE_LINEAR 或 GL_SPHERE_MAP,它們決定用哪一個(gè)函數(shù)來(lái)產(chǎn)生紋理坐標(biāo)。對(duì)于 pname 的其它可能值, param 是一個(gè)指向參數(shù)數(shù)組的指針。 本科畢業(yè)設(shè)計(jì)論文 25 心臟模型的映射思路 由于在 OpenGL中顯示 的心臟網(wǎng)格模型是三維立體的,而我們擁有的圖片只是二維的,所以 需要進(jìn)行三維圖形到二維圖像的坐標(biāo)轉(zhuǎn)換。 整個(gè)映射的 大體思路如 下 圖: 圖 32 映射思路 心臟模型數(shù)據(jù)點(diǎn)的讀取 心臟三維網(wǎng)格模型建立 讀取坐標(biāo)點(diǎn) 圖片的讀取 紋理坐標(biāo)的獲取 紋理映射 心臟三維紋理模型重現(xiàn) 本科畢業(yè)設(shè)計(jì)論文 26 第四章 心臟模型上的紋理映射 VC++下 OpenGL 環(huán)境 的 構(gòu) 建 如果要通過程序?qū)崿F(xiàn)心臟模型上的紋理影射, 首先碰到的問題是,如何適應(yīng) 編程 環(huán)境。這 一步 是最 初級(jí) 的, 但 往往 也是最 關(guān)鍵 的。 下面介紹如何在 VC++中 進(jìn)行 OpenGL 編程 。 OpenGL繪 圖的一般過程可以看作這樣的 ,先用 OpenGL語(yǔ)句在 OpenGL的繪圖環(huán)境 RenderContext (RC)中畫好圖 ,然后再通過一個(gè) Swap buffer 的過程把圖傳給操作系統(tǒng)的繪圖環(huán)境 DeviceContext (DC)中 ,實(shí)實(shí)在在地畫出到 屏幕上。 下面 簡(jiǎn)單 介紹 在 VC++基礎(chǔ) 上 搭建 OpenGL環(huán)境 的 過程 [8]。 (1)創(chuàng)建一個(gè)新工程 啟動(dòng) VC++6. 0進(jìn)入 VC++的集成開發(fā)環(huán)境,選擇菜單【 File】菜單中選擇【 New...】選項(xiàng),在 New對(duì)話框中選擇 Project標(biāo)簽,選項(xiàng) “ MFC AppWizard(exe)” ,寫入工程名 GL,選擇目錄,單擊 ok,出現(xiàn)下一對(duì)話框,選擇建立 single document類型,單擊“完成” (2)設(shè)置編譯環(huán)境,添加 OpenGL函數(shù)庫(kù) 從【 Project】菜單中選擇【 Settings...】選項(xiàng),彈出 Project Settings 對(duì)話框。在該對(duì)話框中選擇 Link標(biāo)簽,在 “ Object/library Module” 編輯框中加入 “ ”, 單擊 OK。 (注意:在執(zhí)行程序時(shí), Windows的 system目錄下要包含 鏈接 庫(kù) )現(xiàn)在可以開始寫 OpenGL程序了。如圖 31所示: 本科畢業(yè)設(shè)計(jì)論文 2
點(diǎn)擊復(fù)制文檔內(nèi)容
醫(yī)療健康相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1