基于Flex的開(kāi)源3D引擎_第1頁(yè)
基于Flex的開(kāi)源3D引擎_第2頁(yè)
基于Flex的開(kāi)源3D引擎_第3頁(yè)
基于Flex的開(kāi)源3D引擎_第4頁(yè)
基于Flex的開(kāi)源3D引擎_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于flex的開(kāi)源3d引擎1 papervision3d三維引擎1.1 papervision3d引擎組成1.2 papervision3d各類之間關(guān)系2 panosalado全景圖像顯示引擎2.1 pansalado的整體構(gòu)成2.2 panosalado引擎中的核心類隨著電腦硬件的發(fā)展,在人們對(duì)視覺(jué)感官要求越來(lái)越高,flash作為當(dāng)今一款主流的web插件,人們對(duì)它能夠?qū)崿F(xiàn)商業(yè)應(yīng)用級(jí)絢麗高效三維顯示也越發(fā)期待,但是簡(jiǎn)單、特定的三維顯示不僅非常難以適應(yīng)多變的應(yīng)用場(chǎng)合、同時(shí)也在實(shí)現(xiàn)過(guò)程中浪費(fèi)了大量的人力。使用actionscript語(yǔ)言編制flash播放器內(nèi)置的三維引擎技術(shù)成為大家的共識(shí),現(xiàn)在國(guó)內(nèi)

2、外已經(jīng)有多種actionscript三維引擎誕生,比較流行的主要有:papervision3d、alternativa 3d、away3d、sandy 3d以及國(guó)內(nèi)的newx3d。其中以papervision3d最為出名,而且它在實(shí)際項(xiàng)目中往往有上佳的表現(xiàn)。1 papervision3d三維引擎papervision3d是一個(gè)遵循mit(麻省理工大學(xué))協(xié)議的開(kāi)源3d引擎,使用actionscript語(yǔ)言編制。papervision3d三維引擎自從2008年3月份開(kāi)源以來(lái)經(jīng)過(guò)兩年的持續(xù)改進(jìn),現(xiàn)在已經(jīng)達(dá)到了三維引擎的基本功能,擁有包括:number3d、numberuv、matrix3d等各種基礎(chǔ)

3、數(shù)據(jù)類、3d視窗類、3d容器類、3d攝像機(jī)類、紋理材質(zhì)類、各種渲染效果類、模型文件加載顯示類等三維引擎模塊。得益于actionscript 3.0計(jì)算性能的改進(jìn),papervision3d在顯示三維效果時(shí)效率有了很大的提高,已經(jīng)可以滿足普通三維場(chǎng)景的應(yīng)用,特別是其支持直接導(dǎo)入標(biāo)準(zhǔn)的dae和ase三維模型文件,這意味著在創(chuàng)作三維場(chǎng)景時(shí)可以直接使用大部分專業(yè)3d工具制作出來(lái)的模型,從而可以大大提高開(kāi)發(fā)效率,降低系統(tǒng)運(yùn)算時(shí)的cpu開(kāi)銷。1.1 papervision3d引擎組成papervision3d主要由7個(gè)包組成:core核心包,geom包,cameras包,scenes包,event包,ma

4、terial包,object包。各個(gè)包的構(gòu)成如下:core核心包number3d類:3d坐標(biāo)系中的值類型定義;numberuv類:uv坐標(biāo)系中的值類型定義;matrix3d類:4×3矩陣定義,矩陣算法操作定義;displayobject3d類:表示場(chǎng)景中的3d對(duì)象(也包括攝像機(jī)和其目標(biāo)),并提供對(duì)象基本操作函數(shù);displayobjectcontainer3d類:displayobject3d容器的所有對(duì)象的基類,每個(gè)displayobjectcontainer3d對(duì)象有自己子容器列表;cameraobject3d類:所有攝像機(jī)的基類;sceneobject3d類:所有場(chǎng)景的基類場(chǎng)景

5、是放置物體的地方,它包含3d環(huán)境場(chǎng)景管理所有渲染的物體,它擴(kuò)展了displayobjectcontainer3d類來(lái)分配顯示物體sceneobject3d是抽象基類;geometryobject3d類:包含幾何對(duì)象的類;materialobject3d類:所有材質(zhì)的基類。geom包vertex2d類:2d頂點(diǎn)數(shù)據(jù)定義;vertex3d類:3d頂點(diǎn)數(shù)據(jù)定義;mesh3d類:創(chuàng)建和顯示由頂點(diǎn)和三角形組成的3d物體;face3d類:渲染線性采樣的紋理貼圖的三角形,也支持顏色填充和輪廓線。cameras包c(diǎn)amera3d類:用于創(chuàng)建及操作可觀察目標(biāo)對(duì)象周圍景物的攝像機(jī)對(duì)象;freecamera3d類:

6、用于創(chuàng)建及操作可隨指定方向進(jìn)行觀察的活動(dòng)攝像機(jī)對(duì)象。scenes包scene3d類:用于創(chuàng)造在同一容器中渲染三維可視環(huán)境的舞臺(tái);moviescene3d類:用于創(chuàng)造在同一容器中渲染三維可視環(huán)境的舞臺(tái),支持通過(guò)movie的方式。events包fileloadevent類:模型文件導(dǎo)入時(shí)事件傳遞類。materials包bitmapmaterial類:創(chuàng)建使用bitmapdata對(duì)象的紋理;colormaterial類:創(chuàng)建使用單顏色的紋理;wireframematerial類:創(chuàng)建使用切線的紋理;bitmapassetmaterial類:創(chuàng)建使用存放在bitmap庫(kù)中的樣板的紋理;bitmapfi

7、lematerial類:創(chuàng)建使用外部導(dǎo)入的bitmap文件類型的紋理;moviematerial類:創(chuàng)建使用存在的movieclip實(shí)例的貼圖,該紋理可以是動(dòng)畫的或者透明的。movieclip實(shí)例的當(dāng)前的縮放和顏色值將會(huì)被使用,但旋轉(zhuǎn)則會(huì)被舍棄;videostreammaterial類:繼承自moviematerial類,不同在于該類可以使用流媒體的movieclip;movieassetmaterial類:繼承自moviematerial類,創(chuàng)建使用存放在movie庫(kù)中的樣板的紋理;materialslist類:材質(zhì)列表。objects包plane類:繼承自mesh3d類。創(chuàng)建并顯示長(zhǎng)方形對(duì)

8、象;paperplane類:繼承自mesh3d類,主要用來(lái)測(cè)試一個(gè)對(duì)象的方向。1.2 papervision3d各類之間關(guān)系場(chǎng)景類的父類與子類的關(guān)系如圖1:圖1 scene類的繼承關(guān)系材質(zhì)類是可顯示的特殊對(duì)象,單獨(dú)從eventdispatcher中繼承,材質(zhì)類根據(jù)材質(zhì)的不同特性分為了線性材質(zhì)、貼圖材質(zhì)與顏色材質(zhì)。貼圖材質(zhì)又根據(jù)貼圖的來(lái)源與特性分為了moviematerial、bitmapfilematerial、bitmapassetmaterial以及materiaslist,它的繼承關(guān)系如圖2圖2 材質(zhì)類的繼承關(guān)系papervision3d引擎的的頂級(jí)類(頂級(jí)類就是不需要導(dǎo)入的類)包括nu

9、mber3d、number2d、vertex2d、vertex3d、face3d、matrix3d,這些為三維坐標(biāo)下中的基本變量類型。還有fileloadevent用于支持模型、材質(zhì)文件的處理。其他幾個(gè)頂級(jí)類為從flash的eventdispatcher繼承,分別為geometryobject3d、materialobject3d、displayobjectcontainer3d,這三種頂級(jí)類擴(kuò)展出其他三維引擎所需的豐富組件類.papervision3d中頂級(jí)類的關(guān)系如圖3所示:圖 3 papervision3d的頂級(jí)類papervision3d中的所有能夠顯示的物體都是對(duì)象,這些對(duì)象的父類是

10、displayobject3d,displayobject3d類中包含了三維對(duì)象基本的屬性值、操作函數(shù)。通過(guò)繼承,cameraobject3d擁有camera3d與freecamera3d子類,兩者分別用于固定位置與可活動(dòng)位置的攝像機(jī)控制。collada類專門負(fù)責(zé)解析、顯示collada標(biāo)準(zhǔn)三維模型。vertices3d類衍生出眾多的顯示組件,方便了系統(tǒng)的開(kāi)發(fā)。顯示類繼承關(guān)系如圖4。圖4 papervision3d顯示類繼承關(guān)系圖2 panosalado全景圖像顯示引擎panosalado是一個(gè)基于360度全景視圖的國(guó)外開(kāi)源flash引擎,該引擎可以塑造出球形,圓柱體,正方體,平面的360度全

11、景,還能導(dǎo)入qtvr視頻,這個(gè)開(kāi)源引擎是基于前一小節(jié)提到的開(kāi)源引擎papervision3d,它對(duì)papervision3d引擎在3維空間全景展現(xiàn)方面做了極大的擴(kuò)展。而且使得利用它開(kāi)發(fā)能夠像flash和flex開(kāi)發(fā)一樣簡(jiǎn)潔,里面所有控件以及功能都能夠在該引擎中找到100%的源碼,所有源碼也沒(méi)有依賴任何商業(yè)組件。該引擎開(kāi)發(fā)存在著極大的自由,對(duì)于as3.0編程熟手完全可以涉及該引擎內(nèi)部進(jìn)行編程,即使as3.0新手亦可通過(guò)調(diào)用引擎內(nèi)部api,在配置文件中配置自己的插件集成進(jìn)去。在作者的系統(tǒng)中,將對(duì)整個(gè)panosalado引擎進(jìn)行修改擴(kuò)展,從而能夠使得修改后的引擎符合系統(tǒng)的需求,同時(shí)由于panosal

12、ado引擎是完全基于papervision3d的,所以,對(duì)于有些功能,將直接使用papervision3d的api函數(shù)進(jìn)行實(shí)現(xiàn)。2.1 pansalado的整體構(gòu)成pansalado基本是對(duì)papervision3d的擴(kuò)展應(yīng)用,雖然papervision3d功能很強(qiáng)大,但是一直沒(méi)有一個(gè)基于flex的3d引擎專門用于構(gòu)造虛擬空間的,panosalado的出現(xiàn),正好填補(bǔ)這一空白。pansalado引擎對(duì)于實(shí)現(xiàn)虛擬空間的構(gòu)成,很有自己的特色,是通過(guò)配置xml實(shí)現(xiàn)專門的模塊的導(dǎo)入,所有關(guān)于全景信息以及顯示樣式信息通過(guò)xml配置好,然后經(jīng)過(guò)moduleloader類所生成的moduleloader.sw

13、f讀取名為panosalado的xml文件,然后關(guān)聯(lián)到相關(guān)外部資源,最后完成資源導(dǎo)入生成一個(gè)簡(jiǎn)單的全景瀏覽系統(tǒng),對(duì)于整個(gè)全景系統(tǒng)一些界面上的擴(kuò)展,也可以以插件的形式通過(guò)xml配置,集成入系統(tǒng)。整個(gè)關(guān)聯(lián)過(guò)程如圖5所示圖 5 panosalado系統(tǒng)的整體結(jié)構(gòu)一個(gè)簡(jiǎn)單的xml配置示例如下:<?xml version="1.0" encoding="utf-8"?> <panosalado>                    

14、;     <layer id="meter" url="plugins/panosaladoloadmeter.swf" depth="1"/>     <layer id="panosalado" url="panosalado.swf" depth="0" >                 <

15、;spaces onstart="loadspace:space1">                 <space id="space1">                 <sphere id="dark_blue_room_pano_preview">          

16、                              <file>images/dark_blue/dark_blue_prev.jpg</file>                 </sphere>               

17、60;             </space>                             </spaces>         </layer> </panosalado>  其中每個(gè)layer代表一個(gè)插件,panosalado的核心實(shí)現(xiàn)也是作為一

18、個(gè)插件配置入panosalado.xml中的,其中id標(biāo)識(shí)每個(gè)獨(dú)立插件,而depth屬性則是說(shuō)明顯示層次的。如果是panosalado部分,里面子配置部分則說(shuō)明的是采用什么方式進(jìn)行顯示全景以及所關(guān)聯(lián)到的外部資源,如這里是用sphere球體的方式。利用xml配置文件和模塊分塊導(dǎo)入的方式,使得panosalado引擎在修改和擴(kuò)展方面顯的更為靈活。2.2 panosalado引擎中的核心類zephyr .camera包:pscamera3d 類:pscamera3d 繼承于papervision3d中的camera3d類,作用相當(dāng)于用戶的“眼睛”,是用戶觀看全景圖的媒介。zephyr .object包:cube類:cube類繼承于papervision3d中的trianglemesh3d類,主要是實(shí)現(xiàn)圖片映射到正方體中展現(xiàn)全景效果。cyliner類:cyliner類繼承于papervision

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論