




已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1基于java3D的模型動(dòng)作引擎中文摘要本工程著重對既有三維模型的復(fù)用,和對模型動(dòng)畫的制作?,F(xiàn)在業(yè)界很少有基于java3D的動(dòng)畫引擎,本工程也是對java3d在動(dòng)畫方面的創(chuàng)新。工程圍繞對3DMax文件格式的解析,動(dòng)畫幀的設(shè)計(jì),動(dòng)畫文件的存儲(chǔ),動(dòng)畫的驅(qū)動(dòng),以及用戶界面的設(shè)計(jì)做了詳盡的說明,并提供了可運(yùn)行的范例代碼。在工程的尾聲部分,著重說明了代碼的重構(gòu)過程和調(diào)試方式。使代碼更加精簡,易讀。英文摘要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略高。可以說兩者不相伯仲,可以任選其一。我選擇用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)出(采用對象導(dǎo)入導(dǎo)出技術(shù),對動(dòng)作組進(jìn)行反射壓棧),本地?cái)?shù)據(jù)庫訪問。對象模塊: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)軸,三維地面參考,源路徑檢測??刂颇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è)長整數(shù)為:4A5C3B8F,那么5C4A是低位,8F3B是高位。對于數(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ì)(屬于對象模塊)對于模型的每一個(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等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 品牌連鎖聯(lián)營店合同協(xié)議
- 微信餐飲加盟合同協(xié)議
- 商標(biāo)專利合同協(xié)議
- 品牌銷售定價(jià)協(xié)議書范本
- 員工餐配送協(xié)議供貨合同
- 正規(guī)轉(zhuǎn)讓機(jī)器合同協(xié)議
- 咖啡店蛋糕合同協(xié)議
- 咨詢會(huì)員合同協(xié)議
- 商場合同到期協(xié)議
- 快遞客棧轉(zhuǎn)讓協(xié)議書模板
- 2024年全國高中生物聯(lián)賽競賽試題和答案
- 財(cái)務(wù)指標(biāo)簡易操作計(jì)算器-小白版
- 刻字機(jī)快速使用指南
- 電路 (第四版) 全套教學(xué)課件
- 肥料、農(nóng)藥采購服務(wù)方案(技術(shù)方案)
- ISO17025經(jīng)典培訓(xùn)教材
- 磚砌隔油池施工方案
- 2022山東省中魯遠(yuǎn)洋漁業(yè)股份限公司招聘23人上岸筆試歷年難、易錯(cuò)點(diǎn)考題附帶參考答案與詳解
- GA/T 1999.2-2022道路交通事故車輛速度鑒定方法第2部分:基于汽車事件數(shù)據(jù)記錄系統(tǒng)
- 地基釬探記錄表
- 中班科學(xué)《筷子提米》
評論
0/150
提交評論