freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于java3d的網(wǎng)絡(luò)三維技術(shù)的設(shè)計與實現(xiàn)—免費計算機畢業(yè)設(shè)計論文-資料下載頁

2024-11-29 04:17本頁面

【導(dǎo)讀】發(fā)一些新技術(shù)的出現(xiàn)。3D圖形技術(shù)并不是一個新話題,在圖形工作站以至于PC. 機上早已日臻成熟,并已應(yīng)用到各個領(lǐng)域。然而互聯(lián)網(wǎng)的出現(xiàn),卻使3D圖形技。術(shù)發(fā)生了和正在發(fā)生著微妙而深刻的變化。代表了未來的新技術(shù),很明顯,3D圖形和動畫將在互聯(lián)網(wǎng)上占有重要的地位。Java3DAPI是Sun定義的用于實現(xiàn)3D顯示的接口。之一是它的平臺無關(guān)性。Java3D提供了基于Java的上層接口。這種全新的設(shè)計使3D技術(shù)變得不

  

【正文】 color,再用 PointArray 定義了一組點 point,并將頂點坐標(biāo)及顏色賦值給 point,由于 JAVA3D 中的 PointArray點是 Shape3D 的子類,它不能直接放入一個 BranchGroup,因而我們還要先定義一個 Shape3D 對象 shape,再將 point 賦予 shape,這樣 point 就可以放入 BranchGroup 類型的對象 objRoot 中了。 JAVA3D 提供的 API 中,可用于生成 Point 的對象有 : PointArray IndexedPointArray 1. PointArray PointArray的構(gòu)造函數(shù)為: PointArray( int vertexCount, int vertexFormat )。這里, vertexCount 表示應(yīng)生成的點的數(shù)目, vertexFormat 表示所需要的頂點的格式。 點、線、面幾何體所需要的頂點的格式有: COORDINATES 頂點坐標(biāo)數(shù)組 NORMALS 頂點法向數(shù)組 COLOR_3 不帶 alpha 值的顏色數(shù)組 COLOR_4 帶 alpha 值的顏色數(shù)組 TEXTURE_COORDINATE_2 二維紋理坐標(biāo)數(shù)組 TEXTURE_COORDINATE_3 三維紋理坐標(biāo)數(shù)組 2. IndexedPointArray IndexedPointArray 的構(gòu)造函數(shù)為: IndexedPointArray( int vertexCount, int vertexFormat,int indexCount )。 利用本函數(shù),我們可以從眾多的點中,選擇特定的點來顯示。這里, vertexCount 表示頂點坐標(biāo)數(shù)組所提供的點的總個數(shù), indexCount 表示最終應(yīng)生成的點的個數(shù)。 JAVA3D 可以生成任意大小的點,并且可以使點為方點或圓點 。 直線 的生成 利用 JAVA3D 的一些對象,生成各種直線??梢陨芍本€的對象有: 1. LineArray 2. LineStripArray 3. IndexedLineArray 4. IndexedLineStripArray 我們可以根據(jù)各種不同的情況,生成不同的直線,如給定寬度的直線、虛線等。相應(yīng)的的方法有: setLineWidth(float lineWidth) setLinePattern(int linePattern) setLineAntialiasingEnable(boolean state) 對于線型 linePattern有以下數(shù)據(jù)可選: int PATTERN_SOLID,int PATTERN_DASH,int PATTERN_DOT,int PATTERN_DASH_DOT 這些內(nèi)容對所有種類的直線都有效。 面的生成 生成平面的對象及其定義 JAVA3D 可通過編程顯示出面來,面有兩種:三角形和四邊形 , 相應(yīng)的對象為Triangle 和 Quad。 JAVA3D 用于生成平面的對象有 : 1. TriangleArray 2. QuadArray 3. TriangleStripArray 4. TriangleFanArray 5. IndexedTriangleArray 6. IndexedTriangleStripArray 7. IndexedTriangleFanArray 167。 外部復(fù)雜形體的調(diào)用 利用前面介紹的方法生成我們所需要的基本形體,生成點、線、平面。但有的時候,我們需要用到其它格式的三維形體,如 格式的圖形文件, AUTOCAD 繪出的 DWG 格式的三維形體, 3DS MAX 繪制出的復(fù)雜形體。對于這些形體,我們可以非常方便地將其用到 JAVA3D 程序中去。下面我們介紹一些圖形格式在 JAVA3D 中的 應(yīng)用方法。 一 . Wavefront 的 OBJ 格式的圖形文件的調(diào)用 JAVA3D 編譯環(huán)境所帶的 UTILITY 有兩個 LOADER,一個可用來調(diào)用 Wavefront 軟件的 OBJ 格式的三維圖形格式文件,一個可用來調(diào)用 Lightwave 軟件的LWS 及 LWO 格式的三維圖形格式文件。 為了使 JAVA3D 能夠調(diào)用 Wavefront 的 OBJ 格式的圖形文件 , 程序的頭四行import 語句就是用來處理 Wavefront 的 OBJ 格式的圖形文件,第五行的 import語句則是打開外部文件之用。 import 。 import 。 import 。 import 。 import .*。 二 . (VRML97)圖形文件在 JAVA3D 中的應(yīng)用簡介 利用 VRML97 的 LOADER 我們可以在 JAVA3D 程序中方便地調(diào)用 VRML圖形。調(diào)用 VRML97 程序就象調(diào)用 Wavefront 的 OBJ 一樣簡單。 三 . AUTOCAD R14 的 DWG 圖形及 3DS MAX 圖形在 JAVA3D 中的應(yīng)用。 在三維圖形生成過程中,國內(nèi)目前大量使用 AUTOCAD 及 3DS MAX 等軟件。對于 3DS MAX 軟件,處理起來非常方便 3DS MAX 可以將其圖形直接輸出成 VRML97 格式 。 對于 AUTOCAD R14 來說,目前還不太方便, 需借助第三方軟件轉(zhuǎn)換成 JAVA3D 支持格式。 167。 背景變換 的實現(xiàn)方法 燈光 光用于照亮場景中的幾何對象。有幾種不同的光類 型,它們都是抽象 Light 類的子類。所有光都有一個顏色值,即開/關(guān)位,以及一個描述它照亮的場景區(qū)域的綁定對象。在現(xiàn)實世界里,周圍的對象被幾個不同的光源照亮。從窗戶射進(jìn)的陽光和屋頂?shù)臒艄庖黄鹫樟亮宋輧?nèi)的一切。兩種光都會影響屋內(nèi)對象的顏色和外觀。在 Java 3D 中,可以通過使用多個光源來模擬實際的光照效果。 光的類型 環(huán)境光:在場景中 AmbientLight 無處不在。它不發(fā)自某個特定點,也不指向某個特定方向。 它的方法: AmbientLight ( ) 點光: Point Light 從一個指定 位置向各個方向輻射,并隨著距離的增加而減弱。點光源的一個例子是沒有燈罩的臺燈 。 它的方法是: PointLight( ) void setPosition( Point3f pos ) Spotlight PointLight 的繼承 ,是一種將光的范圍限制在一個圓錐形內(nèi)的點光源。聚光源的一個例子是手電筒。 直射光: DirectionalLight 的光線射向某一個特定方向,卻不發(fā)自任何特定的位置。這種定向光的所有光線都平行發(fā)射。雖然從技術(shù)上說,太陽是一個點光源,但使用 DirectionalLight 可以更 準(zhǔn)確地模擬太陽光。 AmbientLight PointLight Spotlight DirectionalLight 所有的 Light 節(jié)點都是場景圖中的葉節(jié)點。創(chuàng)建它們時,需要指定 Bounds 對象;我們使用 BoundingSphere。光將僅僅影響那些位于光的 BoundingSphere 所定義的空間內(nèi)的幾何對象,因此我們需要確保 BoundingSphere 足夠大。在創(chuàng)建完光之后,我們 用 ( Node )。將其附加到場景圖的頂部 BranchGroup。光、行為和材質(zhì)都在場景圖的上面添加。 紋理貼圖 裝入紋理 同光照一樣,紋理貼圖影響整個幾何對象。再一次使用 Appearance 類來指定紋理貼圖效果。 Java 3D 簡化了裝入紋理圖像的過程。 TextureLoader 類位于 Java3D 實用類中 。為了看起來更真實,請總是將紋理圖像的寬度和高度設(shè)置成 2 的冪。其它的值會導(dǎo)致 TextureLoader 將紋理壓變形。 Primitive 類將生成紋理坐標(biāo) ―― 就象它們 為計算光照生成法線一樣。 霧 霧效果可以增添場景的真實感,也可以使遠(yuǎn)處的形體變模糊或是屏蔽它們,也可以使場景產(chǎn)生透視效果。 Java3D 中可以用 ExponentialFog類添加霧效果。 它的方法: ExponentialFog ( ) 167。 動畫的生成 所有的內(nèi)插器節(jié)點在使用時都需要與 TimeSensor(時間傳感器)配合使用。TimeSensor 把給定的時間周期歸一化,雖然時間的周期 cycleInterval 有給定的秒數(shù),但計算機內(nèi)部將其處理成從 到 ,即起始時間為 ,終止時間為 ,假如一個時間周期為 20(單位均為秒),則第 6 秒的歸一化結(jié)果是 ,第 10秒的歸一化結(jié)果是 ,第 20 秒的歸一化結(jié)果是 。 Alpha 可以輸出從 0 到 1之間的數(shù)值給特定的內(nèi)插對象,當(dāng) Alpha 輸出的數(shù)值為 0 時,對應(yīng)的特定內(nèi)插對象的值為最?。划?dāng) Alpha 輸出的數(shù)值為 1 時,對應(yīng)的特定內(nèi)插對象的值為最大;當(dāng) Alpha 輸出的數(shù)值為 0 到 1 之間的數(shù)值時,對應(yīng)的特定內(nèi)插對象生成和 Alpha成相同比例的數(shù)值。假設(shè)某一時刻 Alpha 輸出的數(shù)值為 ,則對應(yīng)的特定內(nèi)插對象的當(dāng)前值為最小值加上最大最小 值之差乘以 。 ( 當(dāng)前值 最小值 )/(最大值 最小值 )= JAVA3D 里的各種 Interpolator 對象可用來旋轉(zhuǎn)形體、移動形體的坐標(biāo)、變化形體的顏色等。假設(shè)我們要讓一個形體在規(guī)定的時間內(nèi)按照指定的方式運動 , 我們首先要給出時間段的大小,還要指出時間是否要循環(huán)。這些內(nèi)容都是由 Alpha類來完成的 。 基本上我們用它 以及 一個旋轉(zhuǎn)內(nèi)插器 RotationInterpolator 來使形體繞著其所在的局部坐標(biāo)系不停地旋轉(zhuǎn)。 第四章 JAVA3D 場景的實現(xiàn) 167。 的實現(xiàn)流程 本次畢業(yè)設(shè)計中實現(xiàn)一個 JAVA3D 場景 ,其中包括各類燈光的實現(xiàn) ,三維場景的移動 ,任意物體的運動 ,場景背景變換 ,指數(shù)霧的實現(xiàn)以及與之配合的背景音樂 . 該 3D 場景設(shè)計中運用到立方體、圓錐及橢圓等基本形體 ,生成 Temple 和 Tower。各種點、線、面生成地面及背景環(huán)境。以下即是其設(shè)計流程圖: 圖 6 結(jié)構(gòu)設(shè)計流程圖 167。 JAVA3D 的建模 生成場景:( SimpleUniverse 在哪生成的并沒說清楚 ) 先生成一個 Scene1 場景作為父結(jié)點,以后在此結(jié)點下加入子結(jié)點完成各種操作及圖形顯示。: public Group buildScene( SimpleUniverse u) // 繼承 Group 類 { Group Scene1= new Group ( )。 …… return Scene1。 } 這里的 SimpleUniverse 是對 VirtualUniverse 的繼承,一個應(yīng)用程序只有一個SimpleUniverse(VirtualUniverse)。它同時定義了其下的 Locale、 Node、 Group 及BranchGroup 結(jié)點。 Temple 的圓柱體的構(gòu)建 在程序中定義了 一個函數(shù) buildColumns 來生成一對圓柱體 // 開始構(gòu)建柱體 Vector3f trans = new Vector3f( )。 Transform3D tr = new Transform3D( )。 TransformGroup tg。 for ( int i = 0。 i NumberOfColumns。 i++ ) { // 左邊的圓柱 ( x, y, z )。 ( trans )。 tg = new TransformGroup( tr )。 ( new Link( column ) )。 ( tg )。 z += zSpacing。 } // 柱體構(gòu)建完畢 return group。 } 然后創(chuàng)建一個函數(shù) ColumnScene 設(shè)置光線、紋理,并將 buildColumns 加入 public ColumnScene (Component observer) { // 在地面上構(gòu)建一系列圓柱 SharedGroup column = buildSharedColumn ( )。 Group columns = buildColumns (column)。 addChild (columns)。 } 在 生成的場景中利用 addChild 方法調(diào)用 ColumnScene 函數(shù), (new ColumnScene (this))。 即在場景中顯示構(gòu)建好的圓柱體。 圖 7 利用 Java3D 構(gòu)建的 Temple Tower 的構(gòu)建 創(chuàng)建函數(shù) TowerScene 構(gòu)建 Tower 場景,并加到 Scene1 中 public TowerScene (Component observer) { …… // 構(gòu)建粗糙的地面 CraterGrid grid = new CraterGrid ( 50, 50, // 柵格范圍 , , // 位置 , // 高度放大比例 crater
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1