Java3D在虚拟现实中的应用姚浩翔.docx
- 文档编号:10383843
- 上传时间:2023-02-10
- 格式:DOCX
- 页数:21
- 大小:27.91KB
Java3D在虚拟现实中的应用姚浩翔.docx
《Java3D在虚拟现实中的应用姚浩翔.docx》由会员分享,可在线阅读,更多相关《Java3D在虚拟现实中的应用姚浩翔.docx(21页珍藏版)》请在冰豆网上搜索。
Java3D在虚拟现实中的应用姚浩翔
Java3D在虚拟现实中的应用
姚浩翔,刘苏
(南京航空航天大学机电学院,江苏南京210016)
ingAutomation,Apr2009,38
(2):
141~143,145
作者简介:
姚浩翔(1984— ),男,南京航空航天大学机电学院硕士研究生,研究方向为机械设计及理论、计算机图形学。
Java3D在虚拟现实中的应用
姚浩翔,刘苏
(南京航空航天大学机电学院,江苏南京210016)
摘 要:
Java3D是基于Java平台面向对象的三维图形应用程序接口,便于在网上实现三维图
形的显示、浏览。
Java语言具有结构中立性、网络分布性等优点,它的3D图形API在开发In-
ternet及WWW上的图形网络应用程序时有极大优势,因而得到了迅速地推广和应用。
介绍了
Java3D的功能、数据结构并组建了一个虚拟三维场景的网上发布系统的基本体系结构。
关键词:
Java3D;虚拟现实;三维模型
中图分类号:
TP391.9 文献标识码:
B 文章编号:
1671-5276(2009)02-0141-03
ApplicationofVirtualRealityBasedonJava3D
YAOHao-xiang,LIUSu
(NanjingUniversityofAeronautics&Astronautics,Nanjing210016,China)
Abstract:
Java3DisanObject-orientedapplicationprogramminginterfaceof3DgraphicsbasedonJavaplatform.Itcanbeusedto
achievethedisplayandbrowsingofthe3Dgraphics.ThelanguageofJavahasthecharacteristicsofneutralstructure,distributed
network,etc.The3DgraphicsAPIhasgreatadvantagesinthedevelopmentofwebgraphicsapplicationsonInternetandWWW,so
itismademoreandmorewidespread.ThepaperintroducesthefunctionsanddatestructureofJava3D,andestablishesabasicar-
chitectureofwebpublishingsystemaboutavirtualthree-dimensionalscenes.
Keywords:
Java3D;virtualreality;3Dmodel
0 引言
虚拟现实(virtualreality,VR)技术,是由美国VPL公
司创建人拉尼尔(JaronLanier)在20世纪80年代初提出
的,也称灵境技术或人工环境。
它综合了计算机图形技
术、多媒体技术、传感器与测量技术、人工智能技术、网络
技术以及仿真技术等多个信息技术,是近年来十分活跃的
技术研究领域。
目前最为常见的就是桌面级的VR系统,它是利用个
人计算机和低级工作站实现仿真,计算机的屏幕作为参与
者或用户观察虚拟环境的一个窗口,各种外部设备一般用
来驾驭该虚拟环境,并且用于操纵在虚拟场景中的各种物
体。
由于桌面级VR可以通过桌上型机实现,所以成本较
低,功能也比较单一,主要用于CAD,CAM,建筑设计、桌
面游戏等领域。
最为常见的网络3D游戏(如美国的《虚拟人生》)就
是桌面VR。
该种系统多采用3D建模与计算机语言编程
相结合的方式来实现,建模软件有3DSMAX,MAYA等,
编程语言有C,Java等。
而在图形与语言相结合的方面都
需要一个图形程序接口,普遍应用的有OpenGL,Java3D,
DirectX等。
现在主要对Java3D进行一些介绍。
1 Java3D简介
Java3DAPI是Sun公司定义的用于实现3D显示的
接口。
3D技术是底层的显示技术,Java3D提供了基于
Java的上层接口。
Java3D把OpenGL和DirectX这些底层
技术包装在Java接口中。
这种全新的设计使3D技术变
得不再繁琐并且可以加入到J2SE,J2EE的整套架构,这些
特性保证了Java3D技术强大的扩展性。
Java3D建立在Java2(Java1.2)基础之上,Java语言的
简单性使Java3D的推广有了可能。
它实现了以下三维
显示能够用到的功能:
a)生成简单或复杂的形体(也可以调用现有的三维
形体);
b)使形体具有颜色、透明效果、贴图在三维环境中生
成灯光、移动灯光;
c)具有行为的处理判断能力(键盘、鼠标、定时等);
d)生成雾、背景、声音,使形体变形、移动、生成三维
动画;
e)编写非常复杂的应用程序,用于各种领域如VR。
2 基于Java3D的虚拟环境的实现
2.1 Java3D场景数据结构
Java3D用一种称为场景图(scenegraph)的特殊结构
来组织场景绘制中的所有相关对象,它包含了超结构对
象、节点对象和节点组件。
Java3D绘制引擎将遍历场景
图,以持续地进行实际的绘制。
场景图定义了一个3D场
景的几何属性、外观属性、几何变换、光照属性和视角等。
·141·
术·姚浩翔,等·Java3D在虚拟现实中的应用
MachineBuildingAutomation,Apr2009,38
(2):
141~143,145
览、漫游能在客户端流畅地进行。
2)应用服务器层:
处理用户的请求,向数据服务器请
求相应数据,并进行数据处理、转换,并传回给客户端数据
或查询结果等。
图2 系统总体结构图
3)数据层:
存储管理3DGIS数据。
包括三维场景的
模型、矢量数据文件及对应的纹理信息文件等文件。
b)模型的构建:
Java3D提供了三维模型的构建功
能,但目前3D建模软件发展的非常成熟了,例如3DS
MAX,MAYA及工程软件ProENGINEER、UG等。
利用三
维软件制作出三维模型,然后导入到Java3D中是目前比
较常用的做法。
Java3D提供了调用Obj三维图形格式文件的Utility,
并在Java3D中提供了两个Obj图形文件供我们试验调
用。
Java3D也能够调用VRML,DWG,DXF,3DS等图形
格式,它对三维模型格式的支持是非常广泛的。
三维文件信息提取模块提取三维形体信息,并存储到
半边数据结构中,再通过Java3D将三维模型在Java3D
场景图中重建。
半边数据结构是由体(solid)、面(face)、环(loop)、半
边(halfedge)和顶点(vertex)5个层次的拓扑信息和几何
信息组成,其中以边为核心,为了方便表达拓扑关系,它将
一条边表示成拓扑意义上方向相反的两条“半边”。
c)三维模型的浏览:
三维模型浏览模块会把这个三
维形体放到Java3D的场景图中,然后对其进行渲染(添
加光照、材质、纹理并建立平移缩放等交互操作),三维模
型信息文件由系统处理后产生Java的class文件,并以
Applet程序的形式发布到网络上来实现三维模型的在线
浏览。
d)场景的交互控制:
在Java3D中,可以利用Java的
事件处理来实现交互,也可以通过Java3D提供的javax.
media.j3d.Behavior来实现交互。
在程序运行时,向场景
中安装特定的Behavior对象,该对象只接收特定的激励,
包括键盘、鼠标、定时器等,通过对激励作出的不同响应,
来改变场景中对象的位置、比例以及观察者的视角。
1)键盘交互的实现:
用户可以通过KeyNavigatorBe-
havior类来实现使用键盘控制观察者的平移和旋转。
以
下的代码可以响应用户通过键盘上的左右键来控制观察
者的左右移动:
Vector3ftranslate=newVeetor3f();
Transform3DT3D=newTransform3D();
//获得观察者所处的TransformGroup对象
TransformGroupvpTrans=su.getViewingPlatform().getView-
Platform
Transform();
//设置观察者的位置
Translate.set(O.Of,O.0f,3.Of);
T3D.setTranslation(translate);
vpTrans.setTransform(T3D);
//添加KeyNavigatorBehavior对象
KeyNavigatorBehaviorkeyNavBeh=newKeyNavigatorBehavior
(vpTrans);
//设置KeyNavigatorBehavior对象的作用范围
keyNavBeh.setschedulingBounds(newBoundingSphere(new
Point3d(),1000.0));
//添加到场景中
objRoot.addChild(keyNavBeh);
其中su是SimpleUniverse类的一个实例,SimpleUni-
verse类提供了得到控制观察者所处位置的Transform-
GrouP对象的方法。
2)鼠标交互的实现:
除了键盘交互外,用户还可以通
过Java3D的MouseBehavior类,分别使用鼠标上的3个键
来控制三维形体的旋转、平移和缩放。
MouseBehavior类
包括3个子类,其中MouseRotate是使用鼠标左键拖动,实
现三维形体的原地旋转;MouseTranslate是使用鼠标左键
拖动,实现三维形体在与屏幕平行的平面中平移物体;
MouseZoom是使用鼠标中键拖动,实现三维形体在与屏幕
垂直的平面中平移物体。
以下是使用鼠标实现场景缩放
和平移的程序代码:
//用鼠标实现场景缩放
MouseZoommyMouseZoom=new
MouseZoom(MouseBehavior,INVERTINPUT);
myMouseZoom.setTransformGrouP(trans);
myMouseZoom.setsehedulingBounds(newBoundingSphere());
objRoot.addChild(myMouseZoom):
//用鼠标实现场景移动
MouseTranslatemyMouseTranslate=newMouseTranslate();
myMouseTranslate.setTransformGrouP(trans);
myMouseRotate.setupCallbaek(this);
myMouseRotate.setSehedulingBounds(newBoundingSphere());
objRoot.addChild(myMouseRotate);
3 结论
介绍了Java3D的基本功能、特点、数据结构及其在
VR中的应用。
随着计算机技术的发展和广泛应用,三维
图形的应用范围也越来越广;另一方面,随着Internet的飞
速发展,计算机网络成为数据信息流动最方便的渠道,
WWW则成为用户利用网络最便捷的方式。
新的应用环
境要求更适合于它的图形编程手段(Java语言和其3D
API的推出,刚好迎合了这一潮流,为广大程序员提供了
开发3D图形应用软件的新途径,因而一定会得到广泛推
广与应用。
随着Java软件包的不断充实、网络速度的逐渐提高
和硬件计算能力的加强,电子购物、远程教学等系统将使
(下转第145页)
·143·
术·姚浩翔,等·Java3D在虚拟现实中的应用
http:
∥ZZHD.chinajournal.net.cn E-mail:
ZZHD@chainajournal.net.cn《机械制造与自动化》
而且,场景图还可能包含动画、交互和声音属性。
场景图属于一种有向无环图(directedacyclicgraph,
DAG)的类似于树的数据结构。
每个有向图由一个节点
的集合和一些连接这些节点的连接组成。
图1为一个场
景图,它是一个DAG。
图1 场景图
根节点(virtualuniverse),每一个场景图的根节点都
唯一的。
在根节点下面是Locale节点,每个程序可以有一
个或多个Locale,但同时只能有一个Locale处于显示状
态,就好象一个三维世界非常大,有很多个景点,但我们同
时只能在一个景点进行观察。
Java3D允许从一个Locale
跳到另一个Locale,不过绝大多数程序只有一个Locale。
组节点(groupnode)是场景图中的内部节点,是场景
图结构的主要构建模块。
它可能会有子节点,子节点可以
是叶节点(leafnode),也可以是又一个组节点。
一般情况
下,Leafnode表示的是各种几何对象、声音或场景图中的
其他图形对象,它没有子节点,但它们通常都包含对节点
组件(nodecomponent)对象的引用。
节点组件可以理解为
节点对象的属性,被用来定义几何特性、颜色、纹理和材质
等属性。
2.2 Java3D中形体的形成
对于Java3D编程,三维形体是最重要的处理对象。
可以有3种方式生成Java3D所需要的三维形体,一是利
用Java3D提供的用于编写点、线、面对象,二是使用
ut11ity里面的可用来生成几个基本形体的geometryclas-
ses,三是通过调用外部其他格式的三维图形文件,生成复
杂的三维形体对象。
2.3 Java3D中点、线、面、体的生成
Java3D提供的API中,有两种生成点的类:
PoinArray
和IndexedPointArray。
PoinArray可用来生成给定数目的
点,而IndexedPointArray可用于在多个顶点中的数据来定
位的。
生成直线的类:
LineArray,LineStripArray,IndexedLine-
Array,IndexedLineStripArray。
生成三角形面和四边形面的类:
TriangleArray,QuadA-
rray,TriangleStripArray,TriangleFanArray,IndexedTriangle-
Array,IndexedQuadArray,IndexedTriangleStripArray,In-
dexedTriangleFanArray。
2.4 Java3D中形体的组合
JAVA3D应用程序中,一般都拥有多个三维形体,需
要对其进行合理的组合,这样才能对指定的形体进行几何
变换,对指定的形体进行某种操作,生成所需要的交互式
三维应用程序或三维动画。
JAVA3D为此提供了多个用于形体组合的对象,组合
各种对象所用的是Group及其子孙类,下面给出了Group
及其子孙类的关系:
Java.lang.Object
Javax.media.j3d.SeeneGraphObjeet
Javax.media.j3d.Node
Javax.media.j3d.Group
Javax.media.j3d.BranchGroup
Javax.mediaj3d.OrderedGroup
Javax.media.j3d.DeealGroup
Javax.media.j3d.SharedGroup
Javax.media.j3d.Switeh
Javax.media.j3d.TransformGrouP
在Java3D应用程序中,几何变换主要用到Transfom-
GrouP对象和Transform3D对象。
TransformGroup是应用
最多的对象,人们在三维空间放置任何形体、灯光、声音,
都要用到TransfomGrouP对象,而Transform3D对象和
TransformGroup对象又有着很紧密的关系。
Transform-
Group用来定义一个通过设置可以移动、旋转、放大缩小
的局部坐标系。
Transform3D用于表示一个4×4的双精
度浮点数矩阵,进而表示所指定的坐标的坐标变换,如旋
转、放大缩小、平移等。
2.5 Java3D网络三维VR的应用
Java3D是一个以网络为中心的基于场景的API,它
可使编程人员采用Java技术跨越网络进行3D可视化操
作,适用于多种场合,包括游戏与教育软件开发,数据可视
化、机械计算机辅助设计/工程(MCAD/MCAE)、数字内
容创建等。
Java3D的底层模型接口综合了Direct3D,
OpenGL,Quick-Draw3D和XGL等底层API的最先进的
技术,充分利用系统的硬件模型加速能力,由于其高层结
构中综合了许多基于场景图的系统中的优秀思想、采用了
面向对象的设计方法,使之更加接近现实世界的结构特点
和开发人员的思维模式.
a)系统总体结构:
图2采用三层B/S体系结构的
WebGIS结构,由客户端、Web服务器、数据文件构成。
基
于Java3D的三维场景网上发布系统的3层体系结构为:
1)客户端浏览器层:
完成区域三维场景矢量数据和
纹理数据的下载、处理、显示以及和用户的交互等工作。
基于Java3D的客户端采用在网页中使用Applet技术,通
过Java3D提供的功能强大的API来实现场景的三维建
模,交互漫游等操作,从而可以在浏览器中进行浏览。
为
了均衡客户端和服务器负载的工作量,这里采用“胖”客
户端模式,即主要的三维场景显示分析功能都在客户端实
现使得既可充分利用客户端资源,又使得三维场景的浏
·142·
ingAutomation,Apr2009,38
(2):
141~143,145
作者简介:
姚浩翔(1984— ),男,南京航空航天大学机电学院硕士研究生,研究方向为机械设计及理论、计算机图形学。
Java3D在虚拟现实中的应用
姚浩翔,刘苏
(南京航空航天大学机电学院,江苏南京210016)
摘 要:
Java3D是基于Java平台面向对象的三维图形应用程序接口,便于在网上实现三维图
形的显示、浏览。
Java语言具有结构中立性、网络分布性等优点,它的3D图形API在开发In-
ternet及WWW上的图形网络应用程序时有极大优势,因而得到了迅速地推广和应用。
介绍了
Java3D的功能、数据结构并组建了一个虚拟三维场景的网上发布系统的基本体系结构。
关键词:
Java3D;虚拟现实;三维模型
中图分类号:
TP391.9 文献标识码:
B 文章编号:
1671-5276(2009)02-0141-03
ApplicationofVirtualRealityBasedonJava3D
YAOHao-xiang,LIUSu
(NanjingUniversityofAeronautics&Astronautics,Nanjing210016,China)
Abstract:
Java3DisanObject-orientedapplicationprogramminginterfaceof3DgraphicsbasedonJavaplatform.Itcanbeusedto
achievethedisplayandbrowsingofthe3Dgraphics.ThelanguageofJavahasthecharacteristicsofneutralstructure,distributed
network,etc.The3DgraphicsAPIhasgreatadvantagesinthedevelopmentofwebgraphicsapplicationsonInternetandWWW,so
itismademoreandmorewidespread.ThepaperintroducesthefunctionsanddatestructureofJava3D,andestablishesabasicar-
chitectureofwebpublishingsystemaboutavirtualthree-dimensionalscenes.
Keywords:
Java3D;virtualreality;3Dmodel
0 引言
虚拟现实(virtualreality,VR)技术,是由美国VPL公
司创建人拉尼尔(JaronLanier)在20世纪80年代初提出
的,也称灵境技术或人工环境。
它综合了计算机图形技
术、多媒体技术、传感器与测量技术、人工智能技术、网络
技术以及仿真技术等多个信息技术,是近年来十分活跃的
技术研究领域。
目前最为常见的就是桌面级的VR系统,它是利用个
人计算机和低级工作站实现仿真,计算机的屏幕作为参与
者或用户观察虚拟环境的一个窗口,各种外部设备一般用
来驾驭该虚拟环境,并且用于操纵在虚拟场景中的各种物
体。
由于桌面级VR可以通过桌上型机实现,所以成本较
低,功能也比较单一,主要用于CAD,CAM,建筑设计、桌
面游戏等领域。
最为常见的网络3D游戏(如美国的《虚拟人生》)就
是桌面VR。
该种系统多采用3D建模与计算机语言编程
相结合的方式来实现,建模软件有3DSMAX,MAYA等,
编程语言有C,Java等。
而在图形与语言相结合的方面都
需要一个图形程序接口,普遍应用的有OpenGL,Java3D,
DirectX等。
现在主要对Java3D进行一些介绍。
1 Java3D简介
Java3DAPI是Sun公司定义的用于实现3D显示的
接口。
3D技术是底层的显示技术,Java3D提供了基于
Java的上层接口。
Java3D把OpenGL和DirectX这些底层
技术包装在Java接口中。
这种全新的设计使3D技术变
得不再繁琐并且可以加入到J2SE,J2EE的整套架构,这些
特性保证了Java3D技术强大的扩展性。
Java3D建立在Java2(Java1.2)基础之上,Java语言的
简单性使Java3D的推广有了可能。
它实现了以下三维
显示能够用到的功能:
a)生成简单或复杂的形体(也可以调用现有的三维
形体);
b)使形体具有颜色、透明效果、贴图在三维环境中生
成灯光、移动灯光;
c)具有行为的处理判断能力(键盘、鼠标、定时等);
d)生成雾、背景、声音,使形体变形、移动、生成三维
动画;
e)编写非常复杂的应用程序,用于各种领域如VR。
2 基于Java3D的虚拟环境的实现
2.1 Java3D场景数据结构
Java3D用一种称为场景图(scenegraph)的特殊结构
来组织场景绘制中的所有相关对象,它包含了超结构对
象、节点对象和节点组件。
Java3D绘制引擎将遍历场景
图,以持续地进行实际的绘制。
场景图定义了一个3D场
景的几何属性、外观属性、几何变换、光照属性和视角等。
·141·
动化·王成亮,等·一起发电机转子接地事故分析
MachineBuildingAutomation,Apr2009,38
(2):
144~145
风进入发电机的端部,造成匝间短路。
4 退磁
4.1 磁化原因
当发电机转子绕组发生两点接地或多匝短路时,便产
生了轴向不平衡磁通,从而造成发电机和汽轮机转子轴向
和径向磁化现象,发电机转子磁化后,存在着不规则的径
向和轴向的剩磁。
4.2 退磁方法
发电机和汽轮机一旦被磁化,则必须进行轴向退磁,
因为轴向剩
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java3D 虚拟现实 中的 应用 姚浩翔