073
基于Java3D的网络三维技术的设计与实现样本
(样本只提供该系统的基本情况介绍,若需要完整的设计和论文,建议您购买本系统,凡是购买本站系统的,本站均根据您的要求,把系统上的开发信息,题目等修改成符合您的要求)
本设计包含内容:源代码+毕业论文
论文大概:
1 基于Java3D的网络三维技术的设计与实现
摘要:互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新话题,在图形工作站以至于PC机上早已日臻成熟,并已应用到各个领域。然而互联网的出现,却使3D图形技术发生了和正在发生着微妙而深刻的变化。Web3D协会(前身是VRML协会)最先使用Web3D术语,这一术语的出现反映了这种变化的全貌,没有人能严格定义Web3D,在这里我们把Web3D理解为:互联网上的3D图形技术,互联网代表了未来的新技术,很明显,3D图形和动画将在互联网上占有重要的地位。
Java3D
API是Sun定义的用于实现3D显示的接口。使用Java
的重要理由之一是它的平台无关性。Java3D提供了基于Java的上层接口。Java3D把OpenGL和DirectX这些底层技术包装在Java接口中。这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,这些特性保证了Java3D技术强大的扩展性
本文以Java3D为开发平台,利用Java语言强大的网络功能,实现了在网页上对3D动画进行显示和操作。
关键字:Java3D、Web3D、三维
Abstract: The Internet appearance and
the rapid development caused each domain to IT industry have the
deep transformation, it initiated some new technical inevitably the
appearance. The 3D graph technology is not a new topic, in the graph
workstation down to on PC machine already more or day matured, and
has applied to each domain. However the Internet appearance, caused
the 3D graph technology to occur actually and is occurring is being
subtle but the deep transformation. The Web3D association
(predecessor is the VRML association) uses the Web3D terminology
first, this terminology appearance had reflected this kind of change
complete picture, nobody can strictly define Web3D, in here we do
the Web3D understanding is: On the Internet 3D graph technology, the
Internet has represented the future new technology, is very obvious,
the 3D graph and the animation will hold the important status on the
Internet.
Java3D API is the Sun definition uses in realizing the
3D demonstration connection. Uses one of Java important reasons is
its platform irrelevant. Java3D has provided based on the Java upper
formation connection. Java3D OpenGL and DirectX these first floor
technology packing in Java connection. This kind of brand-new design
causes the 3D technology to change no longer tediously and may join
to J2SE, the J2EE entire wrap overhead construction, these
characteristics have guaranteed the Java3D technology formidable
extension.
This article develops the platform take Java3D, uses
the Java language formidable network function nf, realized has
carried on the demonstration and the operation on the homepage to
the 3D animation.
Key word: Java3D, Web3D,3D
目录
基于Java3D的网络三维技术的设计与实现 1
摘要: 1
Abstract: 1
第一章
绪论 5
§1.1 引言 5
§1.2 互联网3D图形技术的应用 5
§1.3
JAVA3D在Web中的成功 6
第二章 Java3D技术的简介 7
§2.1
Java3D概述 7
2.1.1 Java3D简介 7
2.1.2
Java3D与其他三维技术的比较 7
§2.2 Java3D的场景图结构 9
2.2.1
虚拟宇宙(Virtual Universe) 10
2.2.2
Java3D的坐标系统 10
2.2.3 场景(Locale) 12
§2.3
实现三维世界 13
2.3.1 Java3D的观察模式 13
2.3.2
Java3D中用来定义观察的对象 14
2.3.3
在三维世界中建立、移动观察点 16
2.3.4 Java3D的网络基础 17
第三章
实现JAVA3D结构体系的方法 17
§3.1 总体设计 17
§3.2
基本形体的生成 17
3.2.1平板的生成 17
3.2.2
立方体的生成 18
3.2.3 圆锥的生成 18
3.2.4
球体的生成 18
3.2.5.圆柱体的生成 19
§3.3
点、线、面的生成 19
3.3.1点的生成 19
3.3.2直线的生成 20
3.3.3面的生成 20
§3.4
外部复杂形体的调用 21
§3.5背景变换的实现方法 21
3.5.1
灯光 21
3.5.2 纹理贴图 23
3.5.3 雾 23
§3.6
动画的生成 23
第四章JAVA3D场景的实现 24
§4.1Java3D的实现流程 24
§4.2
JAVA3D的建模 25
4.2.1 生成场景: 25
4.2.2
Temple的圆柱体的构建 25
4.2.3 Tower的构建 26
§4.3
动画的实现 28
4.3.1 调用galleon.obj文件 28
4.3.2
物体转动 29
4.3.3场景的移动 29
§4.4 背景变换 31
4.4.1
创建灯光 31
4.4.2 创建背景图片 34
4.4.3 指数雾 35
4.4.4
背景音乐 36
§4.5 在网页上显示3D图形 37
第五章
实践和展望 39
§5.1 Web3D技术发展前景 39
§5.2
论文总结 40
参考文献 40
2 第一章 绪论
2.1 §1.1
引言
互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新话题,在图形工作站以至于PC机上早已日臻成熟,并已应用到各个领域。然而互联网的出现,却使3D图形技术发生了和正在发生着微妙而深刻的变化。Web3D协会(前身是VRML协会)最先使用Web3D术语,这一术语的出现反映了这种变化的全貌,没有人能严格定义Web3D,在这里我们把Web3D理解为:互联网上的3D图形技术,互联网代表了未来的新技术,很明显,3D图形和动画将在互联网上占有重要的地位。
图4:包含观察平台的一部分场景图
2.1.1 2.3.3
在三维世界中建立、移动观察点
应用程序通过修改观察平台的上级TransformGroup在虚拟世界中航行。修改一个观察平台的位置和方向的应用程序的例子包括:浏览器、提供航行控制的阅读器、做建筑预设计的程序、甚至是搜寻和毁坏游戏。
控制观察平台对象能产生很有趣和有用的结果。我可以定义一个简单的场景图,这个程序的目的是在窗口的正中画了一个对象并且绕自己的中心转动。不管在中心的对象,而让ViewPlatform在虚拟世界中绕圈。如果形体结点包括一个地球模型,这个程序可能产生一个类似于绕地球的远航员观察对象。如果在这个世界中加入更多的对象,这个场景图允许经由行为结点来浏览整个虚拟世界。
图5:一个由观察控制的简单场景图
应用程序和动作通过TransformGroup的可访问方法操纵它。这些方法允许应用程序得到和设置组结点的Transform3D对象。Transform3D结点有setTransform和getTransform两个方法。
形体移动的实现向来都是三维实现的难点和复杂之处,传统三维技术的实现多是注重模拟三维物体的真实移动。而Java3D除了提供传统的方案,还可以在一个存在的三维世界中移动一个观察点,借助观察点的移动模拟物体的移动。如同物理所学的切割磁力线发电,转子和静子本来就是一对可以互逆的对象,结果都是把动能转化为电能。例2的代码显示了在Virtual
Universe中建立Viewer、ViewPlatForm、和如何通过绑定OrbitBehavior实现移动ViewPlatform。
2.2
2.3
2.4 §3.5背景变换的实现方法
2.4.1 3.5.1
灯光
光用于照亮场景中的几何对象。有几种不同的光类型,它们都是抽象 Light
类的子类。所有光都有一个颜色值,即开/关位,以及一个描述它照亮的场景区域的绑定对象。在现实世界里,周围的对象被几个不同的光源照亮。从窗户射进的阳光和屋顶的灯光一起照亮了屋内的一切。两种光都会影响屋内对象的颜色和外观。在
Java 3D 中,可以通过使用多个光源来模拟实际的光照效果。
光的类型
环境光:在场景中 AmbientLight
无处不在。它不发自某个特定点,也不指向某个特定方向。
它的方法:
AmbientLight ( )
点光:
Point Light
从一个指定位置向各个方向辐射,并随着距离的增加而减弱。点光源的一个例子是没有灯罩的台灯。
它的方法是:
PointLight(
)
void setPosition( Point3f pos )
Spotlight
PointLight的继承,是一种将光的范围限制在一个圆锥形内的点光源。聚光源的一个例子是手电筒。
直射光:DirectionalLight
的光线射向某一个特定方向,却不发自任何特定的位置。这种定向光的所有光线都平行发射。虽然从技术上说,太阳是一个点光源,但使用
DirectionalLight 可以更准确地模拟太阳光。
AmbientLight
PointLight
Spotlight
DirectionalLight
所有的 Light 节点都是场景图中的叶节点。创建它们时,需要指定 Bounds 对象;我们使用
BoundingSphere。光将仅仅影响那些位于光的 BoundingSphere 所定义的空间内的几何对象,因此我们需要确保
BoundingSphere 足够大。在创建完光之后,我们用Scene1.addChild( Node );将其附加到场景图的顶部
BranchGroup。光、行为和材质都在场景图的上面添加。
2.4.2 3.5.2 纹理贴图
装入纹理
同光照一样,纹理贴图影响整个几何对象。再一次使用 Appearance 类来指定纹理贴图效果。
Java 3D
简化了装入纹理图像的过程。TextureLoader 类位于 Java3D
实用类中。为了看起来更真实,请总是将纹理图像的宽度和高度设置成 2 的幂。其它的值会导致 TextureLoader 将纹理压变形。
Primitive 类将生成纹理坐标――就象它们为计算光照生成法线一样。
2.4.3 3.5.3
雾
雾效果可以增添场景的真实感,也可以使远处的形体变模糊或是屏蔽它们,也可以使场景产生透视效果。
Java3D中可以用ExponentialFog类添加雾效果。
它的方法:
ExponentialFog
( )
2.5 §3.6
动画的生成
所有的内插器节点在使用时都需要与TimeSensor(时间传感器)配合使用。TimeSensor把给定的时间周期归一化,虽然时间的周期
cycleInterval 有给定的秒数,但计算机内部将其处理成从0.0到
1.0,即起始时间为0.0,终止时间为1.0,假如一个时间周期为
20(单位均为秒),则第6秒的归一化结果是0.3,第10秒的归一化结果是0.5,第20秒的归一化结果是1.0。
Alpha可以输出从0到1之间的数值给特定的内插对象,当Alpha输出的数值为0时,对应的特定内插对象的值为最小;当Alpha输出的数值为1时,对应的特定内插对象的值为最大;当Alpha输出的数值为0到1之间的数值时,对应的特定内插对象生成和Alpha成相同比例的数值。假设某一时刻Alpha输出的数值为0.2,则对应的特定内插对象的当前值为最小值加上最大最小值之差乘以0.2。(当前值-最小值)/(最大值-最小值)=0.2
JAVA3D里的各种Interpolator对象可用来旋转形体、移动形体的坐标、变化形体的颜色等。假设我们要让一个形体在规定的时间内按照指定的方式运动,我们首先要给出时间段的大小,还要指出时间是否要循环。这些内容都是由Alpha类来完成的。基本上我们用它以及一个旋转内插器RotationInterpolator来使形体绕着其所在的局部坐标系不停地旋转。
3 第四章JAVA3D场景的实现
3.1 §4.1Java3D的实现流程
本次毕业设计中实现一个JAVA3D场景,其中包括各类灯光的实现,三维场景的移动,任意物体的运动,场景背景变换,指数雾的实现以及与之配合的背景音乐.
该3D场景设计中运用到立方体、圆锥及椭圆等基本形体,生成Temple和Tower;各种点、线、面生成地面及背景环境。以下即是其设计流程图:
图6
结构设计流程图
图7利用Java3D构建的Temple