国产成人v爽在线免播放观看,日韩欧美色,久久99国产精品久久99软件,亚洲综合色网站,国产欧美日韩中文久久,色99在线,亚洲伦理一区二区

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

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

時(shí)間: 家文952 分享

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

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

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

  摘要:虛擬現(xiàn)實(shí)技術(shù)是目前發(fā)展最快的一項(xiàng)多學(xué)科綜合技術(shù),在軍事、教育、建筑設(shè)計(jì)等領(lǐng)域都有著廣泛的應(yīng)用。傳統(tǒng)的實(shí)現(xiàn)虛擬現(xiàn)實(shí)建模的方式有很多種,如OpenGL,VRML,Direct3D等,這些技術(shù)都各有其優(yōu)缺點(diǎn)。Java是目前最為流行的面向?qū)ο蟪绦蛟O(shè)計(jì)語(yǔ)言之一,具有開(kāi)發(fā)簡(jiǎn)便和平臺(tái)無(wú)關(guān)等特點(diǎn),文章介紹了Java中實(shí)現(xiàn)虛擬現(xiàn)實(shí)建模的兩種方法:Java3D和JOGL,并通過(guò)示例詳細(xì)闡述了其實(shí)現(xiàn)過(guò)程和原理。

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

  隨著科技的發(fā)展和人類的進(jìn)步,虛擬現(xiàn)實(shí)技術(shù)(Virtual Reality,VR)已成為相關(guān)領(lǐng)域中繼多媒體技術(shù)、Internet網(wǎng)絡(luò)技術(shù)之后研究、開(kāi)發(fā)與應(yīng)用的熱點(diǎn),也是目前發(fā)展最快的一項(xiàng)多學(xué)科綜合技術(shù)。它集中體現(xiàn)了計(jì)算機(jī)技術(shù)、計(jì)算機(jī)圖形學(xué)、傳感技術(shù)、人體工程學(xué)、人機(jī)交互理論等多個(gè)領(lǐng)域的最新成果。

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

  一、Java3D概述

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

  (一)虛擬宇宙(Virtual Universe)

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

  虛擬宇宙是各自獨(dú)立的個(gè)體,原因是在任何時(shí)候一個(gè)結(jié)點(diǎn)對(duì)象都不能在超過(guò)一個(gè)的虛擬宇宙中存在。同樣的,在一個(gè)虛擬宇宙中的任何結(jié)點(diǎn)對(duì)象也不能在其他的虛擬宇宙中可見(jiàn)或者與其他的對(duì)象結(jié)合。對(duì)于一個(gè)Java3D應(yīng)用程序,必須定義一個(gè)虛擬宇宙才可以在這個(gè)“宇宙”中顯示三維圖像。

  (二)場(chǎng)景圖(Locale)

  場(chǎng)景圖(Locale):Java3D的場(chǎng)景圖是指由Java3D API構(gòu)成的一幅圖形或圖像,它是由一個(gè)或多個(gè)Java3D API對(duì)象組成的,組成Java3D的場(chǎng)景圖的每個(gè)對(duì)象被稱為節(jié)點(diǎn)對(duì)象,這些葉對(duì)象構(gòu)成了場(chǎng)景圖的內(nèi)容。

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

  (三)Java3D性能分析

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

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

  二、Java與OpenGL的綁定(JOGL)

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

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

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

  三、總結(jié)

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

  參考文獻(xiàn):

  1、曾建超,俞志和.虛擬現(xiàn)實(shí)技術(shù)及其應(yīng)用[M].清華大學(xué)出版社,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.

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

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

1.大學(xué)科技論文2000字

2.vr技術(shù)論文2000字

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

4.計(jì)算機(jī)仿真技術(shù)論文范文

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

2711744