六月丁香五月婷婷,丁香五月婷婷网,欧美激情网站,日本护士xxxx,禁止18岁天天操夜夜操,18岁禁止1000免费,国产福利无码一区色费

學習啦 > 論文大全 > 科技論文 > 最新虛擬現(xiàn)實的科技論文2500字(2)

最新虛擬現(xiàn)實的科技論文2500字(2)

時間: 家文952 分享

最新虛擬現(xiàn)實的科技論文2500字

  最新虛擬現(xiàn)實的科技論文2500字篇二

  淺析虛擬現(xiàn)實建模的實現(xiàn)

  摘要:虛擬現(xiàn)實技術是目前發(fā)展最快的一項多學科綜合技術,在軍事、教育、建筑設計等領域都有著廣泛的應用。傳統(tǒng)的實現(xiàn)虛擬現(xiàn)實建模的方式有很多種,如OpenGL,VRML,Direct3D等,這些技術都各有其優(yōu)缺點。Java是目前最為流行的面向對象程序設計語言之一,具有開發(fā)簡便和平臺無關等特點,文章介紹了Java中實現(xiàn)虛擬現(xiàn)實建模的兩種方法:Java3D和JOGL,并通過示例詳細闡述了其實現(xiàn)過程和原理。

  關鍵詞:虛擬現(xiàn)實;Java;Java3D;JOGL

  隨著科技的發(fā)展和人類的進步,虛擬現(xiàn)實技術(Virtual Reality,VR)已成為相關領域中繼多媒體技術、Internet網絡技術之后研究、開發(fā)與應用的熱點,也是目前發(fā)展最快的一項多學科綜合技術。它集中體現(xiàn)了計算機技術、計算機圖形學、傳感技術、人體工程學、人機交互理論等多個領域的最新成果。

  Java是一種完全的面向對象程序設計語言,具有開發(fā)簡便和平臺無關等優(yōu)點。在Java中進行三維圖形或虛擬現(xiàn)實開發(fā)主要有兩種方式:Java3D和JOGL。Java3D綜合了以上建模語言的優(yōu)點,是Java語言中一個用于三維圖形開發(fā)的API,其低級API依賴于現(xiàn)有三維圖形系統(tǒng)如Direct3D,OpenGL,QuickDraw3D和XGL等,這樣就能充分利用系統(tǒng)的三維特性。同時,用Java3D開發(fā)的基于Web的小程序可以與Internet很好地集成而無需下載相關的插件。JOGL提供了一種將Java和OpenGL綁定的方法,這樣既能發(fā)揮java語言所固有的優(yōu)點,又能利用OpenGL函數(shù)實現(xiàn)對圖形的底層操作控制,使得開發(fā)圖形應用程序更為簡單靈活,本文將詳細介紹這兩種Java中的虛擬現(xiàn)實建模的方法。

  一、Java3D概述

  Java3D的構造涉及的概念很多,下面重點介紹兩個最基本并且必不可少的概念:虛擬宇宙(Virtual Universe)和場景圖(Locale)。

  (一)虛擬宇宙(Virtual Universe)

  在Java3D中,虛擬宇宙被定義為結合一系列對象的三維空間。虛擬宇宙被用作最大的聚集體表現(xiàn)單位,同時也可以被看作一個數(shù)據(jù)庫。不管是在物理空間還是邏輯內容,虛擬宇宙都可以很大。在大多數(shù)情況下,一個虛擬宇宙就可以滿足一個應用程序的所有需求。

  虛擬宇宙是各自獨立的個體,原因是在任何時候一個結點對象都不能在超過一個的虛擬宇宙中存在。同樣的,在一個虛擬宇宙中的任何結點對象也不能在其他的虛擬宇宙中可見或者與其他的對象結合。對于一個Java3D應用程序,必須定義一個虛擬宇宙才可以在這個“宇宙”中顯示三維圖像。

  (二)場景圖(Locale)

  場景圖(Locale):Java3D的場景圖是指由Java3D API構成的一幅圖形或圖像,它是由一個或多個Java3D API對象組成的,組成Java3D的場景圖的每個對象被稱為節(jié)點對象,這些葉對象構成了場景圖的內容。

  一旦一個場景圖對象被創(chuàng)建,并與其他場景對象連接形成一個子圖,該子圖能夠全部附屬于一個虛擬世界。在把一個子圖放到虛擬世界之前,整個的子圖能夠編譯成為一個優(yōu)化的內部格式。所有場景圖對象的一個重要特征是:他們只能夠在一個場景圖的創(chuàng)建期間被訪問或修改,特殊允許的情況除外。用戶創(chuàng)建一個或更多場景子圖,并把它們放進一個虛擬的世界,同時包括至少一個觀察平臺對象,而場景圖就是附加于這個觀察平臺。當一個包含場景圖的觀察對象被附加于一個虛擬宇宙之后,Java3D的渲染循環(huán)就開始工作。這樣,場景就會和它的觀察對象一起被繪制在畫布上。在Java3D節(jié)點之間的單獨連接總是表示一個直接的關系:從父系到子系。Java3D限制場景圖不可以包含循環(huán),因此,一個Java3D場景圖是一個直接的非循環(huán)圖形(Directed acyclic graph)。從上述內容不難看出,當使用Java3D API編寫三維圖形、圖像應用程序時,其重點應當集中在構造場景中的節(jié)點內容上,即在三維畫布上創(chuàng)建幾何形體、描述幾何形體的外觀屬性以及場景的光源和形體的行為等。

  (三)Java3D性能分析

  Java3D程序創(chuàng)建出來的場景圖可以直接被渲染,但是這樣做效率并不高,每一個場景圖內建的適應性使每個場景的執(zhí)行效率不是最優(yōu)的,但是還有更有效的方法提高渲染的效率。Java3D內部有一套虛擬世界表示法和轉換方法。有兩種方法可以使Java3D系統(tǒng)轉化到內部表示法。一種是編譯每個分支子圖。另一種方法是將分支圖插入到虛擬世界以使它處于激活狀態(tài)。

  一旦分支圖被激活或編譯,Java3D渲染系統(tǒng)就會將分支圖轉化為更有效的內部表示法,這種轉化,最重要的就是提高了渲染的性能。同時這種轉化還有其他效果,一個效果就是固定變化或者其他對象的值,只要程序不提供改變值的能力,那么程序在被激活或就不再具有改變場景中對象值的能力。

  二、Java與OpenGL的綁定(JOGL)

  JOGL是Sun于2003年發(fā)布的對于OpenGL的Java類綁定,它能夠完全訪問OpenGL的函數(shù),因此相比于Java3D更為靈活,可以進行一些更為靠近底層的圖形開發(fā)和應用,并且很容易同Java的圖形用戶界面開發(fā)包AWT和Swing結合在一起,使得開發(fā)應用程序更為便利。

  JDK6.0中JOGL已經作為標準開發(fā)包正式發(fā)布,之前如果想使用JOGL,必需要得到jogl、jar以及附帶的本機代碼。不同的操作系統(tǒng)有所區(qū)別,首先找到你的操作系統(tǒng)所對應的包,并進行安裝。net.java.games.jogl是JOGL中最重要的一個包,主要包含以下幾個類GLDrawable、GLCanvas、GLJpanel、GLCapabilities、GLDrawableFactory,這些是基本的圖形接口。下面的代碼演示如何用JOGL畫出一個紅色的點。

  import java.awt.*;

  import net.java.games.jogl.*;

  public class Point extends Frame implements GLEventListener {

  static int HEIGHT= 400,WIDTH= 400;

  static GLCanvas canvas;

  public Point( ) {

  GLCapabilities capabilities=new GLCapabilities( );

  canvas=GLDrawableFactory.getFactory().createGLCanvas(capabilities);

  canvas.addGLEventListener(this);

  add(canvas, BorderLayout.CENTER);

  gl = canvas.getGL( );

  }

  public static void main(String[ ] args) {

  Point frame=new Point();

  frame.setSize(WIDTH, HEIGHT);

  }

  public void init(GLDrawable drawable) {

  gl.glColor3f(1.0f, 0.0f, 0.0f);

  }

  public void reshape(GLDrawable drawable, int x, int y, int width, int height) {

  gl.glMatrixMode(GL.GL_PROJECTION);

  gl.glLoadIdentity( );

  gl.glOrtho(0, width, 0, height, -1.0, 1.0);

  }

  public void display(GLDrawable drawable) {

  gl.glBegin(GL.GL_POINTS);

  gl.glVertex2i(WIDTH/2, HEIGHT/2);

  gl.glEnd( );

  }

  public void displayChanged(GLDrawable drawable, Boolean modeChanged, Boolean

  deviceChanged) { }

  }

  其中最主要的代碼有三行:

  GLCapabilities capabilities=new GLCapabilities( );

  canvas=GLDrawableFactory.getFactory().createGLCanvas(capabilities);

  canvas.addGLEventListener(this);

  首先,GLCapabilities capabilities=new GLCapabilities( );決定了JOGL庫和JVM可以使用哪些OpenGL/圖形特色。接著用GLDrawableFactory的createGLCanvas()方法來創(chuàng)建GLCanvas,再用createGLJpanel()方法創(chuàng)建GLJPanel。最后往GLCanvas上加GLEventListener,GLEventListener實現(xiàn)了GLEventListener接口,它負責當接到GLDrawable或GLCanvas的調用時,所需要完成的所有繪圖工作。它定義了四個方法:第一次初始化OpenGL上下文時,系統(tǒng)會調用init()方法,這個方法主要作一些一次性的初始化工作,比如這里將系統(tǒng)前景色設置為紅色。當用戶改變窗口大小并因此而改變canvas大小時將調用reshape()方法。監(jiān)聽器還會向這個方法傳送canvas的坐標和大小參數(shù)。每當reshape()被調用時,display()也會被調用,用來執(zhí)行OpenGL渲染操作。最后,當顯示模式或顯示硬件改變時將調用displayChanged()方法。

  三、總結

  目前,世界上越來越多的大學已經由講授C語言或者C++轉向Java語言。2003年,George Mason大學計算機學院開始將Java語言作為計算機科學與技術專業(yè)學生的基本程序設計語言來講授,而將C或C++作為選修。這意味著未來將會有越來越多的人使用Java語言來開發(fā)應用程序。傳統(tǒng)的三維圖形應用程序開發(fā),特別是涉及復雜的交互控制的應用只有一些高手或專業(yè)人員才能完成。Java3D和JOGL則讓初學者也能很容易的開發(fā)出交互式的圖形應用程序,即便是一些復雜的應用程序的構建難度也大大降低。

  參考文獻:

  1、曾建超,俞志和.虛擬現(xiàn)實技術及其應用[M].清華大學出版社,1996.

  2、Joshua Eddings.How Virtual Reality Works(中文譯本)[M].電子工業(yè)出版社,1994.

  3、Java 3D Tutorial[EB/OL].

  4、H Sowizral, K Rushforth,M Deering. The Java3D API Specification[C].2ndED.New York:Addison Wesley,2000.

  5、J.X.Chen,Guide to Graphics Software Tools,SpingerVeriag,2002.

  6、Zhigen Xu,Yusong,Yan,Jim X.Chen.OpenGL Programming in Java.

  7、Henry A. Sowizal Introduction Programming with Java 3D.University of California,1998.

  8、Sun Microsoft.Inc.The Java 3D API Specification Version 1.5[Z].2006.

  9、張杰.Java3D交互式三維圖形編程.人民郵電出版社,1999.

  (作者單位:華南理工大學計算機科學與工程學院)

  
看了“最新虛擬現(xiàn)實的科技論文2500字”的人還看:

1.大學科技論文2000字

2.vr技術論文2000字

3.vr虛擬現(xiàn)實技術論文

4.計算機仿真技術論文范文

5.虛擬與現(xiàn)實作文800字

2711744