您好,欢迎访问三七文档
Java3D学习JAVA3D学习系列(一)网络上的JAVA3D学习资料1.这里有SUN公司为我们提供的学习资料。2.~nadeau/Courses/VR99/java3d.zip这是一个非常好的JAVA3D学习资料。(12,058K),里面有许多例子。大家可以从~nadeau/中得到VRML和JAVA3D的许多资料。JAVA3D学习系列(二)一。JAVA3D的作用:JAVA3D可用在三维动画、三维游戏、机械CAD等领域。1.可以用来编写三维形体,但和VRML不同,JAVA3D没有基本形体,不过我们可以利用JAVA3D所带的UTILITY生成一些基本形体如立方体、球、圆锥等,我们也可以直接调用一些软件如ALIAS、LIGHTWARE、3DSMAX生成的形体,也可以直接调用VRML2.0生成的形体。2.可以和VRML一样,使形体带有颜色、贴图。3.可以产生形体的运动、变化,动态地改变观测点的位置及视角。4.具有交互作用,如点击形体时会使程序发出一个信号从而产生一定的变化。5.可以充分利用JAVA语言的强大功能,编写出复杂的三维应用程序。6.JAVA3D具有VRML所没有的形体碰撞检查功能(这也是本人目前中意JAVA3D的原因)。二。OPENGL、VRML、DIRECT3D、JAVA3D的比较由于OPENGL的跨平台特性,许多人利用OPENGL编写三维应用程序,不过对于一个非计算专业的人员来说,利用OPENGL编写出复杂的三维应用程序是比较困难的,且不说C(C++)语言的掌握需要花费大量时间精力,当我们需要处理复杂问题的时候,我们不得不自己完成大量非常繁琐的工作。当然,对于编程高手来说,OPENGL是他们发挥才能的非常好的工具。VRML2.0(VRML97)自1997年12月正式成为国际标准之后,在网络上得到了广泛的应用,编写VRML程序非常方法(VRML语言可以说比BASIC、JAVASCRIPT等语言还要简单),同时可以编写三维动画片、三维游戏、用于计算机辅助教学,因而其应用前景非常广阔尤其适合在中国推广应用。不过由于VRML语言功能目前还不是很强(如目前没有形体之间的碰撞检查功能),与JAVA语言等其它高级语言的连接较难掌握,因而失去了一些计算机高手的宠爱。但我们认为,我们可以让大学里的文理科学生利用VRML编写多媒体应用程序,让学生很快地对编写程序感兴趣,从而使国内的计算机水平得到提高。PDF文件使用pdfFactoryPro试用版本创建,它主要应用于三维游戏的编程,目前相关的学习资料难于获得,由于它一般需要VC等编程工具进行编程,需要编程人员具有较高的C++等高级语言的编程功底,因而难以普及。JAVA3D是建立在JAVA2(JAVA1.2)基础之上的,JAVA语言的简单性使JAVA3D的推广有了可能。OPENGL和JAVA3D之间的比较可以看成汇编语言与C语言之间的比较,一个是低级的,一个是高级的(也许这样比较不太恰当)。JAVA3D给我们编写三维应用程序提供了一个非常完善的API,它可以帮助我们:生成简单或复杂的形体(也可以直接调用现有的三维形体)使形体具有颜色、透明效果、贴图。可以在三维环境中生成灯光、移动灯光。可以具有行为(Behavior)的处理判断能力(键盘、鼠标、定时等)可以生成雾、背景、声音等。可以使形体变形、移动、生成三维动画。可以编写非常复杂的应用程序,用于各种领域如VR。三。如何获得JAVA3D运行环境从我们可以获得最新的JAVA3D运行环境,目前最新的版本是1.1.1,在安装之前需要安装jdk1.2。在编写JAVA3D程序之前,我们需要了解一些概念,完成一些准备工作。一.JAVA3D的数据结构JAVA3D实际上是JAVA语言在三维图形领域的扩展,JAVA3D的编程和JAVA一样,是面向对象的编程。JAVA3D的数据结构采用的是SceneGraphsStructure(场景图),这一灵活的树状结构与显示列表多少有些相似之处,但运用起来更耐用(MoreRobust)。JAVA3D的场景图是DAG(Directed-acyclicGraph),即具有方向性的不对称图形。场景图中有许多线和线的交汇点,交汇点称为节点(Node),不管什么节点,它都是JAVA3D类的实例(InstanceofClass),线(Arc)表示实例之间的关系。在JAVA3D的场景图中,最底层(根部)的节点是VirtualUniverse,每一个场景图只能有一个VirtualUniverse。在VirtualUniverse上面,就是Locale节点,每个程序可以有一个或多个Locale,但同时只能有一个Locale处于显示状态,就好象一个三维世界非常大,有很多个景点,但我们同时只能在一个景点进行观察。当然我们可以从一个景点跳到另一个景点,不过绝大多数程序只有一个Locale。每一个Locale上面拥有一个到多个BranchGroup节点。我们知道,要想建立我们的三维应用环境,我们必须建立所需要的形体(Shape),给出形体的外观(Appearance)及几何信息(Geometry),再把它们摆放在合适的位置,这些形体及其摆放位置都建立在BranchGroup节点之上,摆放位置通过另一个节点TransformGroup来设定。另外,我们在安放好三维形体之后,还需要设定具体的观察位置,我们暂时用ViewPlatform代替,它也是建立在TransformGroup节点之上的。下面我们用一个示意图来说明上面我们介绍的JAVA3D的场景图概念。PDF文件使用pdfFactoryPro试用版本创建||----------------------------------|||LocaleLocale||----------------+-----------------||||||||BGBGBGBG(BG--BranchGroup)||||||||(S---Shape)STGTGTG(TG--TransformGroup)----+---||||||||AGSSViewPlatform||||(A---Appearance)----+--------+----(G---Geometry)||||||||AGAGJAVA3D学习系列(四)一.如何安装JAVA3D下载JDK1.2及JAVA3D(目前最新的为1.1.1版本)。在WIN95/98上安装,先安装JDK1.2,再安装JAVA3D,将JDK安装到JDK1.2目录下。建立一个自己的目录,在自己的目录中编写并运行程序。注意,安装JDK1.2时别忘了在autoexec.bat中插入一行:SETPATH=C:\JDK1.2\BIN二.如何编写JAVA3D源程序用文本编辑工具编辑源程序,和其它JAVA程序一样,程序后缀为JAVA。三.如何运行JAVA3D源程序用JAVAC编译源程序,生成class文件。根据文件的类型,选择用JAVA或APPLETVIEWER运行程序。JAVA3D程序可以为APPLICATION程序,也可以为APPLET程序,因而JAVA3D程序也可以摆放在网页上,当然这时候我们必须在浏览器上做一些设置工作(以后再介绍)。四.一个最简单的JAVA3D源程序。下面我们介绍一个最简单的JAVA3D源程序,进而介绍JAVA3D为我们提供的各种PDF文件使用pdfFactoryPro试用版本创建功能。程序是一个JAVA的APPLET类型的程序,它的作用是显示一个红色的圆锥,仅此而已。名为SimpleCone.java。//SimpleCone.javaimportjava.applet.Applet;importjava.awt.BorderLayout;//importcom.sun.j3d.utils.applet.MainFrame;importcom.sun.j3d.utils.geometry.Cone;importcom.sun.j3d.utils.universe.*;importjavax.media.j3d.*;importjavax.vecmath.*;publicclassSimpleConeextendsApplet{publicBranchGroupcreateSceneGraph(){BranchGroupobjRoot=newBranchGroup();TransformGroupobjTrans=newTransformGroup();objRoot.addChild(objTrans);Appearanceapp=newAppearance();Materialmaterial=newMaterial();material.setEmissiveColor(newColor3f(1.0f,0.0f,0.0f));app.setMaterial(material);Conecone=newCone(.5f,1.0f,1,app);objTrans.addChild(cone);objRoot.compile();returnobjRoot;}publicSimpleCone(){setLayout(newBorderLayout());Canvas3Dc=newCanvas3D(null);add(Center,c);BranchGroupscene=createSceneGraph();SimpleUniverseu=newSimpleUniverse(c);u.getViewingPlatform().setNominalViewingTransform();u.addBranchGraph(scene);}//publicstaticvoidmain(String[]args){//newMainFrame(newSimpleCone(),256,256);//}}//endofSimple.javaPDF文件使用pdfFactoryPro试用版本创建程序时,我们需要编写一个HTML文件:先用javac将JAVA3D源程序编译成class文件,再用appletviewer运行HTML文件。虽然程序是applet程序,但我们也可以将其变成application程序,这时我们只需将程序头尾的四个注释行的注释符号去掉即可,这时我们可以用java来运行它:javaSimpleConeJAVA3D学习系列(5)JAVA3D程序也是JAVA程序,因而我们首先必须对JAVA有所了解,并能编写简单的JAVA程序,了解JAVA编程的基本概念。一.SimpleCone程序分析1.SimpleCone.java及其对应的VRML程序上一节中,我们给出了SimpleCone这个非常简单的JAVA3D程序,下面我们来解读这个程序,进而介绍JAVA3D所提供的API的内容。第三节中,我们对JAVA3D的场景图结构作了一个简单的介绍,从场景图我们可以看出,JAVA3D的场景图和VRML的场景图非常相似,因而我们可以编写类似的VRML程序出来,与JAVA3D程序进行比较。SimpleCone程序只是显示一个红色的圆锥,相类似的VRML程序为://SimpleCone.wrl#VRMLV2.0utf8Shape{geometryCone{bottomRadius.5height1.0}appearanceAppearance{materialMaterial{emissiveColor
本文标题:Java3D
链接地址:https://www.777doc.com/doc-4233570 .html