畢業(yè)設(shè)計(jì)(論文)基于Java3D的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)_第1頁
畢業(yè)設(shè)計(jì)(論文)基于Java3D的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)_第2頁
畢業(yè)設(shè)計(jì)(論文)基于Java3D的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)_第3頁
畢業(yè)設(shè)計(jì)(論文)基于Java3D的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)_第4頁
畢業(yè)設(shè)計(jì)(論文)基于Java3D的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)論文 基于基于 java3d 的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn) 摘要摘要:互聯(lián)網(wǎng)的出現(xiàn)及飛速發(fā)展使 it 業(yè)的各個(gè)領(lǐng)域發(fā)生了深刻的變化, 它必然引發(fā)一些新技術(shù)的出現(xiàn)。3d 圖形技術(shù)并不是一個(gè)新話題,在圖形 工作站以至于 pc 機(jī)上早已日臻成熟,并已應(yīng)用到各個(gè)領(lǐng)域。然而互聯(lián) 網(wǎng)的出現(xiàn),卻使 3d 圖形技術(shù)發(fā)生了和正在發(fā)生著微妙而深刻的變化。 web3d 協(xié)會(huì)(前身是 vrml 協(xié)會(huì))最先使用 web3d 術(shù)語,這一術(shù)語的 出現(xiàn)反映了這種變化的全貌,沒有人能嚴(yán)格定義 web3d,在這里我們把 web3d 理解為:互聯(lián)網(wǎng)上的 3d 圖形技術(shù),互聯(lián)網(wǎng)代表了未來的新技術(shù), 很

2、明顯,3d 圖形和動(dòng)畫將在互聯(lián)網(wǎng)上占有重要的地位。 java3d api 是 sun 定義的用于實(shí)現(xiàn) 3d 顯示的接口。使用 java 的重 要理由之一是它的平臺(tái)無關(guān)性。java3d 提供了基于 java 的上層接口。 java3d 把 opengl 和 directx 這些底層技術(shù)包裝在 java 接口中。這種全 新的設(shè)計(jì)使 3d 技術(shù)變得不再繁瑣并且可以加入到 j2se、j2ee 的整套架 構(gòu),這些特性保證了 java3d 技術(shù)強(qiáng)大的擴(kuò)展性 本文以 java3d 為開發(fā)平臺(tái),利用 java 語言強(qiáng)大的網(wǎng)絡(luò)功能,實(shí)現(xiàn) 了在網(wǎng)頁上對(duì) 3d 動(dòng)畫進(jìn)行顯示和操作。 關(guān)鍵字關(guān)鍵字:java3d、we

3、b3d、三維 abstract: the internet appearance and the rapid development caused each domain to it industry have the deep transformation, it initiated some new technical inevitably the appearance. the 3d graph technology is not a new topic, in the graph workstation down to on pc machine already more or day

4、 matured, and has applied to each domain. however the internet appearance, caused the 3d graph technology to occur actually and is occurring is being subtle but the deep transformation. the web3d association (predecessor is the vrml association) uses the web3d terminology first, this terminology app

5、earance had reflected this kind of change complete picture, nobody can strictly define web3d, in here we do the web3d understanding is: on the internet 3d graph technology, the internet has represented the future new technology, is very obvious, the 3d graph and the animation will hold the important

6、 status on the internet. java3d api is the sun definition uses in realizing the 3d demonstration connection. uses one of java important reasons is its platform irrelevant. java3d has provided based on the java upper formation connection. java3d 畢業(yè)設(shè)計(jì)論文 opengl and directx these first floor technology

7、packing in java connection. this kind of brand-new design causes the 3d technology to change no longer tediously and may join to j2se, the j2ee entire wrap overhead construction, these characteristics have guaranteed the java3d technology formidable extension. this article develops the platform take

8、 java3d, uses the java language formidable network function nf, realized has carried on the demonstration and the operation on the homepage to the 3d animation. key word: java3d, web3d,3d 畢業(yè)設(shè)計(jì)論文 目錄目錄 基于基于 java3d 的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn)的網(wǎng)絡(luò)三維技術(shù)的設(shè)計(jì)與實(shí)現(xiàn).1 摘要摘要:.1 abstract:.1 第一章第一章 緒論緒論.5 1.1 引言 .5 1.2 互聯(lián)網(wǎng) 3d 圖形技術(shù)

9、的應(yīng)用.5 1.3 java3d 在 web中的成功 .6 第二章第二章 java3d 技術(shù)的簡(jiǎn)介技術(shù)的簡(jiǎn)介.7 2.1 java3d 概述.7 2.1.1 java3d簡(jiǎn)介.7 2.1.2 java3d與其他三維技術(shù)的比較.7 2.2 java3d 的場(chǎng)景圖結(jié)構(gòu).9 2.2.1 虛擬宇宙(virtual universe).10 2.2.2 java3d的坐標(biāo)系統(tǒng).10 2.2.3 場(chǎng)景(locale).12 2.3 實(shí)現(xiàn)三維世界 .13 2.3.1 java3d的觀察模式.13 2.3.2 java3d中用來定義觀察的對(duì)象.14 2.3.3 在三維世界中建立、移動(dòng)觀察點(diǎn).16 2.3.4

10、java3d的網(wǎng)絡(luò)基礎(chǔ).17 第三章第三章 實(shí)現(xiàn)實(shí)現(xiàn) java3d 結(jié)構(gòu)體系的方法結(jié)構(gòu)體系的方法.17 3.1 總體設(shè)計(jì) .17 3.2 基本形體的生成 .17 3.2.1平板的生成.17 3.2.2 立方體的生成.18 3.2.3 圓錐的生成.18 3.2.4 球體的生成.18 3.2.5.圓柱體的生成.19 3.3 點(diǎn)、線、面的生成 .19 3.3.1點(diǎn)的生成.19 3.3.2直線的生成.20 畢業(yè)設(shè)計(jì)論文 3.3.3面的生成.20 3.4 外部復(fù)雜形體的調(diào)用 .21 3.5 背景變換的實(shí)現(xiàn)方法.21 3.5.1 燈光.21 3.5.2 紋理貼圖.23 3.5.3 霧.23 3.6 動(dòng)畫的

11、生成 .23 第四章第四章 java3d 場(chǎng)景的實(shí)現(xiàn)場(chǎng)景的實(shí)現(xiàn).24 4.1java3d 的實(shí)現(xiàn)流程.24 4.2 java3d 的建模.25 4.2.1 生成場(chǎng)景:.25 4.2.2 temple的圓柱體的構(gòu)建.25 4.2.3 tower的構(gòu)建.26 4.3 動(dòng)畫的實(shí)現(xiàn) .28 4.3.1 調(diào)用galleon.obj文件.28 4.3.2 物體轉(zhuǎn)動(dòng).29 4.3.3場(chǎng)景的移動(dòng).29 4.4 背景變換 .31 4.4.1 創(chuàng)建燈光.31 4.4.2 創(chuàng)建背景圖片.34 4.4.3 指數(shù)霧.35 4.4.4 背景音樂.36 4.5 在網(wǎng)頁上顯示 3d 圖形.37 第五章第五章 實(shí)踐和展望實(shí)踐和

12、展望.39 5.1 web3d 技術(shù)發(fā)展前景.39 5.2 論文總結(jié) .40 參考文獻(xiàn)參考文獻(xiàn).40 畢業(yè)設(shè)計(jì)論文 第一章第一章 緒論緒論 1.1 引言引言 互聯(lián)網(wǎng)的出現(xiàn)及飛速發(fā)展使 it 業(yè)的各個(gè)領(lǐng)域發(fā)生了深刻的變化,它 必然引發(fā)一些新技術(shù)的出現(xiàn)。3d 圖形技術(shù)并不是一個(gè)新話題,在圖形工 作站以至于 pc 機(jī)上早已日臻成熟,并已應(yīng)用到各個(gè)領(lǐng)域。然而互聯(lián)網(wǎng) 的出現(xiàn),卻使 3d 圖形技術(shù)發(fā)生了和正在發(fā)生著微妙而深刻的變化。web 3d 協(xié)會(huì)(前身是 vrml 協(xié)會(huì))最先使用 web3d 術(shù)語,這一術(shù)語的出現(xiàn) 反映了這種變化的全貌,沒有人能嚴(yán)格定義 web3d,在這里我們把 web 3d 理解為:

13、互聯(lián)網(wǎng)上的 3d 圖形技術(shù),互聯(lián)網(wǎng)代表了未來的新技術(shù),很 明顯,3d 圖形和動(dòng)畫將在互聯(lián)網(wǎng)上占有重要的地位。 1.2 互聯(lián)網(wǎng)互聯(lián)網(wǎng) 3d 圖形技術(shù)的應(yīng)用圖形技術(shù)的應(yīng)用 當(dāng)前,互聯(lián)網(wǎng)上的圖形仍以 2d 圖像為主流。但是,3d 圖形必將在 互聯(lián)網(wǎng)上占有重要地位?;ヂ?lián)網(wǎng)上的交互式 3d 圖形技術(shù)- web3d 正在 取得新的進(jìn)展,正在脫離本地主機(jī)的 3d 圖形,而形成自己獨(dú)立的框架 ?;ヂ?lián)網(wǎng)的需求是它發(fā)展的動(dòng)力?;ヂ?lián)網(wǎng)的內(nèi)容提供商和商業(yè)網(wǎng)站不斷 使用新的工具與技術(shù)使網(wǎng)站更具吸引力,web3d 圖形是最新的和最具魅 力的技術(shù)。web3d 圖形將在互聯(lián)網(wǎng)上有廣泛應(yīng)用,從目前的趨勢(shì)來看主 要有: 1.電子

14、商務(wù): 用 3d 圖形展示商品,更能吸引客戶。虛擬商場(chǎng)是人們熱中的話題 ??蛻艨梢栽谔摂M商場(chǎng)中漫游,挑選商品。許多 web3d 圖形技術(shù)的軟件 廠商是瞄準(zhǔn)了電子商務(wù)的,如 cult3d 和 viewpoint,其圖形技術(shù)主要是用 于商品的 3d 展示,您甚至于可以在網(wǎng)上操作或使用要購買的商品。然 而,web3d 圖形的商業(yè)利益究竟有多大,網(wǎng)上的商品銷售商只有在能增 加銷售額的情況下,才肯出資制作 web3d 圖形。 2. 聯(lián)機(jī)娛樂休閑與游戲: 多用戶聯(lián)機(jī) 3d 游戲?qū)嵘匣ヂ?lián)網(wǎng),現(xiàn)在您已經(jīng)可以在網(wǎng)上經(jīng)歷簡(jiǎn) 單的賽車或空中射擊游戲,下載文件不超過 2m。當(dāng)然,如果您想運(yùn)行大 的聯(lián)機(jī)游戲仍然需要

15、cd-rom 的支持。娛樂休閑網(wǎng)站對(duì) web3d 圖形有 更多的需求,如:城市景觀或風(fēng)景點(diǎn)的虛擬旅游,虛擬博物館,展覽會(huì) ,藝術(shù)畫廊等等。 3. 醫(yī)學(xué): 醫(yī)療培訓(xùn),醫(yī)療商業(yè)的 b2b 和 b2,許多醫(yī)學(xué)圖像的處理將使用 we b3d 圖形技術(shù)。 4. 地理信息系統(tǒng)的數(shù)據(jù)可視化: 將 gis 與 web3d 結(jié)合起來,可以在互聯(lián)網(wǎng)上建立許多應(yīng)用系統(tǒng), 畢業(yè)設(shè)計(jì)論文 如地圖,導(dǎo)游,城市建設(shè),交通運(yùn)輸?shù)鹊取?5. 多用戶虛擬社區(qū)(virtual-community): 虛擬社區(qū)是建立一個(gè)大型的虛擬場(chǎng)景,每個(gè)虛擬場(chǎng)景的訪問者都可 以指定一個(gè)替身, 替身在場(chǎng)景中可以漫游。當(dāng)幾個(gè)遠(yuǎn)程訪問者同時(shí) 訪問虛擬社

16、區(qū)時(shí),它們可以用語音或文字通訊。虛擬社區(qū)可以是一個(gè)會(huì) 場(chǎng),教室,俱樂部,展覽會(huì),畫廊等。它真正實(shí)現(xiàn)了虛擬現(xiàn)實(shí),在互聯(lián) 網(wǎng)上仿真虛擬社會(huì)的各種活動(dòng),分布在世界各地的人可以借助互聯(lián)網(wǎng)開 展各種文化科技,娛樂活動(dòng)。而此時(shí)虛擬場(chǎng)景就是他們的三維環(huán)境。虛 擬社區(qū)很可能是 web3d 圖形在互聯(lián)網(wǎng)上的一種主要應(yīng)用形式。 現(xiàn)在,已有幾家公司推出了自己虛擬社區(qū)及全套的解決方案,如 bla xxun, adobe atmosphere. geometrek ,cybertown, outerworlds, ber kom ,activeworlds,icity,pointworlds 等。它們除了提供虛擬場(chǎng)景制

17、 作以外,還提供:服務(wù)器管理,通訊管理,用戶管理等功能。blaxxun 公 司 virtual worlds platform 5.1 服務(wù)器已經(jīng)有許多網(wǎng)站用它建立虛擬社區(qū) 。 1.3 java3d 在在 web 中的成功中的成功 java 在互聯(lián)網(wǎng)上幾乎隨處可見,而它在 3d 圖形上正在顯示出更大 的威力。使用 java 的重要理由之一是它的平臺(tái)無關(guān)性。它的平臺(tái)無關(guān)性 來自于 java 只需部分編譯,負(fù)責(zé)編譯 java 程序的叫做 java virtual mac hine (jvm),不同的平臺(tái)有它自己 jvm,處理與平臺(tái)相關(guān)的功能。因此 ,只要支持 jvm,就能運(yùn)行 java 小程序。兩

18、種最有名的瀏覽器 netsca pe 和 ie 3 都支持 jvm(java 1.0.2)。因此用 java 制作的 3d 圖形幾 乎都可以在互聯(lián)網(wǎng)的瀏覽器上顯示。令人遺憾的是:微軟在它的未來極具 發(fā)展前景的 window xp 中不再預(yù)裝 jvm,由此引起的麻煩是巨大的:要 運(yùn)行基于 java 的應(yīng)用,就必須安裝 jvm,這顯然比安裝一個(gè)插件更麻 煩。 由于全世界有 90%的人上網(wǎng)使用微軟不要錢的瀏覽器 ie,而 web3d 的渲染引擎插件又必須安裝在 ie 上。面對(duì) web3d 技術(shù)未來的發(fā)展?jié)摿?,軟件巨人微軟作何打算我們不得而知。shout interactive and blaxxu

19、n 兩個(gè)公司使用純 java 技術(shù)開發(fā)了實(shí)時(shí)渲染引擎(大小只有 50k),這個(gè) 小小的 java 小程序,不僅在網(wǎng)上自動(dòng)下載,而且可以在客戶端實(shí)時(shí)渲 染 3d 場(chǎng)景,逐幀顯示動(dòng)態(tài)的 3d 圖像。shout interactive and blaxxun 為 用戶擴(kuò)充自己的 3d 圖形功能預(yù)留了極大的空間。兩個(gè)公司并沒有拋棄 vrml,shout interactive 公司可以接受 vrml 文件,并把它變成自己的 文件格式,blaxxun 公司的軟件可以直接運(yùn)行 vrml。當(dāng)然,shout3d 的 小巧靈活并不是沒有代價(jià)的:它簡(jiǎn)化了 vrml 的功能,vrml 的一些功 能不能用小小 50k

20、 的 java 來實(shí)現(xiàn)??梢哉f這兩個(gè)公司最先在它們的產(chǎn)品 中實(shí)現(xiàn)了核心的 x3d 技術(shù)。 畢業(yè)設(shè)計(jì)論文 使用這種無插件技術(shù)(plug-in)的 shout 公司為 macys and excite web portal 網(wǎng)站制作了栩栩如生如生的 3d 虛擬時(shí)裝模特展示,觀看者用 菜單可以選擇:展示的服裝,模特的膚色,發(fā)型,步型,甚至于燈光都 可以用菜單即刻更換。觀看者可以用鼠標(biāo)變換視角,遠(yuǎn)近,從各個(gè)角度 觀看動(dòng)態(tài)展示。而所有的展示文件只有 1m-2m,不需下載插件。圖像的 質(zhì)量較好,人物動(dòng)畫的動(dòng)作流暢自然。 第二章第二章 java3d 技術(shù)的簡(jiǎn)介技術(shù)的簡(jiǎn)介 java3d 用其自己定義的場(chǎng)景圖和

21、觀察模式等技術(shù)構(gòu)造了 3d 的上層 結(jié)構(gòu),實(shí)現(xiàn)了在 java 平臺(tái)使用三維技術(shù)。本章將介紹 java3d 特有的兩 個(gè)重要概念:場(chǎng)景圖(scene graph)、觀察模式(view model)。在 接口使用上的介紹分為兩部分:說明如何使用 java3d 接口;說明如何將 java3d 技術(shù)與 java 原有的 web 技術(shù)(jsp、serverlet)相結(jié)合,在網(wǎng)頁 上實(shí)現(xiàn)三維顯示。 2.1 java3d 概述概述 2.1.1 java3d 簡(jiǎn)介簡(jiǎn)介 java3d api 是 sun 定義的用于實(shí)現(xiàn) 3d 顯示的接口。3d 技術(shù)是底層 的顯示技術(shù),java3d 提供了基于 java 的上層接

22、口。java3d 把 opengl 和 directx 這些底層技術(shù)包裝在 java 接口中。這種全新的設(shè)計(jì)使 3d 技 術(shù)變得不再繁瑣并且可以加入到 j2se、j2ee 的整套架構(gòu),這些特性保 證了 java3d 技術(shù)強(qiáng)大的擴(kuò)展性。 java3d 建立在 java2(java1.2)基礎(chǔ)之上,java 語言的簡(jiǎn)單性 使 java3d 的推廣有了可能。它實(shí)現(xiàn)了以下三維顯示能夠用到的功能: 1. 生成簡(jiǎn)單或復(fù)雜的形體(也可以調(diào)用現(xiàn)有的三維形體) 2. 使形體具有顏色、透明效果、貼圖 3. 在三維環(huán)境中生成燈光、移動(dòng)燈光 4. 具有行為的處理判斷能力(鍵盤、鼠標(biāo)、定時(shí)等) 5. 生成霧、背景、聲音

23、 6. 使形體變形、移動(dòng)、生成三維動(dòng)畫 7. 編寫非常復(fù)雜的應(yīng)用程序,用于各種領(lǐng)域如 vr(虛擬現(xiàn)實(shí)) 畢業(yè)設(shè)計(jì)論文 2.1.2 java3d 與其他三維技術(shù)的比較與其他三維技術(shù)的比較 java3d 可應(yīng)用在三維動(dòng)畫、三維游戲、機(jī)械 cad 等多個(gè)領(lǐng)域。但 作為三維顯示實(shí)現(xiàn)技術(shù),它并不是唯一選擇而且是一個(gè)新面孔。在 java3 d 之前已經(jīng)存在很多三維技術(shù),這些三維技術(shù)在實(shí)現(xiàn)的技術(shù)、使用的語 言以及適用的情況上各有不同,我主要介紹與 java3d 又密切關(guān)系的三種 技術(shù):opengl、direct3d、vrml opengl opengl 是業(yè)界最為流行也是支持最廣泛的一個(gè)底層 3d 技術(shù),幾

24、乎 所有的顯卡廠商都在底層實(shí)現(xiàn)了對(duì) opengl 的支持和優(yōu)化。opengl 同 時(shí)也定義了一系列接口用于編程實(shí)現(xiàn)三維應(yīng)用程序,但是這些接口使用 c(c+)語言實(shí)現(xiàn)并且很復(fù)雜。掌握針對(duì) opengl 的編程技術(shù)需要花費(fèi) 大量時(shí)間精力。 direct3d direct3d 是 microsoft 公司推出的三維圖形編程 api,它主要應(yīng)用 于三維游戲的編程。眾多優(yōu)秀的三維游戲都是由這個(gè)接口實(shí)現(xiàn)。與 open gl 一樣,direct3d 的實(shí)現(xiàn)主要使用 c+語言。 vrml2.0(vrml97) 自 1997 年 12 月正式成為國(guó)際標(biāo)準(zhǔn)之后,在網(wǎng)絡(luò)上得到了廣泛的應(yīng) 用,這是一種比 basic、

25、javascript 等還要簡(jiǎn)單的語言。腳本化的語 句可以編寫三維動(dòng)畫片、三維游戲、計(jì)算機(jī)三維輔助教學(xué)。它最大的優(yōu) 勢(shì)在于可以嵌在網(wǎng)頁中顯示,但這種簡(jiǎn)單的語言功能較弱(如目前沒有 形體之間的碰撞檢查功能),與 java 語言等其它高級(jí)語言的連接較難 掌握,因而逐漸被淹沒在競(jìng)爭(zhēng)激烈的網(wǎng)絡(luò)三維技術(shù)中。 表 1 是 java3d 與其它三維技術(shù)的比較圖,可以從中直觀的看出他們 相互間的區(qū)別: 技術(shù)實(shí)現(xiàn)層次 開發(fā)技術(shù)(難 度) 擴(kuò)展性 最適合應(yīng)用領(lǐng) 域 java3 d 中層(jvm)java(較易) j2se 標(biāo)準(zhǔn)擴(kuò)展 (好) 網(wǎng)上三維顯示 實(shí)現(xiàn) open gl 底層(顯卡)cc+(難) 各大廠商支持

26、 (較好) 三維設(shè)計(jì)軟 件 direct 3d 底層(操作系 統(tǒng)) c+(較難) windows 平臺(tái) (差) 三維游戲 畢業(yè)設(shè)計(jì)論文 vrm l 上層(網(wǎng)頁) 標(biāo)記語言(容 易) 安裝插件支持 (一般) 網(wǎng)上虛擬現(xiàn) 實(shí) 表表 1:3d 技術(shù)對(duì)招表技術(shù)對(duì)招表 2.2 java3d 的場(chǎng)景圖結(jié)構(gòu)的場(chǎng)景圖結(jié)構(gòu) java3d 實(shí)際上是 java 語言在三維圖形領(lǐng)域的擴(kuò)展,與 java 一樣,ja va3d 有純粹的面向?qū)ο蠼Y(jié)構(gòu)。java3d 的數(shù)據(jù)結(jié)構(gòu)采用的是 scene graph s structure(場(chǎng)景圖),就是一些具有方向性的不對(duì)稱圖形組成的樹狀結(jié) 構(gòu)(圖 1)。 實(shí)際由 java3d

27、定義的一系列的對(duì)象,這些對(duì)象不是雜亂無序,對(duì)象 之間也不是毫無關(guān)系。如果想讓三維圖像正常顯示,必須在這兩點(diǎn)上遵 循 java3d 場(chǎng)景圖的規(guī)定。觀察圖 1,java3d 場(chǎng)景圖的樹結(jié)構(gòu)由各種各樣 的對(duì)象組成: 在圖中出現(xiàn)的這些對(duì)象都實(shí)現(xiàn)了 java3d 中有重要的意義的類,從邏 輯上我將它們分為三類: 根節(jié)點(diǎn)(root):virtual universe object 節(jié)點(diǎn)(node):local object、branch group nodes、behavior node、shape3d node 葉子節(jié)點(diǎn)(leaf):appearance、geometry. 圖圖 1:在應(yīng)用中的:在應(yīng)用

28、中的 java3d 場(chǎng)景圖場(chǎng)景圖 場(chǎng)景圖中線和線的交匯點(diǎn)稱為節(jié)點(diǎn)(node),這些節(jié)點(diǎn)都是 java3d 類的實(shí)例(instance of class),節(jié)點(diǎn)之間的線表示各個(gè)實(shí)例之間的關(guān)系 。 virtual universe 是根節(jié)點(diǎn),每一個(gè)場(chǎng)景圖的 virtual universe 是 唯一的。 畢業(yè)設(shè)計(jì)論文 在 virtual universe 下面是 locale 節(jié)點(diǎn),每個(gè)程序可以有一個(gè)或 多個(gè) locale,但同時(shí)只能有一個(gè) locale 處于顯示狀態(tài),就好像一個(gè)三維 世界非常大,有很多個(gè)景點(diǎn),但我同時(shí)只能在一個(gè)景點(diǎn)進(jìn)行觀察。java3 d 允許從一個(gè) locale 跳到另一個(gè) l

29、ocale,不過絕大多數(shù)程序只有一個(gè) lo cale。 每一個(gè) locale 可以擁有多個(gè) branch group 節(jié)點(diǎn)。所有三維形體 的其位置信息(transform group nodes)都建立在 branch group 節(jié)點(diǎn) 之上。 transform group node 用來設(shè)定 shape3d 在 virtual universe 中 的位置。 spape3d node 是三維圖形節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)的實(shí)體放映在最后的 顯示畫面中,就是三維世界中的每個(gè)形體。包括正方體、球體以及任何 形狀和外觀的三維形體。 位于場(chǎng)景圖最下層的是兩個(gè)葉子節(jié)點(diǎn):三維體的外觀(appearan ce)和幾

30、何信息(geometry),這兩個(gè)節(jié)點(diǎn)定義了一個(gè)三維體的顯示效 果。 view platform 位于圖 1 的另一個(gè)分枝上,與前面所有描述三維 體的性質(zhì)的概念不同,view platform 和 view 都是用來定義觀察者的信 息。 對(duì)于建立一個(gè)簡(jiǎn)單的 java3d 程序,我至少需要了解三個(gè)概念:虛擬 宇宙(virtual universe)、場(chǎng)景(locale)、坐標(biāo)系統(tǒng)。 2.2.1 虛擬宇宙(虛擬宇宙(virtual universe) 在 java3d 中,虛擬宇宙被定義為結(jié)合一系列對(duì)象的三維空間。虛擬 宇宙被用作最大的聚集體表現(xiàn)單位,同時(shí)也可被看作一個(gè)數(shù)據(jù)庫。不管 是在物理空間還

31、是邏輯內(nèi)容,虛擬宇宙都可以很大。實(shí)際上在大多數(shù)情 況下,一個(gè)虛擬宇宙就可以滿足一個(gè)應(yīng)用程序所有的需求。 虛擬宇宙是各自獨(dú)立的個(gè)體,原因是在任何時(shí)候一個(gè)結(jié)點(diǎn)對(duì)象都不 能在超過一個(gè)的虛擬宇宙中存在。同樣的,在一個(gè)虛擬宇宙中的結(jié)點(diǎn)對(duì) 象也不能在其他的虛擬宇宙中可見或者與其他的對(duì)象結(jié)合。 對(duì)于一個(gè) ja va3d 應(yīng)用程序,必須定義一個(gè)虛擬宇宙才可以在這個(gè)宇宙中顯示三維 圖像。 畢業(yè)設(shè)計(jì)論文 2.2.2 java3d 的坐標(biāo)系統(tǒng)的坐標(biāo)系統(tǒng) 默認(rèn)情況下,java3d 的坐標(biāo)系統(tǒng)是右旋的,用方位語義學(xué)來解釋就 是:正 y 方向是本地重力的上,正 x 方向是水平的右,正 z 是這對(duì)著觀 察者的方向。默認(rèn)的單

32、位是米。 雙精度浮點(diǎn)、單精度浮點(diǎn)甚至是定點(diǎn)來 表示的三維坐標(biāo)都足夠來表示和顯示豐富的 3d 場(chǎng)景。不幸的是,場(chǎng)景 不是真實(shí)世界,更不必說整個(gè)宇宙了。如果使用單精度坐標(biāo),有可能出 現(xiàn)下列情景: 1. 離原點(diǎn)僅有一百公里的距離,被描繪得相當(dāng)量子化,所能達(dá)到的 最好效果就是三分之一英寸,在實(shí)際應(yīng)用中這樣的精度比要求的粗糙的 多。 2. 如果要縮小到一個(gè)很小的尺寸(例如表現(xiàn)集成電路的大?。?,甚 至在離原點(diǎn)很近的地方就會(huì)出現(xiàn)同坐標(biāo)問題。 為了支持一個(gè)大型的鄰接虛擬宇宙,java3d 選擇了有 256 位的高分 辨率坐標(biāo): java3d 高分辨率坐標(biāo)由三個(gè) 256 位的定點(diǎn)數(shù)組成,分別表示 x、y、 z。

33、定點(diǎn)被固定在第 128 位,并且值 1.0 被定義為真實(shí)的 1 米。這個(gè)坐標(biāo) 系統(tǒng)足夠用來描述一個(gè)超過幾百萬光年距離的宇宙,也可以定義小于一 質(zhì)子大小(小于一普朗克長(zhǎng)度)的對(duì)象。 在 java3d 中,高分辨率坐標(biāo)僅僅用于將更加傳統(tǒng)的浮點(diǎn)坐標(biāo)系統(tǒng)嵌 入更高分辨率的底層系統(tǒng)。用這種方法,可以創(chuàng)造出一個(gè)具有任意大小 和規(guī)模的在視覺上無縫的虛擬宇宙,而且可以不必?fù)?dān)心數(shù)字上的精度。 (參看表 2) 一個(gè) 256 位的定點(diǎn)數(shù)還具有能夠直接表示幾乎任何的合理適當(dāng)?shù)膯?精度浮點(diǎn)值。 java3d 用有符號(hào)的、兩位補(bǔ)碼的 256 位定點(diǎn)數(shù)字來表示高分標(biāo)率坐 標(biāo)。盡管 java3d 保持內(nèi)部高分辨率坐標(biāo)表示的不

34、透明,但用戶用有八個(gè) 整型變量的數(shù)組來表示 256 位的坐標(biāo)。java3d 把數(shù)組中從索引號(hào)由 0 到 7 分別看作高分辨率坐標(biāo)的從高到底位上的數(shù)。第 128 位上是二進(jìn)制的 小數(shù)點(diǎn),也可以說在索引號(hào)為 3 和 4 的整數(shù)之間。高分辨率坐標(biāo)的 1.0 就是 1 米。 如果是小的虛擬宇宙(類似于相對(duì)比例的幾百米),在虛 擬宇宙對(duì)象下(0.0,0.0,0.0)點(diǎn)建立一個(gè)帶有高分辨率坐標(biāo)的 locale 作為 根節(jié)點(diǎn)就足夠使用了;裝入程序在裝入過程中能自動(dòng)構(gòu)建結(jié)點(diǎn),而在高 分辨率坐標(biāo)下的點(diǎn)不需要任何外部文件的直接描述。 大一些的虛擬宇宙 期待被構(gòu)建為有如同計(jì)算機(jī)文件那樣的層次,這意味著一個(gè)根宇宙要包

35、 含由外部文件引用的嵌入虛擬宇宙。就這樣,文件引用的對(duì)象(用戶指 定的 java3d 組或高分辨率結(jié)點(diǎn))定義了被讀入現(xiàn)存虛擬宇宙的數(shù)據(jù)的位 置。 畢業(yè)設(shè)計(jì)論文 java 3d 高分辨率坐標(biāo) 2n metersunits 87.29universe (20 billion light years) 69.68galaxy (100000 light years) 53.07light year 43.43solar system diameter 23.60earth diameter 10.65mile 9.97kilometer 0.00meter -19.93micron -33.22an

36、gstrom -115.57planck length 表表 2:java 3d 高分辨率坐標(biāo)高分辨率坐標(biāo) 2.2.3 場(chǎng)景(場(chǎng)景(locale) 為了支持大型虛擬宇宙,java3d 提出了locale的概念。locale 把 高分辨率坐標(biāo)作為起源。把高分辨率坐標(biāo)看作精確的定位,它在高分辨 率坐標(biāo)的影響范圍之內(nèi)使用精度較低的浮點(diǎn)坐標(biāo)指定對(duì)象的位置。 一個(gè) locale 和與它結(jié)合的高分辨率坐標(biāo)一起組成了在虛擬宇宙之下 的一個(gè)表現(xiàn)層。所有虛擬宇宙包含一個(gè)或多個(gè)高分辨率 locale。而所有 其他的對(duì)象都是附加在一個(gè) locale 上的。在整個(gè)體系中,高分辨率坐標(biāo) 扮演的是上層的僅供翻譯的轉(zhuǎn)換結(jié)點(diǎn)

37、。例如,附加到一個(gè)特定 locale 的 所有對(duì)象的坐標(biāo)都會(huì)與這個(gè) locale 位置的高分辨率坐標(biāo)有關(guān)。(圖 2) 畢業(yè)設(shè)計(jì)論文 圖圖 2:高分辨率坐標(biāo)指定場(chǎng)景:高分辨率坐標(biāo)指定場(chǎng)景 如果一個(gè)虛擬宇宙與傳統(tǒng)的計(jì)算機(jī)圖像的概念相近,給定的虛擬宇 宙可能會(huì)變得太大。所以在通常情況下最好把一個(gè)場(chǎng)景圖看作是一個(gè)高 分辨率坐標(biāo)場(chǎng)景的子結(jié)點(diǎn)。構(gòu)造一個(gè)三維場(chǎng)景,程序員必須運(yùn)行一個(gè) jav a3d 程序。這個(gè) java3d 應(yīng)用程序必須首先創(chuàng)建一個(gè)虛擬宇宙對(duì)象并且至 少把一個(gè) locale 對(duì)象附加之上。然后,構(gòu)建出需要的場(chǎng)景圖像,它由一 個(gè)分支組結(jié)點(diǎn)開始并且包括至少一個(gè)觀察平臺(tái)對(duì)象,而場(chǎng)景圖就是附加 于這

38、個(gè)觀察平臺(tái)。當(dāng)一個(gè)包含場(chǎng)景圖的觀察對(duì)象被附加于一個(gè)虛擬宇宙 ,java3d 的渲染循環(huán)就開始工作。這樣,場(chǎng)景就會(huì)和它的觀察對(duì)象一起 被繪制在畫布上。 2.3 實(shí)現(xiàn)三維世界實(shí)現(xiàn)三維世界 2.3.1 java3d 的觀察模式的觀察模式 java3d 引入了一種新的觀察模式,這種模式使 java 編寫的顯示效果 符合編寫一次,隨處運(yùn)行的原則。java3d 還把這種功能推廣到顯示設(shè) 備或六等級(jí)自由度輸入外部設(shè)備,例如跟蹤攝像頭。這種新的觀察模式 的一次編寫,隨處觀察的特性意味著用 java3d 觀察模式編寫的應(yīng)用程 序和 applet 可以廣泛應(yīng)用于各種各樣的顯示設(shè)備。在不修改場(chǎng)景圖的條 件下,圖像可

39、以在包括標(biāo)準(zhǔn)電腦顯示、多放射顯示空間和安裝攝像頭設(shè) 備的顯示設(shè)備上被渲染。這也意味著在不需要修改場(chǎng)景圖的情況下,同 一個(gè)應(yīng)用程序既能夠渲染立體景象,還能通過攝像頭的輸入控制渲染過 的觀察圖。 java3d 的觀察模式通過完全分離虛擬和現(xiàn)實(shí)世界來實(shí)現(xiàn)這 種多功能性。這種模式區(qū)分了以下兩種情況: 畢業(yè)設(shè)計(jì)論文 1. 一個(gè)應(yīng)用程序通過控制觀察平臺(tái)的位置和方向在虛擬宇宙中對(duì)一 個(gè)觀察臺(tái)對(duì)象(viewplatform)定位、定向和設(shè)定比例尺; 2. 渲染器使用已知位置和方向計(jì)算出要使用的觀察對(duì)象,對(duì)終端用 戶物理環(huán)境的描述確定用戶在物理環(huán)境中的位置和方向。 為什么使用一個(gè)新的模式,由于在底層的編程接口中

40、可以找到基于 照相機(jī)的觀察模式,開發(fā)者通過它可以控制所有渲染圖的參數(shù)。它可以 應(yīng)付處理常規(guī)的應(yīng)用程序,但是處理有更廣闊的適應(yīng)性的系統(tǒng)的時(shí)候就 顯得力不從心,這些系統(tǒng)包括:把整個(gè)世界作為一個(gè)單元裝入和顯示的 觀察器或?yàn)g覽器、可供終端用戶觀察、操縱、顯示、甚至與虛擬世界交 互的系統(tǒng)。 基于照相機(jī)的觀察模式仿效在虛擬世界中放置一個(gè)照相機(jī)而不是一 個(gè)人。開發(fā)者必須持續(xù)重新配置一個(gè)照相機(jī)來模擬在虛擬世界中有一個(gè) 人。java3d 觀察模式直接和跟蹤攝像頭結(jié)合。在有攝像頭的情況下,用 戶會(huì)有好像他們是真實(shí)的存在在那個(gè)虛擬世界的錯(cuò)覺,而開發(fā)者可以不 做任何附加的工作就可以為用戶帶來這種效果。在沒有攝像頭并且

41、只是 用來表現(xiàn)一個(gè)單一的標(biāo)準(zhǔn)顯示的情況下,java3d 觀察模式表現(xiàn)得更像傳 統(tǒng)的基于照相機(jī)的觀察模式,只是加上了能夠產(chǎn)生立體透視圖的功能。 在一個(gè)需要由物理環(huán)境規(guī)定一些觀察參數(shù)的系統(tǒng)中,讓應(yīng)用程序來控制 所有的觀察參數(shù)并不合理。例子就是:一個(gè)帶有攝像頭的顯示設(shè)備可以 用其光系統(tǒng)直接決定應(yīng)用程序中的觀察領(lǐng)域。不同的設(shè)備有不同的光系 統(tǒng),程序開發(fā)者硬綁定這樣的參數(shù)或允許終端用戶改變這樣的參數(shù)都是 不合理的。另外一個(gè)例子是:一個(gè)可以由用戶當(dāng)前的頭部位置自動(dòng)計(jì)算 出觀察參數(shù)的系統(tǒng)。只有一個(gè)對(duì)世界的說明和一條預(yù)先定義的軌跡可能 不會(huì)嚴(yán)密的定義一個(gè)終端對(duì)象的觀察。對(duì)于有攝像頭設(shè)備用戶,他們可 能會(huì)期待在

42、沿著一條固定的路線前進(jìn)的時(shí)候能夠看到他們左右兩旁的物 體。就好像在一個(gè)游樂場(chǎng)中,游客乘坐觀光車按照固定的路線參觀游樂 場(chǎng),但是在這過程中,游客可以持續(xù)轉(zhuǎn)動(dòng)他們的頭。 由于依靠終端用戶的具體物理環(huán)境,觀察的各個(gè)參數(shù),尤其是觀察和投影的基 體變化很大。影響觀察和投影基體的因素包括顯示設(shè)備的物理尺寸,顯示設(shè)備的安 裝方法(在用戶的桌面或用戶的頭頂上),計(jì)算機(jī)是否知道用戶的頭在三維空間的 位置,頭頂裝置真實(shí)的觀察領(lǐng)域,顯示設(shè)備上每平方英寸的像素?cái)?shù),還有其他類似 的參數(shù)。java3d 建立的觀察模式完全可以滿足上述所有的需求。 2.3.2 java3d 中用來定義觀察的對(duì)象中用來定義觀察的對(duì)象 java

43、3d 通過幾個(gè)對(duì)象來發(fā)布它的觀察模式。特別是 view 對(duì)象和與 它相關(guān)的組件對(duì)象: physicalbody 對(duì)象、physicalenvironment 對(duì)象、c 畢業(yè)設(shè)計(jì)論文 anvas3d 對(duì)象、screen3d 對(duì)象。圖 3 描述了 view 對(duì)象的中心角色和組件 對(duì)象的輔助角色。 觀察有關(guān)的對(duì)象都在圖 3 中,它們起的作用如下: viewplatform(觀察平臺(tái)):一個(gè) view 用一個(gè)葉子結(jié)點(diǎn)來在場(chǎng)景圖 為自己定位。觀察平臺(tái)的起始結(jié)點(diǎn)指定了它的位置、方向和在虛擬世界 中的比例尺。 view(觀察):主要的觀察對(duì)象包含了很多觀察的狀態(tài)。 canvas3d:抽象窗口工具箱中畫布對(duì)象

44、的 3d 版本。它描繪了一個(gè) 可以讓 java3d 在上面畫圖像的窗口。它包括了一個(gè)對(duì) screen3d 對(duì)象的 引用和描述一個(gè) canvas3d 要用到的尺寸、形狀和位置信息。 screen3d:一個(gè)包含描述顯示熒屏物理屬性信息的對(duì)象。java3d 把 顯示熒屏信息分別放在單獨(dú)的對(duì)象中,這樣做可以防止在每一個(gè) canvas 3d 對(duì)象中不同的顯示屏幕信息共享一個(gè)屏幕。 physicalbody:一個(gè)包含刻度信息的對(duì)象,它描述了用戶的物理身體 。 physicalenvironment:一個(gè)包含刻度信息的對(duì)象,它描述了物理世界 。主要的信息描述了環(huán)境的六自由度硬件。 圖圖 3:view 和它的

45、組件對(duì)象以及它們的相互聯(lián)系和它的組件對(duì)象以及它們的相互聯(lián)系 這些對(duì)象一起描述觀察的幾何體勝于明白的提供觀察或投影基體。j ava3d 的表現(xiàn)工具用這個(gè)信息來構(gòu)造適合的觀察和投影基體。這些觀察 對(duì)象的幾何中心為產(chǎn)生一個(gè)觀察提供了更大的彈性,這種彈性需要支持 可以選擇的顯示配置。 viewplatform: 在虛擬世界中的位置 一個(gè) viewplatform 結(jié)點(diǎn)定義了 一個(gè)坐標(biāo)系統(tǒng)。這樣,在虛擬世界中就有了一個(gè)有原點(diǎn)或參考點(diǎn)的參考 系。觀察平臺(tái)是一個(gè)附加在觀察對(duì)象的點(diǎn)并且作為決定描繪工具觀察的 基礎(chǔ)。圖 4 表示了一個(gè)場(chǎng)景圖的一部分,它包括一個(gè)觀察平臺(tái)結(jié)點(diǎn)。直 接在觀察平臺(tái)之上的結(jié)點(diǎn)決定了它在虛

46、擬世界中的位置和方向。應(yīng)用程 序和行為通過修改直接在觀察平臺(tái)之上任何與 transformgroup 結(jié)點(diǎn)結(jié)合 的 tramsform3d 對(duì)象可以在虛擬世界中任意移動(dòng) viewplatform。一個(gè)簡(jiǎn) 畢業(yè)設(shè)計(jì)論文 單的應(yīng)用程序可能直接在一個(gè)觀察平臺(tái)上定義一個(gè) transformgroup 結(jié)點(diǎn) 。一個(gè)虛擬宇宙可能有很多不同的觀察平臺(tái),但是一個(gè)特定的 view 對(duì) 象只能附加于一個(gè)單一的觀察平臺(tái)之上。這樣,每個(gè)畫在 canvas3d 上 的圖畫都是從一個(gè)單一的觀察平臺(tái)開始。 圖圖 4:包含觀察平臺(tái)的一部分場(chǎng)景圖:包含觀察平臺(tái)的一部分場(chǎng)景圖 2.3.3 在三維世界中建立、移動(dòng)觀察點(diǎn)在三維世界中

47、建立、移動(dòng)觀察點(diǎn) 應(yīng)用程序通過修改觀察平臺(tái)的上級(jí) transformgroup 在虛擬世界中航 行。修改一個(gè)觀察平臺(tái)的位置和方向的應(yīng)用程序的例子包括:瀏覽器、 提供航行控制的閱讀器、做建筑預(yù)設(shè)計(jì)的程序、甚至是搜尋和毀壞游戲 。 控制觀察平臺(tái)對(duì)象能產(chǎn)生很有趣和有用的結(jié)果。我可以定義一個(gè)簡(jiǎn) 單的場(chǎng)景圖,這個(gè)程序的目的是在窗口的正中畫了一個(gè)對(duì)象并且繞自己 的中心轉(zhuǎn)動(dòng)。不管在中心的對(duì)象,而讓 viewplatform 在虛擬世界中繞圈 。如果形體結(jié)點(diǎn)包括一個(gè)地球模型,這個(gè)程序可能產(chǎn)生一個(gè)類似于繞地 球的遠(yuǎn)航員觀察對(duì)象。如果在這個(gè)世界中加入更多的對(duì)象,這個(gè)場(chǎng)景圖 允許經(jīng)由行為結(jié)點(diǎn)來瀏覽整個(gè)虛擬世界。 畢

48、業(yè)設(shè)計(jì)論文 圖圖 5:一個(gè)由觀察控制的簡(jiǎn)單場(chǎng)景圖:一個(gè)由觀察控制的簡(jiǎn)單場(chǎng)景圖 應(yīng)用程序和動(dòng)作通過 transformgroup 的可訪問方法操縱它。這些方 法允許應(yīng)用程序得到和設(shè)置組結(jié)點(diǎn)的 transform3d 對(duì)象。transform3d 結(jié) 點(diǎn)有 settransform 和 gettransform 兩個(gè)方法。 形體移動(dòng)的實(shí)現(xiàn)向來都是三維實(shí)現(xiàn)的難點(diǎn)和復(fù)雜之處,傳統(tǒng)三維技 術(shù)的實(shí)現(xiàn)多是注重模擬三維物體的真實(shí)移動(dòng)。而 java3d 除了提供傳統(tǒng)的 方案,還可以在一個(gè)存在的三維世界中移動(dòng)一個(gè)觀察點(diǎn),借助觀察點(diǎn)的 移動(dòng)模擬物體的移動(dòng)。如同物理所學(xué)的切割磁力線發(fā)電,轉(zhuǎn)子和靜子本 來就是一對(duì)可以互

49、逆的對(duì)象,結(jié)果都是把動(dòng)能轉(zhuǎn)化為電能。例 2 的代碼 顯示了在 virtual universe 中建立 viewer、viewplatform、和如何通過綁 定 orbitbehavior 實(shí)現(xiàn)移動(dòng) viewplatform。 2.3.4 java3d 的網(wǎng)絡(luò)基礎(chǔ)的網(wǎng)絡(luò)基礎(chǔ) 將 java3d 與 java 平臺(tái)技術(shù)的結(jié)合。java3d 可以很容易的與 java 平 臺(tái)的其他技術(shù)相結(jié)合,如 applet、jsp、serverlet、jdbc、ejb 等。100%的 純 java 實(shí)現(xiàn)是 java3d 可以與如此多的 java 平臺(tái)技術(shù)結(jié)合的根本原因: 1. 同是 java 平臺(tái)保證 java3d

50、 可以在 applet 中實(shí)現(xiàn); 2. applet 使 java3d 可以輕易的在網(wǎng)頁中顯示; 3. jsp、serverlet 技術(shù)保證將動(dòng)態(tài)網(wǎng)頁技術(shù)用于 java3d 顯示; 4. serverlet 本身就是 j2ee 平臺(tái)的核心技術(shù),這使得 java3d 可以搭 建于 j2ee 平臺(tái)。更可以使用所有 j2ee 的其他技術(shù):jdbc、ejb、jms 畢業(yè)設(shè)計(jì)論文 第三章第三章 實(shí)現(xiàn)實(shí)現(xiàn) java3d 結(jié)構(gòu)體系的方法結(jié)構(gòu)體系的方法 3.1 總體設(shè)計(jì)總體設(shè)計(jì) 設(shè)計(jì)思想是:以 java3d 為平臺(tái),使用 jbuilder 編譯器,生成一個(gè)三維小場(chǎng) 景,實(shí)現(xiàn)簡(jiǎn)單實(shí)體建模,物體運(yùn)動(dòng),場(chǎng)景移動(dòng),各

51、種燈光,霧等場(chǎng)景變換操作以及 更換背景圖片增加背景音樂等三維體系的基本功能。 3.2 基本形體的生成基本形體的生成 和 vrml 不同,java3d 沒有基本形體類,因而在程序中無法直接 生成大量應(yīng)用的基本形體,如 box、cone、sphere 等。我們可以通 過復(fù)雜的編程生成這些基本形體,也可以直接調(diào)用 java3d 為我們提供 的 geometry classes,利用它生成程序所需要的 box、colorcube、c one、sphere、cylinder。下面是這些基本體的生成方法。 3.2.1 平板的生成平板的生成 utility 里 box 的構(gòu)造函數(shù)有: 1.box():成一個(gè)

52、各邊尺寸均為 2 的 box,要說明的是, box、colorcube、sphere 的坐標(biāo)原點(diǎn)均在其中心點(diǎn), cone、cylinder 的則在其軸線的中點(diǎn)上。 2. box(float xdim, float ydim, appearance ap) :成一個(gè)給定尺寸、給 定外觀屬性的 box ,例 box(.5f, .6f, .4f, myapp) 3. box(float xdim, float ydim, float zdim, int primflags, appearance ap) :生成一個(gè)有特定說明的 box,例如:box(.4f,.6f,.3f,primitive.ena

53、ble _appearance_modify, ap)表示程序在運(yùn)行時(shí)可以改變其外觀屬性。 3.2.2 立方體的生成立方體的生成 utility 里 colorcube 的構(gòu)造函數(shù)有: 1. colorcube() 生成一個(gè)邊長(zhǎng)均為 2 的 colorcube 1. colorcube(double scale) 將邊長(zhǎng)均為 2 的 colorcube 按比例放大縮小。 畢業(yè)設(shè)計(jì)論文 3.2.3 圓錐的生成圓錐的生成 utility 里 cone 的構(gòu)造函數(shù)有: 1. public cone() 生成一個(gè)底半徑為 1,高為 2 的 cone。 2. cone (float radius, fl

54、oat height) 3. cone (float radius, float height, int primflags, appearance ap) 4. cone(float radius, float height, int primflags, int xdivision, int ydivis ion, appearance ap) 這里,xdivision、ydivision 可用來表示圓錐的顯示是高精度的顯示 ,或是底精度的顯示,缺省時(shí)的中等精度時(shí) xdivision = 15; ydivision = 1; 我們可利用這兩個(gè)參數(shù)來改變顯示的效果,使顯示圓錐的三角片更多或

55、更少些。 3.2.4 球體的生成球體的生成 utility 里 sphere 的構(gòu)造函數(shù)有: 1. sphere() 生成一個(gè)半徑為 1 的 sphere。 2. sphere (float radius) 3. sphere (float radius, appearance ap) 4. sphere(float radius, int primflags, appearance ap) 5. sphere(float radius, int primflags, int divisions) 6. sphere(float radius, int primflags, int divis

56、ions, appearance ap) 這里,divisions 的作用和圓錐的 xdivision、ydivision 相似。 3.2.5.圓柱體的生成圓柱體的生成 utility 里 cylinder 的構(gòu)造函數(shù)有: 1. cylinder() 生成一個(gè)底半徑為 1,高為 2 的 cylinder。 2. cylinder (float radius, float height) 3. cylinder (float radius, float height, appearance ap) 4. cylinder (float radius, float height, int prim

57、flags, appearance ap) 5. cylinder(float radius, float height, int primflags, int xdivision, int ydivision, appearance ap) 畢業(yè)設(shè)計(jì)論文 3.3 點(diǎn)、線、面的生成點(diǎn)、線、面的生成 3.3.1 點(diǎn)的生成點(diǎn)的生成 編寫 java3d 程序?qū)嶋H上是編寫一個(gè)特定的場(chǎng)景圖,給出了場(chǎng)景圖 中帶有形體及其屬性的一個(gè)分支(branchgroup)和表示觀察位置等數(shù)據(jù) 的另一個(gè)分支(view platform)。一般來說,表示觀測(cè)位置的分支可以 用 java3d 的 utility 來完成,即

58、 createscenegraph 方法的定義。 在這個(gè)方法里,程序先定義了一個(gè)分支 objroot,然后用數(shù)組的形式 定義了頂點(diǎn)坐標(biāo) vert 和顏色 color,再用 pointarray 定義了一組點(diǎn) point ,并將頂點(diǎn)坐標(biāo)及顏色賦值給 point,由于 java3d 中的 pointarray 點(diǎn)是 shape3d 的子類,它不能直接放入一個(gè) branchgroup,因而我們還要先定 義一個(gè) shape3d 對(duì)象 shape,再將 point 賦予 shape,這樣 point 就可以放 入 branchgroup 類型的對(duì)象 objroot 中了。 java3d 提供的 api

59、中,可用于生成 point 的對(duì)象有: pointarray ind exedpointarray 1. pointarray pointarray 的構(gòu)造函數(shù)為: pointarray( int vertexcount, int vertexformat );這里,vertexcount 表示 應(yīng)生成的點(diǎn)的數(shù)目,vertexformat 表示所需要的頂點(diǎn)的格式。 點(diǎn)、線、面幾何體所需要的頂點(diǎn)的格式有: coordinates 頂點(diǎn)坐標(biāo)數(shù)組 normals 頂點(diǎn)法向數(shù)組 color_3 不帶 alpha 值的顏色數(shù)組 color_4 帶 alpha 值的顏色數(shù)組 texture_coordin

60、ate_2 二維紋理坐標(biāo)數(shù)組 texture_coordinate_3 三維紋理坐標(biāo)數(shù)組 2. indexedpointarray indexedpointarray 的構(gòu)造函數(shù)為: indexedpointarray( int vertexcount, int vertexformat,int indexcount ); 利用本函數(shù),我們可以從眾多的點(diǎn)中,選擇特定的點(diǎn)來顯示。這里 ,vertexcount 表示頂點(diǎn)坐標(biāo)數(shù)組所提供的點(diǎn)的總個(gè)數(shù),indexcount 表示 最終應(yīng)生成的點(diǎn)的個(gè)數(shù)。java3d 可以生成任意大小的點(diǎn),并且可以使 點(diǎn)為方點(diǎn)或圓點(diǎn)。 畢業(yè)設(shè)計(jì)論文 3.3.2 直線的生成

溫馨提示

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