畢業(yè)設(shè)計(jì)論文—生物器官三維模型的色彩及紋理映射技術(shù)研究-精品(共52頁)_第1頁
畢業(yè)設(shè)計(jì)論文—生物器官三維模型的色彩及紋理映射技術(shù)研究-精品(共52頁)_第2頁
畢業(yè)設(shè)計(jì)論文—生物器官三維模型的色彩及紋理映射技術(shù)研究-精品(共52頁)_第3頁
畢業(yè)設(shè)計(jì)論文—生物器官三維模型的色彩及紋理映射技術(shù)研究-精品(共52頁)_第4頁
畢業(yè)設(shè)計(jì)論文—生物器官三維模型的色彩及紋理映射技術(shù)研究-精品(共52頁)_第5頁
已閱讀5頁,還剩53頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 本科畢業(yè)設(shè)計(jì)論文PAGE PAGE 50本科畢業(yè)設(shè)計(jì)(shj)論文題 目 生物器官三維模型(mxng)的色彩及紋理映射技術(shù)研究_專業(yè)(zhuny)名稱 生物醫(yī)學(xué)工程 學(xué)生姓名 張婕 指導(dǎo)教師 張樹生 畢業(yè)(b y)時(shí)間 2006.6 畢業(yè)(b y)eq o(sup 16(設(shè)計(jì)(shj),sdo 6(論文(lnwn)任務(wù)書題目:生物器官三維模型的色彩及紋理映射技術(shù)研究指導(dǎo)思想和目的要求:指導(dǎo)思想通過了解OpenGL技術(shù)中紋理映射的相關(guān)方法,熟悉紋理映射的過程,能夠在心臟三維網(wǎng)格模型的基礎(chǔ)上,添加紋理,表現(xiàn)人體心臟外形的色彩及特征。(2) 目的要求掌握紋理映射技術(shù)的相關(guān)方法,熟悉映射的過程。做到

2、對(duì)心臟的三維模型添加色彩,并表現(xiàn)出心臟的細(xì)節(jié)。在VC+中構(gòu)建OpenGL環(huán)境,并編寫相應(yīng)的程序。主要技術(shù)指標(biāo):掌握紋理映射的相關(guān)函數(shù)及方法;熟悉VC+環(huán)境中編程的思想;熟悉紋理映射的過程;設(shè)計(jì)實(shí)現(xiàn)紋理映射的程序;軟件原型系統(tǒng)實(shí)現(xiàn):實(shí)現(xiàn)語言為基于VC+基礎(chǔ)上的OpenGL。進(jìn)度與要求:5-6周 查閱與翻譯資料,紋理映射(yngsh)的概念及相關(guān)算法,熟悉紋理(wnl)映射的過程,熟悉(shx)編程語言。7-9周 完成紋理映射程序的設(shè)計(jì)。10-13周 編程實(shí)現(xiàn)算法。14-16周 完成論文撰寫。17-18周 論文答辯。主要參考書及參考資料:1 Bruno Levy and Jean-Laurent

3、Mallet. Non-Distorted Texture Mapping For Sheared Triangulated Meshes2 Greg Turk. Texture Synthesis on Surfaces3 Dave Shrener, Mason Woo ,Jackie Neider, Tom Davis著,鄧鄭祥譯.OpenGL編程指南(第四版).人民郵電出版社.20004 和平鴿工作室.OpenGL三維圖形系統(tǒng)開發(fā)與實(shí)用技術(shù)(基礎(chǔ)編程篇).清華大學(xué)出版社.重慶大學(xué)出版社5 孫家廣,楊長貴編著.計(jì)算機(jī)圖形學(xué)(第三版).北京:清華大學(xué)出版社,19956王雪莉 李宗民.Visu

4、al C+下OpenGL開發(fā)框架與應(yīng)用.電腦學(xué)習(xí)第5期.2004.10.學(xué) 生 張 婕 指導(dǎo)教師 張樹生 系主任 苑偉政摘 要三維建模是當(dāng)前計(jì)算機(jī)視覺與計(jì)算機(jī)圖形學(xué)領(lǐng)域的一個(gè)研究熱點(diǎn),在多媒體、人機(jī)交互、通訊等方面具有廣泛的應(yīng)用。三維建模一般(ybn)包括幾何建模和紋理建模兩個(gè)方面。本論文著重(zhuzhng)論述三維心臟建模中的紋理映射問題。在采集好的心臟幾何(j h)數(shù)據(jù)以及建立好的心臟網(wǎng)格模型的基礎(chǔ)上,進(jìn)一步研究如何對(duì)心臟網(wǎng)格模型實(shí)現(xiàn)色彩和紋理映射。我們的基本方法是應(yīng)用程序讀入心臟的二維圖片,再將三維心臟網(wǎng)格模型經(jīng)過平移、旋轉(zhuǎn)等坐標(biāo)變換,投影到二維平面上,使心臟網(wǎng)格模型的位置與圖像中心臟

5、的位置相對(duì)應(yīng),然后用視圖區(qū)與窗口區(qū)的坐標(biāo)轉(zhuǎn)換公式求解圖像中的點(diǎn)坐標(biāo)與模型中的三維坐標(biāo)之間的對(duì)應(yīng)關(guān)系,應(yīng)用程序?qū)π呐K進(jìn)行紋理映射。在完成幾何模型與指定圖像間的紋理映射之后,通過進(jìn)一步合成心臟的局部紋理,從而完成心臟紋理模型的構(gòu)建。所有的工作是在VC+基礎(chǔ)上構(gòu)建的OpenGL環(huán)境中完成的。論文中也給出了相關(guān)實(shí)驗(yàn)結(jié)果,并且就仍然存在的問題進(jìn)行分析,最后提出了對(duì)下一步工作的展望。關(guān)鍵字:紋理映射,坐標(biāo)變換,紋理坐標(biāo),OpenGLABSTRACT3D modeling is an active topic in computer vision and computer graphics, which h

6、as broad applications in multimedia, human-machine interaction, communication, etc. Generally, 3D modeling techniques can be classified into two categories: geometry modeling and texture modeling. In this thesis, we focus on the topic about how to estimate the texture mapping between the heart mesh

7、model and a color image. We utilize the acquired heart geometry images and the heart mesh model from the geometry images. After that, we generate heart texture models by the registration between the constructed mesh model and one color image. The image of the color photo of heart model is firstly re

8、ad by application program. And then the 3D heart mesh model is preprocessed by using translation and rotating transformations to map it into 2D plane, in order to make the model to match the heart in the image. After all the transform of coordinate and projection, we use the coordinate transforms fo

9、rmula between view area and window area to evaluating corresponding relation of the coordinate between the model and image. Then write mapping program in OpenGL to finish the work. With the estimated parameters, a part texture map is synthesized from the texture mapping corresponding to the image, a

10、nd then come into being a part of heart with texture. All of the work are finished in the surroundings of OpenGL on the base of VC+. Experimental results are given to demonstrate the performance of our method. Some existed problems are also analyzed and the future work to be done is discussed.Key wo

11、rds: texture mapping, coordinate transform, texture coordinate, OpenGL目 錄 TOC o 1-3 h z u HYPERLINK l _Toc138332669 摘 要 PAGEREF _Toc138332669 h I HYPERLINK l _Toc138332670 ABSTRACT PAGEREF _Toc138332670 h II HYPERLINK l _Toc138332672 第一章緒 論 PAGEREF _Toc138332672 h 1 HYPERLINK l _Toc138332673 1.1畢業(yè)設(shè)計(jì)

12、(b y sh j)的意義 PAGEREF _Toc138332673 h 1 HYPERLINK l _Toc138332674 1.2紋理映射(yngsh)技術(shù)的研究背景和發(fā)展現(xiàn)狀 PAGEREF _Toc138332674 h 2 HYPERLINK l _Toc138332675 1.2.1研究(ynji)背景 PAGEREF _Toc138332675 h 2 HYPERLINK l _Toc138332676 1.2.2 發(fā)展現(xiàn)狀 PAGEREF _Toc138332676 h 3 HYPERLINK l _Toc138332677 1.3論文主要工作及本文結(jié)構(gòu) PAGEREF _

13、Toc138332677 h 4 HYPERLINK l _Toc138332678 1.3.1 本文的主要工作 PAGEREF _Toc138332678 h 4 HYPERLINK l _Toc138332679 1.3.2 研究內(nèi)容和目標(biāo) PAGEREF _Toc138332679 h 5 HYPERLINK l _Toc138332680 1.3.3 本文的結(jié)構(gòu) PAGEREF _Toc138332680 h 5 HYPERLINK l _Toc138332681 第二章三維圖形概論及基礎(chǔ)平臺(tái)簡介 PAGEREF _Toc138332681 h 6 HYPERLINK l _Toc13

14、8332682 2.1 3D圖形概述 PAGEREF _Toc138332682 h 6 HYPERLINK l _Toc138332683 2.2 OpenGL PAGEREF _Toc138332683 h 8 HYPERLINK l _Toc138332684 2.2.1 OpenGL的基本功能與操作 PAGEREF _Toc138332684 h 8 HYPERLINK l _Toc138332685 2.2.2 OpenGL的體系結(jié)構(gòu) PAGEREF _Toc138332685 h 10 HYPERLINK l _Toc138332686 2.2.3 OpenGL繪制幾何圖元 PAG

15、EREF _Toc138332686 h 11 HYPERLINK l _Toc138332687 2.2.4 在OpenGL中使用顏色 PAGEREF _Toc138332687 h 12 HYPERLINK l _Toc138332688 2.2.5 在OpenGL中使用光照 PAGEREF _Toc138332688 h 12 HYPERLINK l _Toc138332689 2.2.6 在OpenGL中使用材質(zhì) PAGEREF _Toc138332689 h 13 HYPERLINK l _Toc138332690 2.2.7 在 OpenGL中使用紋理映射 PAGEREF _Toc

16、138332690 h 13 HYPERLINK l _Toc138332691 2.3 VC+面向?qū)ο蠹夹g(shù) PAGEREF _Toc138332691 h 14 HYPERLINK l _Toc138332692 2.3.1 面向?qū)ο蠹夹g(shù)的內(nèi)容 PAGEREF _Toc138332692 h 14 HYPERLINK l _Toc138332693 2.3.2 面向?qū)ο蠹夹g(shù)的特征 PAGEREF _Toc138332693 h 14 HYPERLINK l _Toc138332694 2.3.3 面向?qū)ο蠹夹g(shù)(jsh)的應(yīng)用 PAGEREF _Toc138332694 h 15 HYPERL

17、INK l _Toc138332695 第三章紋理(wnl)映射技術(shù)及映射思路 PAGEREF _Toc138332695 h 17 HYPERLINK l _Toc138332696 3.1 紋理函數(shù)(hnsh)的定義及控制 PAGEREF _Toc138332696 h 17 HYPERLINK l _Toc138332697 3.1.1紋理函數(shù)的定義 PAGEREF _Toc138332697 h 17 HYPERLINK l _Toc138332698 3.1.2紋理數(shù)據(jù)的獲取 PAGEREF _Toc138332698 h 18 HYPERLINK l _Toc138332699 3

18、.1.3紋理映射的反走樣處理 PAGEREF _Toc138332699 h 19 HYPERLINK l _Toc138332700 3.1.4紋理控制 PAGEREF _Toc138332700 h 19 HYPERLINK l _Toc138332701 3.1.5光照函數(shù) PAGEREF _Toc138332701 h 21 HYPERLINK l _Toc138332702 3.2 心臟模型在窗口區(qū)和視圖區(qū)中的坐標(biāo)變換 PAGEREF _Toc138332702 h 21 HYPERLINK l _Toc138332703 3.3 心臟模型紋理坐標(biāo)的獲取 PAGEREF _Toc13

19、8332703 h 23 HYPERLINK l _Toc138332704 3.4心臟模型的映射思路 PAGEREF _Toc138332704 h 25 HYPERLINK l _Toc138332705 第四章心臟模型上的紋理映射 PAGEREF _Toc138332705 h 26 HYPERLINK l _Toc138332706 4.1 VC+下OpenGL環(huán)境的構(gòu)建 PAGEREF _Toc138332706 h 26 HYPERLINK l _Toc138332707 4.2 心臟模型數(shù)據(jù)來源 PAGEREF _Toc138332707 h 29 HYPERLINK l _To

20、c138332708 4.2.1 心臟模型數(shù)據(jù)的采集 PAGEREF _Toc138332708 h 29 HYPERLINK l _Toc138332709 4.2.2 STL文件及心臟網(wǎng)格模型 PAGEREF _Toc138332709 h 30 HYPERLINK l _Toc138332710 4.2.3 添加色彩的心臟模型 PAGEREF _Toc138332710 h 32 HYPERLINK l _Toc138332711 4.3 心臟模型的紋理映射程序 PAGEREF _Toc138332711 h 33 HYPERLINK l _Toc138332712 4.4 心臟模型重現(xiàn)

21、結(jié)果及分析 PAGEREF _Toc138332712 h 35 HYPERLINK l _Toc138332713 4.5本章小結(jié) PAGEREF _Toc138332713 h 37 HYPERLINK l _Toc138332714 第五章結(jié)論與展望 PAGEREF _Toc138332714 h 38 HYPERLINK l _Toc138332715 5.1本文完成的工作 PAGEREF _Toc138332715 h 38 HYPERLINK l _Toc138332716 5.2研究展望 PAGEREF _Toc138332716 h 38 HYPERLINK l _Toc138

22、332717 致 謝 PAGEREF _Toc138332717 h 40 HYPERLINK l _Toc138332718 參考文獻(xiàn) PAGEREF _Toc138332718 h 41 HYPERLINK l _Toc138332719 畢業(yè)設(shè)計(jì)小結(jié) PAGEREF _Toc138332719 h 42 緒 論1.1畢業(yè)設(shè)計(jì)(b y sh j)的意義 在計(jì)算機(jī)圖形學(xué)中,最引人注目的研究方向就是圖形的真實(shí)感問題。所謂圖形的真實(shí)感,是指計(jì)算機(jī)所生成的圖形反映客觀世界的程度。長期以來,圖形真實(shí)感問題一直是計(jì)算機(jī)圖形學(xué)研究的一個(gè)主要課題。這主要有兩個(gè)原因,其一是由于計(jì)算機(jī)技術(shù)的飛速發(fā)展,其應(yīng)用愈

23、來愈廣,某些應(yīng)用領(lǐng)域(計(jì)算機(jī)藝術(shù)、計(jì)算機(jī)制片,計(jì)算機(jī)娛樂(yl)和廣告等)把高度真實(shí)感的圖形作為其發(fā)展的最終目標(biāo);其二是因?yàn)橛?jì)算機(jī)所能顯示圖形的真實(shí)程度也是對(duì)我們目前技術(shù)水平的一個(gè)度量,如果我們不能生成比較真實(shí)的圖形,那么,對(duì)圖形進(jìn)行藝術(shù)加工和控制更無從談起。然而,要用計(jì)算機(jī)生成一個(gè)比較(bjio)逼真的模型并不是一件容易的事情,要解決各種各樣的問題。目前,圍繞真實(shí)感圖形的顯示問題,主要涉及以下幾方面問題:畫面繪制(rendering)明暗處理(shading)圖形反混淆(antialising)光線跟蹤(ray tracing)紋理映射(texture mapping)陰影(shadow)隱

24、藏線、隱藏面消除(hidden line、 hidden surface culling)幾何造型(Geometric modeling)早期的研究主要集中在基本算法上,由于當(dāng)時(shí)的計(jì)算機(jī)只能生成一些簡單的圖形,還不具備交互功能。隨著大規(guī)模集成電路(LSI)的飛速發(fā)展,硬件成本迅速下降,尤其是大容量存儲(chǔ)器的出現(xiàn),光柵掃描顯示器的問世,為真實(shí)感圖形顯示提供了堅(jiān)實(shí)的物質(zhì)基礎(chǔ),從而真實(shí)感的圖形顯示也成為人們的研究熱點(diǎn)。在過去的十幾年中,人們一直在通過建模的方法仿真客觀世界,由于客觀世界千變?nèi)f化、錯(cuò)綜復(fù)雜,要把客觀世界的各種細(xì)微結(jié)構(gòu)直接用幾何模型表示出來,不僅模型難以建立,而且計(jì)算量龐大,難以滿足實(shí)時(shí)顯

25、示的要求。例如,一個(gè)曲面可以用許多微小多邊形(或曲面片)表示其表面細(xì)節(jié),每個(gè)微小多邊形(或曲面片)具有自身的表面特性,要顯示這個(gè)曲面,必須對(duì)這些小多邊形(或曲面片)進(jìn)行分別處理,這將要求大量的存儲(chǔ)空間和計(jì)算時(shí)間,因此,在實(shí)際應(yīng)用中,為了獲得比較高的顯示速度,往往以犧牲圖形的真實(shí)感為代價(jià)。盡管這樣,顯示一幅較復(fù)雜的圖形往往需要好幾個(gè)小時(shí),并且能滿足實(shí)時(shí)要求的幾何模型一直沒有找到。于是,人們就想象是否可以用“貼”墻紙的方法將反映物體表面細(xì)節(jié)的圖案貼到物體表面上,從而開辟了一個(gè)新的研究領(lǐng)域紋理映射(texture mapping),與建造模型的方法相比,在模擬物體表面細(xì)節(jié)方面,紋理映射是一個(gè)較有效的

26、方法。實(shí)際上,真實(shí)的景物表面存在著豐富的紋理細(xì)節(jié)。人們正是依據(jù)這些紋理細(xì)節(jié)來區(qū)別各種具有相同形狀的景物,因此景物表面紋理細(xì)節(jié)的模擬在真實(shí)感圖形合成技術(shù)中起著非常重要的作用,我們將景物表面紋理細(xì)節(jié)的模擬稱為紋理映射技術(shù)。這種技術(shù)已在三維動(dòng)畫軟件(如3DMAX)及圖形處理軟件中得到廣泛應(yīng)用。1.2紋理映射技術(shù)的研究背景和發(fā)展(fzhn)現(xiàn)狀1.2.1研究(ynji)背景紋理映射(yngsh)技術(shù)最早是由Catmull在1974年率先提出的, Catmull1首先找到了以(u,v)表示的雙變量實(shí)數(shù)空間(紋理空間)和以參數(shù)(s,t)表示的三維曲面之間的對(duì)應(yīng)關(guān)系(映射關(guān)系)。為了計(jì)算三維曲面上每一點(diǎn)的彩

27、色值,Catmull使用了一個(gè)二維矩形數(shù)組,該數(shù)組的位置表示(u,v)的參數(shù)值,數(shù)組的值表示(u,v)點(diǎn)對(duì)應(yīng)的彩色值;接著,應(yīng)用上面找到的映射函數(shù)將每一點(diǎn)(u,v)及其對(duì)應(yīng)的彩色值映射到相應(yīng)的三維曲面上,代替了只用一種色彩表示曲面的情況,在三維曲面上得到了彩色圖案。但是在Catmull的算法中,被映射的值僅限制為紋理圖案的彩色值。為此,Blinn和Newell在1976年提出了“反射映射”技術(shù),他們?cè)诠庹漳P椭锌紤]了紋理映射后的圖形質(zhì)量。在1978年,Blinn又提出了另一種紋理映射技術(shù)凹凸映射(bump mapping),利用一個(gè)擾動(dòng)函數(shù)擾動(dòng)物體的表面法矢來模擬有隨機(jī)法矢的粗糙表面紋理,實(shí)現(xiàn)

28、了在光滑的物體表面附上粗糙紋理的方法。Gardner使用紋理函數(shù)控制物體的透明性,在模擬自然界景物方面,取得了良好的效果。Kajiya擴(kuò)展了Blinn的方法,利用擾動(dòng)函數(shù)擾動(dòng)物體表面的其它參數(shù),很好地模擬了頭發(fā)、衣服之類的物體。與此同時(shí),國外大量的學(xué)者通過實(shí)驗(yàn)手段在多邊形表面生成了許多逼真的紋理圖案。但不幸的是,這些方法非常低效,只適用一些簡單的場景。我們知道,要將一幅紋理圖案映射到一張曲面上,需對(duì)紋理圖案進(jìn)行拉伸或壓縮以適應(yīng)曲面的形狀。一般來說,隨著紋理圖案的壓縮,增加了紋理圖案高頻成分,在圖像空間中容易引起圖形混淆(aliasing),這主要是由于欠采樣(undersampling)引起的

29、。因?yàn)閳D形顯示器是由許多圖像元素(簡稱象素pixel)組成的,一個(gè)象素并不是理想中的無窮小量,而占據(jù)一定的區(qū)域,對(duì)紋理圖案的采樣頻率取決于圖形顯示器的分辨率(即相鄰兩象素中心的間距),因此,對(duì)某個(gè)圖形顯示器來說,采用通常的顯示方法,其采樣頻率是恒定的。關(guān)于紋理映射中的反混淆問題,國外學(xué)者已做了大量的工作,提出了許多反混淆方法。1.2.2 發(fā)展(fzhn)現(xiàn)狀最近幾年計(jì)算機(jī)圖形學(xué)的發(fā)展使得三維表現(xiàn)技術(shù)得以形成,這些三維表現(xiàn)技術(shù)使我們能夠再現(xiàn)三維世界中的物體,能夠用三維形體來表示復(fù)雜(fz)的信息,這種技術(shù)就是可視化 ( Visualization ) 技術(shù)2??梢暬夹g(shù)使人能夠在三維圖形世界中直

30、接對(duì)具有形體的信息進(jìn)行操作,和計(jì)算機(jī)直接交流。這種技術(shù)已經(jīng)把人和機(jī)器的力量以一種直覺而自然的方式加以統(tǒng)一,這種革命性的變化無疑將極大地提高人們的工作效率??梢暬夹g(shù)賦予人們一種仿真的、三維的并且具有實(shí)時(shí)交互的能力,這樣人們可以在三維圖形世界中用以前不可(bk)想象的手段來獲取信息或發(fā)揮自己創(chuàng)造性的思維。機(jī)械工程師可以從二維平面圖中得以解放直接進(jìn)入三維世界,從而很快得到自己設(shè)計(jì)的三維機(jī)械零件模型。醫(yī)生可以從病人的三維掃描圖像分析病人的病灶。軍事指揮員可以面對(duì)用三維圖形技術(shù)生成的戰(zhàn)場地形,指揮具有真實(shí)感的三維飛機(jī)、軍艦、坦克向目標(biāo)開進(jìn)并分析戰(zhàn)斗方案的效果。更令人驚奇的是目前正在發(fā)展的虛擬現(xiàn)實(shí)技術(shù)(

31、jsh),它能使人們進(jìn)入一個(gè)三維的、多媒體的虛擬世界,人們可以游歷遠(yuǎn)古時(shí)代的城堡,也可以遨游浩瀚(hohn)的太空。所有這些都依賴于計(jì)算機(jī)圖形學(xué)、計(jì)算機(jī)可視化技術(shù)的發(fā)展。人們對(duì)計(jì)算機(jī)可視化技術(shù)的研究已經(jīng)歷了一個(gè)很長的歷程,而且形成了許多可視化工具,其中SGI公司推出的GL三維圖形庫表現(xiàn)突出,易于使用而且功能強(qiáng)大。利用GL開發(fā)出來的三維應(yīng)用軟件頗受許多專業(yè)技術(shù)人員的喜愛,這些三維應(yīng)用軟件已涉及建筑、產(chǎn)品設(shè)計(jì)、醫(yī)學(xué)、地球科學(xué)、流體力學(xué)等領(lǐng)域(ln y)。隨著計(jì)算機(jī)技術(shù)的繼續(xù)發(fā)展,GL已經(jīng)進(jìn)一步發(fā)展成為OpenGL, OpenGL已被認(rèn)為是高性能圖形和交互式視景處理的標(biāo)準(zhǔn),目前包括ATT公司UNIX

32、軟件實(shí)驗(yàn)室、IBM公司、DEC公司、SUN公司、HP公司、Microsoft公司和SGI公司在內(nèi)的多家在計(jì)算機(jī)市場占領(lǐng)導(dǎo)地位的大公司都采用了OpenGL圖形標(biāo)準(zhǔn)。紋理映射技術(shù)是近年來發(fā)展最快的3D技術(shù)之一,成為大家公認(rèn)最能衡量3D圖像質(zhì)量的技術(shù)標(biāo)準(zhǔn)。各種圖形標(biāo)準(zhǔn)都提供了對(duì)紋理映射的支持。如:OpenGL、DirectX9.0等1.3論文主要工作及本文結(jié)構(gòu)就本次畢業(yè)設(shè)計(jì)而言,有關(guān)生物器官的紋理映射的資料相對(duì)較少,大多數(shù)是英文資料,所以學(xué)習(xí)生物器官上的紋理映射技術(shù)在很大程度上是探索性質(zhì)的。要做好紋理映射,3D圖形學(xué)和OpenGL的基礎(chǔ)知識(shí)到是必不可少的,這將為程序?qū)崿F(xiàn)打下基礎(chǔ)。除了需要具有相關(guān)的V

33、C+知識(shí),還要了解OpenGL環(huán)境的性能,熟悉各種函數(shù)也是非常必需的。因此本次畢業(yè)設(shè)計(jì)的難度較大,所需要學(xué)習(xí)的基礎(chǔ)知識(shí)比較多。1.3.1 本文的主要工作(1)紋理函數(shù)的應(yīng)用及坐標(biāo)變換應(yīng)用相關(guān)的紋理函數(shù),讀入圖像數(shù)據(jù),設(shè)置紋理控制函數(shù),然后對(duì)已有的心臟網(wǎng)格模型數(shù)據(jù)進(jìn)行處理,將三維坐標(biāo)點(diǎn)經(jīng)坐標(biāo)轉(zhuǎn)換成二維平面上的點(diǎn),使其與心臟彩色圖像相對(duì)應(yīng),為下一步紋理映射打好基礎(chǔ)。(2)OpenGL環(huán)境的搭建在熟悉(shx)VC+平臺(tái)(pngti)的基礎(chǔ)(jch)上搭建OpenGL環(huán)境,為實(shí)現(xiàn)紋理映射打好基礎(chǔ)。使用OpenGL中基本功能,例如顏色、光照、材質(zhì)、紋理映射等編寫基本程序。(3)紋理貼圖網(wǎng)格模型與圖像對(duì)

34、應(yīng)好以后,利用程序計(jì)算求得紋理坐標(biāo),將紋理映射到心臟網(wǎng)格模型上得到最終結(jié)果。1.3.2 研究內(nèi)容和目標(biāo)基于上述內(nèi)容,提出本文的研究內(nèi)容和目標(biāo):(1)學(xué)習(xí)OpenGL環(huán)境的搭建,以及OpenGL函數(shù)和紋理映射函數(shù)的使用。(2)為心臟網(wǎng)格模型添加紋理,形成一個(gè)有色彩,真實(shí)感的心臟表面模型。1.3.3 本文的結(jié)構(gòu)在本次畢業(yè)設(shè)計(jì)中,由于現(xiàn)有的心臟網(wǎng)格模型與心臟模型的照片不是十分精確地吻合,所以要通過坐標(biāo)變換以及人眼定位的交互使用,在OpenGL中編寫程序獲得紋理坐標(biāo),然后再進(jìn)行紋理映射,才能得到帶有色彩和紋理的心臟模型。但由于心臟的不規(guī)則性,以及數(shù)據(jù)量也非常大,對(duì)于初學(xué)者有一定的難度,所以在本次畢業(yè)設(shè)

35、計(jì)的結(jié)果中只映射了心臟的一部分,在以后的研究生學(xué)習(xí)中將對(duì)心臟完整的紋理映射的算法進(jìn)行進(jìn)一步的研究和學(xué)習(xí)。論文結(jié)構(gòu)安排如下:第二章簡單概述三維圖形的基本知識(shí)和VC+的面向?qū)ο蠹夹g(shù),較為詳細(xì)的介紹了OpenGL中的基本功能,并將自己的學(xué)習(xí)成果及實(shí)驗(yàn)結(jié)果作一簡單整理和介紹。第三章則是畢業(yè)論文研究的重點(diǎn),對(duì)紋理映射技術(shù)以及紋理映射函數(shù)做了較為詳細(xì)的介紹,通過坐標(biāo)變換,獲得紋理坐標(biāo),給出本文的映射思路。第四章將紋理映射技術(shù)應(yīng)用到心臟模型上,首先搭建起OpenGL環(huán)境,其次簡單介紹心臟模型數(shù)據(jù)的來源,然后給心臟模型添加色彩、光照,最后通過編寫程序進(jìn)行紋理貼圖,把心臟模型的紋理重現(xiàn)出來。第五章對(duì)畢業(yè)設(shè)計(jì)進(jìn)行

36、小結(jié),就仍然存在的問題進(jìn)行分析,并且提出了對(duì)下一步工作的展望。三維圖形概論(giln)及基礎(chǔ)平臺(tái)簡介2.1 3D圖形(txng)概述計(jì)算機(jī)圖形學(xué)是隨著計(jì)算機(jī)及其外圍設(shè)備而產(chǎn)生和發(fā)展起來(q li)的。它是近代計(jì)算機(jī)科學(xué)與雷達(dá)、電視機(jī)圖像處理技術(shù)的發(fā)展匯合而產(chǎn)生的碩果。計(jì)算機(jī)圖形學(xué)有三大研究領(lǐng)域:幾何造型、圖形顯示和交互技術(shù)。幾何造型在計(jì)算機(jī)中表示物體的方法和構(gòu)造形體的技術(shù)。圖形顯示則在物體表示的基礎(chǔ)上,研究各種顯示算法。這些顯示算法,按照顯示對(duì)象的維數(shù),可劃分為二維圖形顯示算法和三維圖形顯示算法。交互技術(shù)研究人機(jī)交互的方式、手段和風(fēng)格,用戶接口的設(shè)計(jì),用戶界面的生成方法等。 三維圖形顯示算法有

37、兩大類3。一類是線框圖顯示算法,生成的是用輪廓線和棱線表示的線框圖。另一類是真實(shí)感圖像顯示算法,生成具有光照效果的真實(shí)感很強(qiáng)的圖像。三維圖形顯示還包括消隱、投影和空間轉(zhuǎn)換、三維形體的裁剪和三維形體的幾何變換等技術(shù)。這些技術(shù),無論對(duì)生成線框圖,還是對(duì)生成真實(shí)感圖像,都是非常有用的。所謂具有真實(shí)感的圖像,至少應(yīng)具有如下特點(diǎn):(1) 能反映物體幾何形狀和物體間的相互關(guān)系,真實(shí)感圖形通過光照下物體所形成的陰影,極大地改善場景的深度感和層次感,充分體現(xiàn)物體間相互遮掩的關(guān)系。(2) 能反映物體表面顏色和亮度的變化。物體表面的顏色和亮度的變化表現(xiàn)在:在光源位置和觀察點(diǎn)位置確定的情況下,物體表面有不同的朝向,

38、會(huì)表現(xiàn)出不同的亮度;對(duì)于曲面體,表面的顏色會(huì)有光滑過渡;具有相同幾何形狀但顏色不同的物體,我們可以用其表面的顏色將它們區(qū)別出來;在不同的光照射下物體表面顯示的顏色和亮度也不同;對(duì)于表面較光滑的物體,我們還會(huì)看到光源在其上形成的高光區(qū);物體表面有其特有的紋理。(3) 能表現(xiàn)物體的質(zhì)感。物體的質(zhì)感是由于其材料的屬性決定的,不同的材料反映不同的質(zhì)感。不同質(zhì)感的物體對(duì)光的作用也不同,主要表現(xiàn)為對(duì)不同波長的光會(huì)有不同的吸收率、反射率、折射率,所以觀察(gunch)光照下的物體可以看出物體的質(zhì)感。(4) 能反映(fnyng)鏡像效果(xiogu)。鏡像效果是指在特別光滑的表面上可以看見其他物體的圖像。鏡像

39、效果能加深對(duì)物體之間相互關(guān)系的理解。(5) 能反映透明效果。如果所顯示的物體是一個(gè)透明或半透明的,那么透過這個(gè)物體,我們能夠看到物體后面的其他物體或背景。此外,決定三維圖形外觀的因素有如下一些:(1) 物體的幾何形狀。(2) 物體的表面特性。這主要是指物體表面的粗糙度、紋理、物體的顏色、吸光率、反光性和透光性。(3) 光源的特性。一個(gè)物體的外觀除了決定于物體本身的幾何形狀和表面特性,還與外在因素有關(guān)。一個(gè)關(guān)鍵的外部因素就是照亮這個(gè)物體的光源。光源特性主要是指光源的光強(qiáng)分布、光源的光譜(決定了光的顏色)和光源的形狀(如點(diǎn)、線、面光源)三個(gè)方面。(4) 物體與光源的相對(duì)位置。(5) 觀察方式。它通

40、常指視點(diǎn)位置和視屏位置的設(shè)定。(6) 物體周圍的環(huán)境。通過對(duì)光的反射和折射,形成環(huán)境光,在物體的表面上產(chǎn)生一定的照度。綜上所述,生成一個(gè)具有真實(shí)感的圖形,需要經(jīng)過建立模型、計(jì)算視屏各像素顏色和顯示計(jì)算結(jié)果三個(gè)大的步驟。(1) 其中建立(jinl)模型主要就是對(duì)我們上面談到物體外觀因素進(jìn)行設(shè)置,包括建立物體的幾何模型、設(shè)定光源的位置形狀及光學(xué)特性和設(shè)定視點(diǎn)和屏幕的位置幾小步;(2) 在計(jì)算屏幕上各像素的顏色中有幾項(xiàng)是必須進(jìn)行的基本工作。這些工作包括:不可(bk)見面的消除,不可見面有兩種,一種是被其他面遮擋的面,從視點(diǎn)看不到,一種是背向視點(diǎn)的面,用消隱算法可去掉物體上不可見面;陰影計(jì)算,就是確定

41、物體上那些面受光源的光照,那些面處在其他 物體的陰影中;光照顏色(yns)計(jì)算;(3) 顯示計(jì)算結(jié)果,將計(jì)算出的結(jié)果在屏幕上顯示出來,形成具有真實(shí)感的圖形。2.2 OpenGL目前,OpenGL在國內(nèi)外都掀起了熱潮,但國內(nèi)對(duì)這一領(lǐng)域介紹的資料并不是很多。OpenGL(即開放性圖形庫,Open Graphics Library)是近幾年發(fā)展起來的一個(gè)性能卓越的三維圖形標(biāo)準(zhǔn),它源于美國SGI公司圖形工作站開發(fā)的IRIS GL,在跨平臺(tái)移植過程中發(fā)展成為OpenGL。SGI在1992年7月發(fā)布1.0版,后來成為工業(yè)標(biāo)準(zhǔn)。OpenGL作為一個(gè)性能優(yōu)越的圖形應(yīng)用程序設(shè)計(jì)界面(API),具有廣泛的可移植性

42、,它獨(dú)立于硬件系統(tǒng),操作系統(tǒng)和窗口系統(tǒng)。OpenGL適用于廣泛的計(jì)算機(jī)環(huán)境,從個(gè)人計(jì)算機(jī)到工作站和超級(jí)計(jì)算機(jī),用戶可利用它創(chuàng)建漂亮的三維圖形。由于許多在計(jì)算機(jī)領(lǐng)域具有領(lǐng)導(dǎo)級(jí)別的公司紛紛采用它作為三維圖形應(yīng)用程序設(shè)計(jì)界面,因此,OpenGL是從事三維圖形開發(fā)工作的技術(shù)人員所必須掌握的開發(fā)工具。由于OpenGL能實(shí)現(xiàn)高性能的三維圖形功能(實(shí)現(xiàn)三維空間、繪制三維物體等),這使得科學(xué)計(jì)算可視化,仿真可視化技術(shù)發(fā)展迅速。可視化系統(tǒng)不僅可以幫助技術(shù)人員形象直觀地查看仿真結(jié)果,而且在一定程度上可以提高設(shè)計(jì)水平,減少錯(cuò)誤的發(fā)生。因此計(jì)算機(jī)圖形技術(shù)在各行業(yè),各個(gè)領(lǐng)域內(nèi)得到越來越廣泛地應(yīng)用。有人說20世紀(jì)是計(jì)算機(jī)

43、多媒體技術(shù)發(fā)展的世紀(jì),21世紀(jì)將是虛擬現(xiàn)實(shí)飛速發(fā)展的世紀(jì),因此,積極推動(dòng)計(jì)算機(jī)圖形領(lǐng)域的發(fā)展將對(duì)于國家的經(jīng)濟(jì)建設(shè),科學(xué)研究具有重要的現(xiàn)實(shí)意義。2.2.1 OpenGL的基本功能與操作(cozu)OpenGL是一套圖形標(biāo)準(zhǔn),它嚴(yán)格按照計(jì)算機(jī)圖形學(xué)原理設(shè)計(jì)而成,符合光學(xué)(gungxu)和視覺理論,非常適合可視化仿真系統(tǒng)。首先(shuxin),在OpenGL中允許視景對(duì)象用圖形方式表達(dá),如:有物體表面頂點(diǎn)坐標(biāo)集合構(gòu)成的集合模型。這類圖形數(shù)據(jù)含有豐富的幾何信息,得到的仿真圖像能充分表達(dá)出其形體特征;而且在OpenGL中有針對(duì)三維坐標(biāo)表示的頂點(diǎn)的幾何變換,通過該變換可使頂點(diǎn)在三維空間內(nèi)進(jìn)行平移和旋轉(zhuǎn),對(duì)

44、于有頂點(diǎn)的集合表達(dá)的物體則可以實(shí)現(xiàn)其在空間的各種運(yùn)動(dòng)。其次,OpenGL通過光照處理能表達(dá)出物體的三維特性,其光照模型是整體光照模型,它把頂點(diǎn)到光源的距離、頂點(diǎn)到光源的方向向量以及定點(diǎn)到視點(diǎn)的方向向量等參數(shù)代入該模型,計(jì)算頂點(diǎn)的顏色。因此,可視化仿真圖像的顏色體現(xiàn)著物體與視點(diǎn)以及光源之間的空間位置關(guān)系,具有很強(qiáng)的三維效果。另外,為彌補(bǔ)圖形方法難于生成復(fù)雜自然背景的不足,OpenGL提供了對(duì)圖像數(shù)據(jù)的使用方法,即直接對(duì)圖像數(shù)據(jù)讀、寫和拷貝,或者把圖像數(shù)據(jù)定義為紋理與圖形方法結(jié)合在一起生成視景圖像以增強(qiáng)效果。為增強(qiáng)計(jì)算機(jī)系統(tǒng)三維圖形的運(yùn)算能力,有關(guān)廠家已研制出了專門對(duì)OpenGL進(jìn)行加速的三維圖形

45、加速卡,其效果可與圖形工作站相媲美。OpenGL實(shí)質(zhì)上是一個(gè)開放的三維圖形軟件包,它獨(dú)立于窗口系統(tǒng)和操作系統(tǒng),能十分方便地在各平臺(tái)之間移植,它不但具有開放性、獨(dú)立性和兼容性三大特點(diǎn),還提供了以下基本操作和功能:(1)建模功能OpenGL圖形庫除了提供基本的點(diǎn)、線、多邊形的繪制函數(shù)之外,還提供了比較復(fù)雜的三維物體(如球、錐體,多面體、茶壺等)以及復(fù)雜曲線和曲面(如Bezier, NURBS等曲線或曲面)繪制函數(shù)。(2)變換功能可以說,無論多復(fù)雜(fz)的圖形都是由基本圖元組成并經(jīng)過一系列變換來實(shí)現(xiàn)的。OpenGL圖形庫的模型變換有平移、旋轉(zhuǎn)、縮放等多種變換,投影變換有透視(tush)投影和正交投

46、影兩種變換。(3)顏色(yns)模式設(shè)置OpenGL應(yīng)用了一些專門的函數(shù)來指定三維模型的顏色。程序開發(fā)者可以選擇二個(gè)顏色模式,即RGBA模式和顏色索引模式(Color Index)。(4)光照和材質(zhì)設(shè)置正如自然界不可缺少光一樣,繪制有真實(shí)感的三維物體必須使用光照處理。OpenGL光源屬性有輻射光、環(huán)境光、漫反射光和鏡面光等。材質(zhì)是用光反射率來表示。場景(Scene)中物體最終反映到人眼的顏色是光的RGB分量與材質(zhì)的RGB分量反射率相乘后形成的顏色。(5)反走樣在OpenGL繪制圖形過程中,由于使用的是位圖,所以繪制出的圖像的邊緣會(huì)出現(xiàn)鋸齒形狀,稱為走樣。為了消除這種缺陷,OpenGL提供了點(diǎn)、

47、線、多邊形的反走樣技術(shù)。(6)融合為了使三維圖形更加具有真實(shí)感,經(jīng)常需要處理半透明或透明的物體圖像,這就需要用到融合技術(shù)。(7)霧化正如自然界中存在煙霧一樣,OpenGL提供了“fog”的基本操作來達(dá)到對(duì)場景進(jìn)行霧化的效果。(8)位圖顯示和圖像增強(qiáng)在圖形繪制過程中,位圖和圖像是非常重要的一個(gè)方面。OpenGL提供了一系列函數(shù)來顯示位圖和圖像的操作。(9)紋理映射在計(jì)算機(jī)圖形學(xué)中,把包含顏色、alpha值、亮度等數(shù)據(jù)的矩陣數(shù)組稱為紋理。三維景物因缺少景物的具體細(xì)節(jié)而顯得不夠真實(shí),為了更加逼真地表現(xiàn)三維景物,OpenGL提供了紋理映射的功能。OpenGL提供的一系列紋理映射函數(shù)使得開發(fā)者可以十分方

48、便地把真實(shí)圖像貼到景物的多邊形上,從而可以在視窗內(nèi)繪制逼真的三維景觀。(10)雙緩存出色(chs)的動(dòng)畫效果是OpenGL的一大特色(ts),OpenGL提供(tgng)了雙緩存區(qū)技術(shù)來實(shí)現(xiàn)動(dòng)畫繪制。雙緩存即前臺(tái)緩存和后臺(tái)緩存,后臺(tái)緩存計(jì)算場景、生成動(dòng)畫,前臺(tái)緩存顯示后臺(tái)緩存一畫好的畫面。2.2.2 OpenGL的體系結(jié)構(gòu)由于OpenGL是一個(gè)與平臺(tái)無關(guān)的三維圖形接口,操作系統(tǒng)必須提供像素格式管理和渲染環(huán)境管理。OpenGL在Windows上的實(shí)現(xiàn)是基于Client/Server模式的,應(yīng)用程序發(fā)出OpenGL命令,由動(dòng)態(tài)鏈接庫OpenGL32. dll接受和打包后發(fā)送到服務(wù)器端的WINSRV

49、.dll,然后由它通過的DDI層發(fā)往視頻顯示驅(qū)動(dòng)程序。OpenGL的體系結(jié)構(gòu)圖如圖2-1所示4。應(yīng) 用 程 序OpenGL32.DLLGDI32.DLL可安裝的客戶端驅(qū)動(dòng)程序ClientServer視頻顯示驅(qū)動(dòng)程序WIN32.DLL硬件相關(guān)DDIWINSRV.DLL圖2-1 OpenGL在Windows平臺(tái)上的體系結(jié)構(gòu)2.2.3 OpenGL繪制(huzh)幾何圖元在實(shí)際應(yīng)用中,通常用一組相關(guān)(xinggun)的頂點(diǎn)序列以一定的方式組織起來定義某個(gè)幾何圖元,而不采用單獨(dú)定義多個(gè)頂點(diǎn)來構(gòu)造幾何圖元。在OpenGL中,所有(suyu)被定義的頂點(diǎn)必須放在glBegin()和glEnd()兩個(gè)函數(shù)之

50、間才能正確表達(dá)一個(gè)幾何圖元或物體,否則,glVertex*()不完成任何操作5。函數(shù)glBegin(GLenum mode)標(biāo)志描述一個(gè)幾何圖元的頂點(diǎn)列表的開始,其參數(shù)mode表示幾何圖元的描述類型。函數(shù)glEnd()標(biāo)志頂點(diǎn)列表的結(jié)束。在glBegin()和glEnd()之間最重要的信息就是由函數(shù)glVertex*()定義的頂點(diǎn),必要時(shí)也可以調(diào)用相關(guān)的函數(shù)為每個(gè)頂點(diǎn)指定顏色、法向、紋理坐標(biāo)或其他。2.2.4 在OpenGL中使用顏色在OpenGL中通常使用兩種顏色模式,即RGBA模式和顏色索引模式。使用RGBA模式還是使用顏色索引模式要根據(jù)所用的硬件和應(yīng)用的需求來定。另外,對(duì)于明暗處理、光照

51、、紋理映射和霧化等特殊效果,使用RGBA模式較使用顏色索引模式更靈活。因此,本文將采用RGBA顏色模式。如果一個(gè)具有復(fù)雜光滑表面的物體是用一系列的多邊形逼近的,而且這些多邊形都是單一著色的多邊形,那么這個(gè)物體看上去像是由一片一片東西拼接起來的,顯得非常不自然。改善浮躁物體表面的外觀,方法之一是用更多更小的三角形來做逼近,另一種更為簡單的方法是使用多邊形的填充顏色產(chǎn)生層次或連續(xù)變化,這種技術(shù)稱為光滑著色。在OpenGL中,光滑著色時(shí)它的默認(rèn)處理方法。設(shè)置著色模式函數(shù)是glShadeModel(),該函數(shù)的原型如下:void glShadeModel(Glenum mode)mode指定一種著色模

52、式。它可取的值為GL_SMOOTH和GL_FLAT。使用GL_SMOOTH時(shí)表示光滑著色,使用GL_FLAT時(shí)表示單一著色。2.2.5 在OpenGL中使用(shyng)光照光照(gungzho)對(duì)于模擬三維真實(shí)感圖形時(shí)非常重要(zhngyo)的。事實(shí)上,如果沒有光照,所制作的三維圖形就沒有立體感,和二維圖形基本沒有區(qū)別。OpenGL中的光照是真實(shí)光照的一種逼近,它是一個(gè)高效的方法,在OpenGL中可以處理多個(gè)光源,也可以單獨(dú)使用某個(gè)光源。OpenGL所執(zhí)行的計(jì)算的目的就是計(jì)算在顏色緩存中每個(gè)象素的最終顏色,如果所構(gòu)建的三維場景中有光照,則計(jì)算是和場景中的光照有關(guān)的。在現(xiàn)實(shí)世界中,當(dāng)光照在非透

53、明物體上時(shí),部分光線被物體吸收,剩余的部分光線被反射。人眼依靠這種反射光來感知物體的形狀、顏色和其他細(xì)節(jié)。從光源投向物體的光稱為入射光,從物體表面反射回來的光稱為反射光。在OpenGL的簡化光照模型中,將光照分為4個(gè)獨(dú)立的組成部分:輻射光(Emitted Light)、環(huán)境光(Ambient Light)、漫反射光(Diffuse Light)和鏡面反射光(Specular Light)。2.2.6 在OpenGL中使用材質(zhì)材質(zhì)就是通常所說的物體表面的質(zhì)感。通過定義三維物體表面的材質(zhì)可以使物體看上去更為真實(shí)。在OpenGL中,它是通過定義材料對(duì)紅、綠、藍(lán)三色光的反射率來近似定義材料的顏色。材料

54、顏色也分為環(huán)境,漫反射和鏡面反射成分,它們決定了材料對(duì)于環(huán)境光,漫反射光和鏡面反射光的反射率。2.2.7 在 OpenGL中使用紋理映射紋理映射的用途非常廣泛,因此紋理映射是一個(gè)涉及面非常廣且非常復(fù)雜的主題,使用紋理映射時(shí),必須做出多種編程決策。我在初學(xué)的時(shí)候還覺得紋理是二維的,但實(shí)際上紋理可以是一維的,甚至可以是三維的??梢詫⒓y理映射到由一組多邊形構(gòu)成的平面或曲面上,并沿一個(gè)、兩個(gè)或三個(gè)方向(取決于紋理的維數(shù))重復(fù)使用紋理以覆蓋表面。另外,還可以自動(dòng)將紋理映射到物體上,從而用紋理來表示物體的等高線或其他屬性。可以對(duì)光照物體進(jìn)行紋理映射,使其位于房間或其他環(huán)境中央時(shí),表面反射的是周圍的景色。最

55、后,還可以以其他方式將紋理應(yīng)用于物體表面:可以直接將它畫到物體表面上(類似于貼花),用于調(diào)整物體表面的顏色,或者將紋理的顏色和物體表面的顏色進(jìn)行混合。例如,使用一大片植被的圖像映射到一些連續(xù)的多邊形上,以模擬地貌,或者以大理石、木紋等自然物質(zhì)的圖像作為紋理映射到相應(yīng)的多邊形上,作為物體的真實(shí)表面。紋理是一個(gè)數(shù)組,其中(qzhng)的數(shù)據(jù)為顏色、輝度或者顏色和alpha值。紋理數(shù)組中的值通常被稱為紋素。矩形紋理可能(knng)被映射到非矩形區(qū)域,所以必須以合理的方式來實(shí)現(xiàn)這種映射,這使得紋理映射非常復(fù)雜。在OpenGL中提供(tgng)了一系列完整的紋理操作函數(shù),用戶可以用它們構(gòu)造理想的物體表面

56、紋理映射只能工作在RGB模式下。在OpenGL中,進(jìn)行紋理映射的基本步驟如下:創(chuàng)建紋理對(duì)象并為其指定紋理;指定如何將紋理應(yīng)用于每個(gè)像素;啟用紋理映射;使用紋理坐標(biāo)和幾何坐標(biāo)繪制場景6。2.3 VC+面向?qū)ο蠹夹g(shù)2.3.1 面向?qū)ο蠹夹g(shù)的內(nèi)容對(duì)象是面向?qū)ο蠓椒ǖ幕A(chǔ);而對(duì)象則是對(duì)一個(gè)信息及其相應(yīng)處理的描述7。對(duì)象可以分為兩類:一類是客觀世界中的對(duì)象,利用現(xiàn)實(shí)世界中對(duì)象的抽象以及對(duì)各個(gè)對(duì)象之間相互關(guān)系、相互作用的描述來實(shí)現(xiàn)由現(xiàn)實(shí)世界到目標(biāo)系統(tǒng)的映射。因此抽象性是在對(duì)象設(shè)計(jì)、實(shí)現(xiàn)及應(yīng)用過程中體現(xiàn)出來的,是面向?qū)ο蠓椒ǖ淖钪匾奶匦灾弧A硪活愂悄繕?biāo)系統(tǒng)中的對(duì)象,對(duì)于對(duì)象使用人員來說,經(jīng)過封裝后的對(duì)象

57、以一種簡明、易學(xué)易用的方式出現(xiàn),對(duì)象向其使用者展示的是一組完成某種特定功能的操作(或稱方法)??芍赜眯允敲嫦?qū)ο蠓椒ǖ闹匾獌?yōu)點(diǎn),一方面是指以前設(shè)計(jì)的系統(tǒng)中的對(duì)象,可在新系統(tǒng)的分析和設(shè)計(jì)中應(yīng)用;另一方面是指在系統(tǒng)中設(shè)計(jì)好一個(gè)對(duì)象后,實(shí)際上代表的是一類事物的集合。從程序設(shè)計(jì)來看,對(duì)象是一個(gè)程序模塊。一組大體上相似的對(duì)象可以定義為類,一個(gè)類所包含的方法和數(shù)據(jù)描述一組對(duì)象的共同行為和屬性。有了類之后,對(duì)象則是類的具體化(或稱類的實(shí)例),類可以有子類,形成父類與子類的層次結(jié)構(gòu)。繼承性是父類和子類之間共享數(shù)據(jù)和方法的機(jī)制。繼承性就是指一個(gè)對(duì)象可以從另一個(gè)對(duì)象派生對(duì)象。因此,合理地建立并組織好自己的類庫,是

58、利用面向?qū)ο蠓椒ㄟM(jìn)行程序設(shè)計(jì)的關(guān)鍵一環(huán)。由于類庫可以看作是若干基類的集合,而實(shí)際應(yīng)用的對(duì)象或是直接使用基類,或是由基類派生,因此必須謹(jǐn)慎地定義基類的數(shù)據(jù)和方法。繼承性是面向?qū)ο蟪绦蛟O(shè)計(jì)的最主要特點(diǎn),是面向過程程序設(shè)計(jì)所沒有的。2.3.2 面向?qū)ο蠹夹g(shù)(jsh)的特征面向?qū)ο蟪绦蛟O(shè)計(jì)(chn x sh j)方法有4個(gè)基本特征:抽象(chuxing)、封裝、繼承和多態(tài)性。抽象(abstract)就是忽略一個(gè)問題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便將注意力放在與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算解決全部問題,而只是選擇其中一部分,暫時(shí)不考慮一些細(xì)節(jié)問題。抽象包括過程抽象和數(shù)據(jù)抽象,過程抽象是指任何一個(gè)明確

59、定義功能的操作都可被使用者作為單個(gè)實(shí)體看待,盡管這個(gè)操作實(shí)際上可能由一系列更低級(jí)的操作完成;數(shù)據(jù)抽象定義了數(shù)據(jù)類型和施加于該類型對(duì)象上的操作。封裝(encapsulation)是面向?qū)ο蟪绦蛟O(shè)計(jì)的一個(gè)主要特征。封裝就是把每個(gè)對(duì)象的數(shù)據(jù)(屬性)和操作(行為)保障在一個(gè)類中。一旦定義了對(duì)象的屬性和行為,則必須決定哪些屬性和行為用于表示內(nèi)部狀態(tài),哪些屬性和行為在外部是可見的。一般限制直接訪問對(duì)象的屬性,而應(yīng)通過才作借口訪問,這樣使程序中模塊之間的關(guān)系更簡單、數(shù)據(jù)更安全。對(duì)程序的修改也僅限于類的內(nèi)部,使得由于修改程序所帶來的影響局部化。繼承(inheritance)是指一個(gè)新類可以從現(xiàn)有的類派生出來。

60、新類繼承了現(xiàn)有類的特性,包括一些屬性和行為,并且可以修改或增加新的屬性和行為,使之適應(yīng)具體的需要。例如,所有的Windows應(yīng)用程序都有一個(gè)窗口,他們可以看作都是從一個(gè)窗口類派生出來的,但是有的應(yīng)用程序用于文字處理,有的用于繪圖,這是由于派生出了不同的類,他們?cè)黾恿瞬煌膶傩院托袨?。繼承很好的解決了軟件的可重用性問題。多態(tài)性(polymorphism)是指允許不同類的對(duì)象對(duì)同一消息作出的響應(yīng)不相同。多態(tài)性使程序設(shè)計(jì)靈活、抽象,具有行為共享和代碼共享的優(yōu)點(diǎn),很好的解決了程序的函數(shù)同名(tngmng)的問題。 2.3.3 面向?qū)ο蠹夹g(shù)(jsh)的應(yīng)用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法是當(dāng)今用于開發(fā)和擴(kuò)充復(fù)雜軟

溫馨提示

  • 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)論