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

正文內(nèi)容

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

2024-12-01 19:13本頁面

【導(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,并將頂點坐標及顏色賦值給 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 頂點坐標數(shù)組 NORMALS 頂點法向數(shù)組 COLOR_3 不帶 alpha 值的顏色數(shù)組 COLOR_4 帶 alpha 值的顏色數(shù)組 TEXTURE_COORDINATE_2 二維紋理坐標數(shù)組 TEXTURE_COORDINATE_3 三維紋理坐標數(shù)組 2. IndexedPointArray IndexedPointArray 的構(gòu)造函數(shù)為: IndexedPointArray( int vertexCount, int vertexFormat,int indexCount )。 利用本函數(shù),我們可以從眾多的點中,選擇特定的點來顯示。這里, vertexCount 表示頂點坐標數(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)實世界里,周圍的對象被幾個不同的光源照亮。從窗戶射進的陽光和屋頂?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 可以更準確地模擬太陽光。 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 類將生成紋理坐標 ―― 就象它們?yōu)橛嬎愎庹丈煞ň€一樣。 霧 霧效果可以增添場景的真實感,也可以使遠處的形體變模糊或是屏蔽它們,也可以使場景產(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)插對象,當 Alpha 輸出的數(shù)值為 0 時,對應(yīng)的特定內(nèi)插對象的值為最??;當 Alpha 輸出的數(shù)值為 1 時,對應(yīng)的特定內(nèi)插對象的值為最大;當 Alpha 輸出的數(shù)值為 0 到 1 之間的數(shù)值時,對應(yīng)的特定內(nèi)插對象生成和 Alpha成相同比例的數(shù)值。假設(shè)某一時刻 Alpha 輸出的數(shù)值為 ,則對應(yīng)的特定內(nèi)插對象的當前值為最小值加上最大最小值之差乘以 。 ( 當前值 最小值 )/(最大值 最小值 )= JAVA3D 里的各種 Interpolator 對象可用來旋轉(zhuǎn)形體、移動形體的坐標、變化形體的顏色等。假設(shè)我們要讓一個形體在規(guī)定的 時間內(nèi)按照指定的方式運動 , 我們首先要給出時間段的大小,還要指出時間是否要循環(huán)。這些內(nèi)容都是由 Alpha類來完成的 。 基本上我們用它 以及 一個旋轉(zhuǎn)內(nèi)插器 RotationInterpolator 來使形體繞著其所在的局部坐標系不停地旋轉(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, // 柵格范圍 , , // 位置 , // 高度放大比例 crat
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1