




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1基于java3D的模型動(dòng)作引擎中文摘要本工程著重對(duì)既有三維模型的復(fù)用,和對(duì)模型動(dòng)畫的制作?,F(xiàn)在業(yè)界很少有基于java3D的動(dòng)畫引擎,本工程也是對(duì)java3d在動(dòng)畫方面的創(chuàng)新。工程圍繞對(duì)3DMax文件格式的解析,動(dòng)畫幀的設(shè)計(jì),動(dòng)畫文件的存儲(chǔ),動(dòng)畫的驅(qū)動(dòng),以及用戶界面的設(shè)計(jì)做了詳盡的說明,并提供了可運(yùn)行的范例代碼。在工程的尾聲部分,著重說明了代碼的重構(gòu)過程和調(diào)試方式。使代碼更加精簡(jiǎn),易讀。英文摘要Thisproject,toalreadyhavingthereplyingandusingofathreedimensionalmodelemphatically,andthemakingofthemodelanimation.Seldomthereisaengineofanimationbasedonjava3Dintheindustrynow,thisprojectisinnovationinanimationtojava3dtoo.Theprojectcentresontheanalysisof3DMaxfilelayout,thedesignoftheanimationframe,thememoryoftheanimationfilecorrectly,driveofanimation,anddesign,userofinterfacemakeexhaustiveexplanation,haveofferedtheexamplecodethatcanbeoperated.Insomeofcodaoftheproject,havestatedconstructingthecourseanddebuggingthewayagainofthecodeemphatically.Makethecodesimplifiedfurther,legible.關(guān)鍵詞Java3D、GUI、Swing、GUI、重構(gòu)1、概述1.1需求分析在3D愈來愈普及的情況下,了解并掌握相關(guān)知識(shí)已經(jīng)成為從業(yè)者的當(dāng)務(wù)之急。1.2開發(fā)工具選擇目前開發(fā)三維圖形有幾種工具:windows上的directx,支持多平臺(tái)的openGL。論資源,openGL和directx都有很多的可參考編程實(shí)例可以參考。其中directx由于有比較快的更新速度,集成程度比openGL高。OpenGL由于是硬件接口,比directx的硬件映射模式速度略高。據(jù)我觀察,directx的普及率比openGL略高??梢哉f兩者不相伯仲,可以任選其一。我選擇用java開發(fā),因?yàn)橛幸粋€(gè)系統(tǒng)的3D程序設(shè)計(jì)結(jié)構(gòu)有利于以后向其他語言轉(zhuǎn)變。而java的系統(tǒng)化正是他的優(yōu)點(diǎn)。1.3可行性分析現(xiàn)在用java開發(fā)3d游戲有兩種途徑:/1:java3D.這里面還分基于openGL和基于directx兩種。/2:jogl。也就是java+openGL的縮寫java3d的結(jié)構(gòu)繼承了java的嚴(yán)謹(jǐn)。條理性趨近于完美。其結(jié)構(gòu)如下:VirtualUniverse|Locale|/BGBG2|TGTG|ShapeViewPlatform=View=Canvas3D=Screen3D|/ApGeViewerEnviormentBG:BranchGroup分支節(jié)點(diǎn)TG:TransformGroup變換節(jié)點(diǎn),可以用變換矩陣控制Ap:Appearance物體外觀數(shù)據(jù)Ge:Geometry物體形狀數(shù)據(jù)效率問題:java3D最大的問題就在于效率,實(shí)現(xiàn)同樣的東西,F(xiàn)PS遠(yuǎn)不及用VC+D3D實(shí)現(xiàn)的高。這就是jogl產(chǎn)生的原因。缺陷:動(dòng)態(tài)加載就很成問題。1.4工程定位及概念設(shè)計(jì)我選擇制作模型動(dòng)畫引擎,并選擇最著名的模型制作軟件3DMax制作出來的模型(*.3ds)作為我的引擎導(dǎo)入模型格式。這不僅因?yàn)?ds模型逼真,而且這種模型在網(wǎng)上有很多共享資源可以使用。2、基于java的模型動(dòng)作引擎的選定和系統(tǒng)總體設(shè)計(jì)有人說種純oo的語言:java,c#在程序設(shè)計(jì)上強(qiáng)制oo,不僅僅帶來了條理性和可靠性,在可重用方面更是其他語言不能比擬的。2.1工程的劃分主模塊/驅(qū)動(dòng)模塊:AnimationEditor.java功能:一切模型和視角動(dòng)作的驅(qū)動(dòng)(用主循環(huán)實(shí)現(xiàn)),程序入口(main方法和setup方法),GUI部分及響應(yīng)(Swing類庫和Listener的使用)。IO模塊:ModelLoader.java,F(xiàn)rameIO.java,LocalDAO.java功能:負(fù)責(zé)模型的導(dǎo)入(3ds格式的解析,形成java3D格式模型),動(dòng)畫的導(dǎo)入和導(dǎo)出(采用對(duì)象導(dǎo)入導(dǎo)出技術(shù),對(duì)動(dòng)作組進(jìn)行反射壓棧),本地?cái)?shù)據(jù)庫訪問。對(duì)象模塊:Aframe.java,MoveMatrix.java,ModelStruc.java功能:幀結(jié)構(gòu),動(dòng)畫結(jié)構(gòu),模型結(jié)構(gòu)功能模塊:FrameAccesser.java,FramePlayer.java,ModelCutter.java,功能:幀結(jié)構(gòu)訪問代理類,動(dòng)畫播放類(插值器),模型切分類(反射機(jī)制實(shí)現(xiàn))輔助模塊:Axis.java,Land.java,srcNameCheck.java功能:坐標(biāo)軸,三維地面參考,源路徑檢測(cè)??刂颇K:GameControl.java,PickHighLightBehavior.java功能:編輯器視圖控制,被選擇部分模型高亮顯示。資源模塊:*.3ds,*.ani功能:模型資源,動(dòng)畫資源2.2結(jié)構(gòu)流程圖32.3數(shù)據(jù)存儲(chǔ)方式選擇由于采用3dmax的*.3ds作為導(dǎo)入資源,所以用平面文件存儲(chǔ)數(shù)據(jù)比用數(shù)據(jù)庫更具有靈活性和可擴(kuò)展性。用戶可以方便的通過復(fù)制粘貼,或者指定路徑來編輯指定模型的動(dòng)畫。每個(gè)模型的動(dòng)畫被存為單獨(dú)的文件,便于傳播和拷貝。2.4設(shè)計(jì)環(huán)境采用IDE:Eclipse環(huán)境:WindowsXPprofessionaledition,javasdk1.4.1.2,java3d-1_3_1-windows-i586-opengl-sdk3、數(shù)據(jù)結(jié)構(gòu)分析與設(shè)計(jì)3.1導(dǎo)入數(shù)據(jù)結(jié)構(gòu)分析(屬于IO模塊)3ds文件數(shù)據(jù)是由塊(chunks)組成的。塊描述了緊接著的數(shù)據(jù)的信息,和數(shù)據(jù)的組成,以及數(shù)據(jù)塊的ID和下一個(gè)塊的位置。如果有不明數(shù)據(jù)塊,就忽略他。下一個(gè)塊的指針在這個(gè)不明塊的開始就有說明。3ds文件的二進(jìn)制信息使用非常特殊的方式寫的,也就是匯編方式,與正常的高位和地位正好相反。比如:4A5C,那么5c是高位,4A是地位。如果一個(gè)長(zhǎng)整數(shù)為:4A5C3B8F,那么5C4A是低位,8F3B是高位。對(duì)于數(shù)據(jù)塊,被定義為:startendsizename012ChunkID254PointertonextchunkrelativetotheplacewhereChunkIDis,inotherwordsthelengthofthechunk塊有一個(gè)用ID表明的層次關(guān)系。3DS文件的主塊ID是4D4DH。這個(gè)塊永遠(yuǎn)是文件的第一個(gè)塊。4下面的表就是塊樹的層次關(guān)系,不同的塊ID就表明了他們的屬性和位置。每一個(gè)塊都被起了一個(gè)名字,這樣是為了更便于將其放在源代碼中。MAIN3DS(0x4D4D)|+-EDIT3DS(0x3D3D)|+-EDIT_MATERIAL(0xAFFF)|./詳見3Dmax文檔.|+-KEYF3DS(0xB000)|+-KEYF_UNKNWN01(0xB00A)+-.(0x7001)(viewport,sameaseditor)3.2模型結(jié)構(gòu)拆分(屬于功能模塊)在導(dǎo)入3ds模型的時(shí)候形成了以整體模型為根節(jié)點(diǎn)的BranchGroup,其模型的樹狀結(jié)構(gòu)如下:TG整體模型|BG|BGBG.|TGTG|ShapeShape.這些是模型最小分割|GeoAp在java樹中,我們可以用父節(jié)點(diǎn)枚舉子節(jié)點(diǎn)。利用反射原理,將整個(gè)的模型分割成最小的塊。下面的ModelCutter類用來分割模型。publicclassModelCutter3.3幀結(jié)構(gòu)設(shè)計(jì)(屬于對(duì)象模塊)對(duì)于模型的每一個(gè)最小細(xì)分,一個(gè)幀應(yīng)該記錄這個(gè)最小細(xì)分的三維位置向量,三維旋轉(zhuǎn)量,和三維比例。除了這些,幀還應(yīng)該有自己在整個(gè)動(dòng)畫里面的序號(hào),指向前一個(gè)幀和后一個(gè)幀的指
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 高科技廠房電氣系統(tǒng)安裝與優(yōu)化合同
- 畢業(yè)生就業(yè)保障與就業(yè)培訓(xùn)合作協(xié)議
- 跨國(guó)公司內(nèi)部員工保密及離職競(jìng)業(yè)禁止實(shí)施協(xié)議
- 公共機(jī)構(gòu)節(jié)能辦公用品采購(gòu)項(xiàng)目合同
- 產(chǎn)業(yè)園智慧城市建設(shè)合作協(xié)議
- 情感調(diào)解合同情侶矛盾調(diào)解與情感修復(fù)協(xié)議
- 草莓種植基地與民宿合作合同
- 汽車抵押貸款保險(xiǎn)合同范本
- 車身廣告租賃與綠色出行推廣合作協(xié)議
- 尿常規(guī)紅細(xì)胞臨床意義解析
- 《酒店銷售技巧培訓(xùn)》課件
- 【基于杜邦分析體系的企業(yè)盈利能力分析文獻(xiàn)綜述及理論基礎(chǔ)2700字】
- 岐黃天使中醫(yī)西學(xué)中專項(xiàng)128學(xué)時(shí)試題答案
- 鋁合金門窗報(bào)價(jià)表-
- 物業(yè)維修服務(wù)合同協(xié)議書
- 安全生產(chǎn)環(huán)境保護(hù)與職業(yè)健康管理制度匯編
- 中西文化鑒賞 通識(shí)課課件 3.2 中國(guó)古建筑
- 電扶梯發(fā)生夾人夾物現(xiàn)場(chǎng)處置方案演練
- 事業(yè)單位工作人員調(diào)動(dòng)審批表格
- 中藥湯劑的正確熬制和服用方法
- 醫(yī)院基建科各項(xiàng)工作風(fēng)險(xiǎn)分析
評(píng)論
0/150
提交評(píng)論