資源描述:
《運(yùn)用VTK實(shí)現(xiàn)紋理貼圖》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第25卷第3期海洋測(cè)繪Vol.25,No.32005年5月HYDROGRAPHICSURVEYINGANDCHARTING,2005運(yùn)用VTK實(shí)現(xiàn)紋理貼圖徐蘇維,盛業(yè)華,黃家柱(南京師范大學(xué)地理信息科學(xué)江蘇省重點(diǎn)實(shí)驗(yàn)室,江蘇南京210097)摘要:介紹了在虛擬三維景觀中如何利用VTK實(shí)現(xiàn)紋理映射的方法,方法簡(jiǎn)便快捷,生成的紋理真實(shí)細(xì)膩。關(guān)鍵詞:計(jì)算機(jī)圖形學(xué);虛擬三維景觀;VTK;紋理映射中圖分類號(hào):P208文獻(xiàn)標(biāo)識(shí)碼:B文章編號(hào):1671-3044(2005)03-0067-03用面向?qū)ο蠹夹g(shù)的對(duì)象模型圖表示VTK的框1引言架結(jié)構(gòu)如圖1所示。紋理映射技
2、術(shù)的目標(biāo)是把二維的紋理圖像映射到三維物體表面,建立物體空間坐標(biāo)(x,},Z)與紋理空間坐標(biāo)(S,)之間的對(duì)應(yīng)關(guān)系是其關(guān)鍵點(diǎn)。為生成具有真實(shí)感的圖形,利用紋理映射技術(shù)將復(fù)雜物體的圖像粘貼到簡(jiǎn)單幾何體的表面,置于場(chǎng)景中。在實(shí)時(shí)顯示場(chǎng)景時(shí),還可利用3D圖形的平移、旋轉(zhuǎn)能力,實(shí)現(xiàn)復(fù)雜物體隨觀察方向的改變而轉(zhuǎn)動(dòng)的效果。本文基于VTK的類及庫(kù)函數(shù)來(lái)對(duì)物體進(jìn)行紋理映射,主要利用兩種信息:紋理圖案和紋理坐標(biāo),圖1VTK的框架結(jié)構(gòu)并通過(guò)設(shè)置眾多屬性來(lái)達(dá)到滿意的效果。用VTK來(lái)產(chǎn)生圖形和進(jìn)行可視化應(yīng)用是非常方便的,它包括兩個(gè)基本部分。首先,建立一個(gè)數(shù)據(jù)2VTK的可視化結(jié)構(gòu)
3、流水線(datapipeiine)來(lái)處理數(shù)據(jù);其次,建立適當(dāng)本文利用的可視化開發(fā)工具軟件包的目標(biāo)圖形來(lái)演示數(shù)據(jù)。建立流水線(pipeiine)就(VisuaiizationTooikit,VTK)是美國(guó)Kitware公司利用是將Sources、Fiiters和Mappers連接起來(lái)。C++語(yǔ)言開發(fā)的一個(gè)基于Windows和Unix環(huán)境的vtkobject是VTK類庫(kù)的基類,它為整個(gè)可視化流程面向?qū)ο蟮目梢暬ぞ摺KcopenGL這種底層開提供基本的方法。vtkSourc是vtkobject的派生類和發(fā)軟件的主要功能優(yōu)勢(shì)和區(qū)別在于VTK是一個(gè)功vtkFi
4、iter的父類,它為整個(gè)可視化流程的開始(比如能強(qiáng)大的可視化工具包,封裝了很多可以直接使用讀取數(shù)據(jù)等)定義具體的行為和接口。vtkFiite:是的類和庫(kù)函數(shù)。一方面減少了那些為現(xiàn)有算法重復(fù)vtkSource的派生類,它對(duì)數(shù)據(jù)進(jìn)行各種處理,將原開發(fā)的工作,大大降低了開發(fā)難度;另一方面也使得始數(shù)據(jù)經(jīng)過(guò)各種fiite:的處理后轉(zhuǎn)換為可以直接用最終的軟件能獲得理想的可視化效果。將一些常用某種算法模塊對(duì)其進(jìn)行處理式。vtkMapper:也是的算法和在可視化程序的開發(fā)過(guò)程中會(huì)經(jīng)常遇到的vtkobject的派生類,它將經(jīng)過(guò)各種fiiter處理后的應(yīng)細(xì)節(jié)屏蔽起來(lái),以類
5、庫(kù)的形式給我們的開發(fā)工作以用數(shù)據(jù)映射為幾何數(shù)據(jù),為原始數(shù)據(jù)與圖像數(shù)據(jù)之直接的支持,VTK不僅提供了強(qiáng)大的可視化功能,間定義了接口。這樣,依據(jù)要處理的數(shù)據(jù)的類型和而且還提供了強(qiáng)大的圖像處理以及有限元分析的功想要實(shí)現(xiàn)的功能,多種類型的Sources、Fiiters和能,能夠?qū)?biāo)量場(chǎng)、矢量場(chǎng)以及張量場(chǎng)的數(shù)據(jù)進(jìn)行重Mappers就連接了起來(lái)。類型檢查控制著哪一類的建。極大地簡(jiǎn)化了我們的開發(fā)工作,提高了工作效Fiiters可以連接在一起。[8]率。VTK一個(gè)很特別的地方是:對(duì)于任何進(jìn)行可視收稿日期:2005-01-21;修回日期:2005-04-12基金項(xiàng)目:國(guó)
6、家863基金項(xiàng)目(2004105XGO2646)作者簡(jiǎn)介:徐蘇維(1981-),女,江蘇無(wú)錫人,碩士研究生,主要從事地圖學(xué)與地理信息系統(tǒng)應(yīng)用研究。"!海洋測(cè)繪第25卷化的數(shù)據(jù),它都是通過(guò)演員在窗口中表現(xiàn)出來(lái)的,因Setopacity(l);//設(shè)置不透明度此建立目標(biāo)圖形應(yīng)該做以下工作:Setambient(0);//設(shè)置環(huán)境光照系數(shù)!建立renderingwindow(繪制窗口);SetSpecular(0);//設(shè)置鏡面光系數(shù)"建立actor(交互操作者),vtkactor類用來(lái)表//一個(gè)演示者和演示窗口達(dá)繪制場(chǎng)景中的一個(gè)實(shí)體,也就是繪制場(chǎng)景中的演v
7、tkrenderer*ren;員。它通過(guò)Setmapper()方法將幾何數(shù)據(jù)的屬性告vtkrenderwindow*renwin;訴演員;renwin->addrenderer(ren);#建立renderer(演示者),通過(guò)vtkrender類將//交互操作結(jié)果在窗口中顯示出來(lái)。vtkrenderwindowinteractor*iren;iren->Setrenderwindow(renwin);3基于VTK的紋理映射實(shí)例探討//將演員加入演示本文將在VC++.net環(huán)境下結(jié)合VTK軟件包ren->addactor(sphereactor);制作一
8、個(gè)貼上紋理的地球。//添加燈光效果,如圖2(d)3.l準(zhǔn)備工作vtklight*light;在