论文部分内容阅读
摘要:文章对网络图形建模语言(Java 3D)进行了研究,通过Java 3D构建三维世界,并在网页上显示三维图像,用Java 3D的图形技术,把转换形成的图形格式直接用于仿真之中,不需要利用编程方式进行建模。使得数控加工仿真技术达到缩短加工编程的周期、提高生产效率、降低生产成本的意义。
关键词:Java 3D;三维绘图;数控仿真;网页
中图分类号:TP391 文献标记码:A 文章编号:1009-3044(2007)06-11688-02
1 Java 3D简介
Java 3D技术是一种新型三维构建技术,是Java语言在三维领域的延伸。相对于传统的三维设计语言C++和URML,它不仅对底层的图形库OpenGL和Direct3D进行了封装,还继承了Java语言高性能、可扩展等优点,使开发者能够高效地构建大规模的三维场景,简化了三维程序设计。
Java 3D实现了下面三维显示所需要使用的功能:
(1)生成简单或复杂的形体;(2)使形体具有颜色、透明效果、贴图;(3)在三维环境中生成灯光、移动灯光;(4)具有行为的处理判断能力(键盘、鼠标、定时等);(5)生成雾、背景、声音;(6)使形体变形、移动、生成三维动画;(7)编写非常复杂的应用程序,用于各种领域,例如VR(虚拟现实)。
2 Java 3D的逻辑结构
Java 3D与Java一样是纯粹的面向对象结构,采用的是Scene Graphs Structure场景图树状结构(图1)。图中对象逻辑上分为三类:根节点(Virtual Universe)、节点(Local Object、Branch Group Nodes、Behavior Node、Shape3D Node…)、叶子节点(Appearance、Geometry…)。
观察平台(View Platform)和View定义了观察点的信息。
在Java 3D中。位置由X,Y,Z坐标描述。X轴坐标值沿向右方向增长,Y轴向上,Z轴由屏幕向外,这被称为“右手”坐标系,距离都使用米来表示。
图1Java 3D的逻辑结构图
3 Java 3D交互式编程
Java 3D继承了Java类的描述和定义。因此,需要了解Java 3D和制作Java 3D的运动仿真,必须首先熟悉、了解并运用Java和Java 3D的类,下面在数控仿真运用的基础上,介绍几个编程需要使用的关键类。
3.1 交互式编程的基础——behavior类
作为一套优秀的3D图形API,Java 3D提供了支持观察者移动功能的类,该类通过响应的键盘和鼠标的输入来控制目标物体的移动。可以根据不同的鼠标输入来实现物体的平移、旋转和缩放。该功能比在VRML中实现运动要方便。
3.2 行为和插值刻画动作——Alpha类
三维动画并不仅仅指三维物体的运动,还包括形状、外观等可视效果的变化。这些变化都可以抽象为数值随时间的变化函数。因此,可以进一步的把数值范围归到0~1,将具有这个功能的函数及相关一组操作封装为一个类,Java 3D提供了这个类——Alpha。
在程序中写入Alpha函数,则可以完全地描述一个物体,或者是物体一个行为的动作。定义所有Alpha函数的参数值以后,采用Java 3D就是可以精确描述三维物体的运动和变化。
3.3 插值器Interpolator类
Interpolator类的一般使用过程分5步:1)创建目标对象;2)创建Alpha对象;3)创建Interpolator对象,绑定Alpha对象;4)设置Interpolator对象的范围;5)将Interpolator对象添加到场景中。
4 Java 3D交互式编程的实现
在讨论了上述编程方式以后,举例给出数控铣削仿真的源码和实例,简单描述Java 3D的功能和作用。相关的源码如下:
………………………………………
//仿真动画
//Create the root of the branch graph
Transform3D t3d=new Transform3D();
TransformGroup objMove=new TransformGroup();
objMove.setCapability(TransformGroup.ALLOW_TRANSFORM_
WRITE);
//设置节点数0.8f,
float knots[]={0.0f,0.2f,0.3f,0.4f,0.5f,0.6f,0.7f,0.8f,1.0f};
//创建位子数组
Point3f positions[]={
new Point3f(0.0f,0.0f,0.0f),
new Point3f(0.1f,0.0f,0.0f),
new Point3f(0.lf,-0.1f,0.0f),
new Point3f(0.0f,-0.1f,0.0f),
new Point3f(-0.lf,-0.1f,0.0f),/////
new Point3f(-0.lf,-0.1f,0.02f),
new Point3f(0.0f,-0.1f,0.02f),
new Point3f(0.lf,-0.1f,0.02f),
//new Point3f(0.1f,0.0f,0.01f),
//new Point3f(-0.lf,-0.1f,0.0f),
new Point3f(0.0f,0.0f,0.0f)};//设置方向
//t3d.setTranslation(new Vector3f(1.0f,0.0f,0.0f));
//t3d.setTranslation(new Vector3f(0.0f,0.0f,1.0f));//
Alpha alpha=new Alpha(-1,A1pha.INCREASING_ENABLE+
A1pha.DECREASING_ENABLE,0,0,2000,0,1000,2000,0,1000);
PositionPathlnterpolator posPathInt=new
PositionPathInterpolator(alpha,objMove,t3d,knots,positions);
posPathInt.setSchedulingBounds(bounds);
////////////////////////
t3d.setTranslation(new Vector3f(-1.0f,0.0f,-l.0f);
TransformGroup objMovePos=new TransformGroup(t3d);
objRoot.addChild(objMovePos);
//objMovePos.addChild(objMove);
//objMove.addChild(new ColorCube(0.2f));
trans.addChild(g1);
objMove.addChild(g2);
objMove.addChild(g3);
trans2.addChild(objMove);
objRoot.addChild(posPathInt);
5 网页上显示Java3D图形
Java 3D可以很容易地与Java平台的其他技术相结合,例如Applet、JSP、Serverlet、JDBC、EJB等。Applet可以在网页中显示Java 3D。Java 3D将Applet作为显示容器,先要在Applet中实现3D图形在网页中嵌入该Applet。
例:网页中嵌入Applet类型的程序。先将Applet编译成SimpleCone.class文件,再编写一个HTML文件。
另外,通过JSP和Serverlet,可以在网页中动态实现Jave 3D。如果动态设定Applet,能控制Java 3D在网页中的动态显示;还可通过其他方法实现JSP、Server1et对Java 3D显示效果的控制,甚至可以将Java 3D置于J2EE平台的显示层,实现对EJB、JDBC的调用。
6 结束语
随着Internet的发展,网页的互动需求也对三维图像的显示提出了更多要求,Java 3D的出现使得网页三维图形的实现更加方便,数控加工仿真技术对缩短数控加工编程的周期、提高生产效率、降低生产成本具有重要的意义。三维图形仿真技术的实现为整个数控加工仿真系统的运行提供了基础。在目前Web运行条件下,对于小规模的Web系统来说,Java 3D显示方式所支持的图形文件格式和运行方式的使用效果较好,很好的显示了三维图形仿真技术。
参考文献:
[1]邓定华,等.如何在网页上实现Java 3D绘制图像[J].计算机与现代化,2006(2):91-95.
[2]朱晓明.网络数控插补教学软件的开发与研究[D].哈尔滨:哈尔滨工业大学,2002:37.
[3]冯乔生等.Java 3D中的Text2D的扩展与应用[J].计算机工程与应用,2003;39(20):122-125.
[4]张杰.Java 3D交互式三维图形编程[M].北京:人民邮电出版杜,1999.
[5]都志辉.Java3D编程实践——网络上的三维动画[M].北京:清华大学出版社,2002.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:Java 3D;三维绘图;数控仿真;网页
中图分类号:TP391 文献标记码:A 文章编号:1009-3044(2007)06-11688-02
1 Java 3D简介
Java 3D技术是一种新型三维构建技术,是Java语言在三维领域的延伸。相对于传统的三维设计语言C++和URML,它不仅对底层的图形库OpenGL和Direct3D进行了封装,还继承了Java语言高性能、可扩展等优点,使开发者能够高效地构建大规模的三维场景,简化了三维程序设计。
Java 3D实现了下面三维显示所需要使用的功能:
(1)生成简单或复杂的形体;(2)使形体具有颜色、透明效果、贴图;(3)在三维环境中生成灯光、移动灯光;(4)具有行为的处理判断能力(键盘、鼠标、定时等);(5)生成雾、背景、声音;(6)使形体变形、移动、生成三维动画;(7)编写非常复杂的应用程序,用于各种领域,例如VR(虚拟现实)。
2 Java 3D的逻辑结构
Java 3D与Java一样是纯粹的面向对象结构,采用的是Scene Graphs Structure场景图树状结构(图1)。图中对象逻辑上分为三类:根节点(Virtual Universe)、节点(Local Object、Branch Group Nodes、Behavior Node、Shape3D Node…)、叶子节点(Appearance、Geometry…)。
观察平台(View Platform)和View定义了观察点的信息。
在Java 3D中。位置由X,Y,Z坐标描述。X轴坐标值沿向右方向增长,Y轴向上,Z轴由屏幕向外,这被称为“右手”坐标系,距离都使用米来表示。
图1Java 3D的逻辑结构图
3 Java 3D交互式编程
Java 3D继承了Java类的描述和定义。因此,需要了解Java 3D和制作Java 3D的运动仿真,必须首先熟悉、了解并运用Java和Java 3D的类,下面在数控仿真运用的基础上,介绍几个编程需要使用的关键类。
3.1 交互式编程的基础——behavior类
作为一套优秀的3D图形API,Java 3D提供了支持观察者移动功能的类,该类通过响应的键盘和鼠标的输入来控制目标物体的移动。可以根据不同的鼠标输入来实现物体的平移、旋转和缩放。该功能比在VRML中实现运动要方便。
3.2 行为和插值刻画动作——Alpha类
三维动画并不仅仅指三维物体的运动,还包括形状、外观等可视效果的变化。这些变化都可以抽象为数值随时间的变化函数。因此,可以进一步的把数值范围归到0~1,将具有这个功能的函数及相关一组操作封装为一个类,Java 3D提供了这个类——Alpha。
在程序中写入Alpha函数,则可以完全地描述一个物体,或者是物体一个行为的动作。定义所有Alpha函数的参数值以后,采用Java 3D就是可以精确描述三维物体的运动和变化。
3.3 插值器Interpolator类
Interpolator类的一般使用过程分5步:1)创建目标对象;2)创建Alpha对象;3)创建Interpolator对象,绑定Alpha对象;4)设置Interpolator对象的范围;5)将Interpolator对象添加到场景中。
4 Java 3D交互式编程的实现
在讨论了上述编程方式以后,举例给出数控铣削仿真的源码和实例,简单描述Java 3D的功能和作用。相关的源码如下:
………………………………………
//仿真动画
//Create the root of the branch graph
Transform3D t3d=new Transform3D();
TransformGroup objMove=new TransformGroup();
objMove.setCapability(TransformGroup.ALLOW_TRANSFORM_
WRITE);
//设置节点数0.8f,
float knots[]={0.0f,0.2f,0.3f,0.4f,0.5f,0.6f,0.7f,0.8f,1.0f};
//创建位子数组
Point3f positions[]={
new Point3f(0.0f,0.0f,0.0f),
new Point3f(0.1f,0.0f,0.0f),
new Point3f(0.lf,-0.1f,0.0f),
new Point3f(0.0f,-0.1f,0.0f),
new Point3f(-0.lf,-0.1f,0.0f),/////
new Point3f(-0.lf,-0.1f,0.02f),
new Point3f(0.0f,-0.1f,0.02f),
new Point3f(0.lf,-0.1f,0.02f),
//new Point3f(0.1f,0.0f,0.01f),
//new Point3f(-0.lf,-0.1f,0.0f),
new Point3f(0.0f,0.0f,0.0f)};//设置方向
//t3d.setTranslation(new Vector3f(1.0f,0.0f,0.0f));
//t3d.setTranslation(new Vector3f(0.0f,0.0f,1.0f));//
Alpha alpha=new Alpha(-1,A1pha.INCREASING_ENABLE+
A1pha.DECREASING_ENABLE,0,0,2000,0,1000,2000,0,1000);
PositionPathlnterpolator posPathInt=new
PositionPathInterpolator(alpha,objMove,t3d,knots,positions);
posPathInt.setSchedulingBounds(bounds);
////////////////////////
t3d.setTranslation(new Vector3f(-1.0f,0.0f,-l.0f);
TransformGroup objMovePos=new TransformGroup(t3d);
objRoot.addChild(objMovePos);
//objMovePos.addChild(objMove);
//objMove.addChild(new ColorCube(0.2f));
trans.addChild(g1);
objMove.addChild(g2);
objMove.addChild(g3);
trans2.addChild(objMove);
objRoot.addChild(posPathInt);
5 网页上显示Java3D图形
Java 3D可以很容易地与Java平台的其他技术相结合,例如Applet、JSP、Serverlet、JDBC、EJB等。Applet可以在网页中显示Java 3D。Java 3D将Applet作为显示容器,先要在Applet中实现3D图形在网页中嵌入该Applet。
例:网页中嵌入Applet类型的程序。先将Applet编译成SimpleCone.class文件,再编写一个HTML文件。
另外,通过JSP和Serverlet,可以在网页中动态实现Jave 3D。如果动态设定Applet,能控制Java 3D在网页中的动态显示;还可通过其他方法实现JSP、Server1et对Java 3D显示效果的控制,甚至可以将Java 3D置于J2EE平台的显示层,实现对EJB、JDBC的调用。
6 结束语
随着Internet的发展,网页的互动需求也对三维图像的显示提出了更多要求,Java 3D的出现使得网页三维图形的实现更加方便,数控加工仿真技术对缩短数控加工编程的周期、提高生产效率、降低生产成本具有重要的意义。三维图形仿真技术的实现为整个数控加工仿真系统的运行提供了基础。在目前Web运行条件下,对于小规模的Web系统来说,Java 3D显示方式所支持的图形文件格式和运行方式的使用效果较好,很好的显示了三维图形仿真技术。
参考文献:
[1]邓定华,等.如何在网页上实现Java 3D绘制图像[J].计算机与现代化,2006(2):91-95.
[2]朱晓明.网络数控插补教学软件的开发与研究[D].哈尔滨:哈尔滨工业大学,2002:37.
[3]冯乔生等.Java 3D中的Text2D的扩展与应用[J].计算机工程与应用,2003;39(20):122-125.
[4]张杰.Java 3D交互式三维图形编程[M].北京:人民邮电出版杜,1999.
[5]都志辉.Java3D编程实践——网络上的三维动画[M].北京:清华大学出版社,2002.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。