| (080) 基于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.
目录
基于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
第一章 绪论
§1.1 引言
互联网的出现及飞速发展使IT业的各个领域发生了深刻的变化,它必然引发一些新技术的出现。3D图形技术并不是一个新话题,在图形工作站以至于PC机上早已日臻成熟,并已应用到各个领域。然而互联网的出现,却使3D图形技术发生了和正在发生着微妙而深刻的变化。Web3D协会(前身是VRML协会)最先使用Web3D术语,这一术语的出现反映了这种变化的全貌,没有人能严格定义Web3D,在这里我们把Web3D理解为:互联网上的3D图形技术,互联网代表了未来的新技术,很明显,3D图形和动画将在互联网上占有重要的地位。
§1.2 互联网3D图形技术的应用
当前,互联网上的图形仍以2D图像为主流。但是,3D图形必将在互联网上占有重要地位。互联网上的交互式3D图形技术---
Web3D正在取得新的进展,正在脱离本地主机的3D图形,而形成自己独立的框架。互联网的需求是它发展的动力。互联网的内容提供商和商业网站不断使用新的工具与技术使网站更具吸引力,Web3D图形是最新的和最具魅力的技术。Web3D图形将在互联网上有广泛应用,从目前的趋势来看主要有:
1.电子商务:
用3D图形展示商品,更能吸引客户。虚拟商场是人们热中的话题。客户可以在虚拟商场中漫游,挑选商品。许多Web3D图形技术的软件厂商是瞄准了电子商务的,如cult3D和viewpoint,其图形技术主要是用于商品的3D展示,您甚至于可以在网上操作或使用要购买的商品。然而,Web3D图形的商业利益究竟有多大,网上的商品销售商只有在能增加销售额的情况下,才肯出资制作Web3D图形。
2. 联机娱乐休闲与游戏:
多用户联机3D游戏将搬上互联网,现在您已经可以在网上经历简单的赛车或空中射击游戏,下载文件不超过2M。当然,如果您想运行大的联机游戏仍然需要CD-ROM的支持。娱乐休闲网站对Web3D图形有更多的需求,如:城市景观或风景点的虚拟旅游,虚拟博物馆,展览会,艺术画廊等等。
3. 医学:
医疗培训,医疗商业的B2B和B2,许多医学图像的处理将使用Web3D图形技术。
4. 地理信息系统的数据可视化:
将GIS与Web3D结合起来,可以在互联网上建立许多应用系统,如地图,导游,城市建设,交通运输等等。
5. 多用户虚拟社区(virtual-community):
虚拟社区是建立一个大型的虚拟场景,每个虚拟场景的访问者都可以指定一个"替身", "替身"在场景中可以漫游。当几个远程访问者同时访问虚拟社区时,它们可以用语音或文字通讯。虚拟社区可以是一个会场,教室,俱乐部,展览会,画廊等。它真正实现了虚拟现实,在互联网上仿真虚拟社会的各种活动,分布在世界各地的人可以借助互联网开展各种文化科技,娱乐活动。而此时虚拟场景就是他们的三维环境。虚拟社区很可能是Web3D图形在互联网上的一种主要应用形式。
现在,已有几家公司推出了自己虚拟社区及全套的解决方案,如Blaxxun, Adobe Atmosphere. Geometrek
,Cybertown, OuterWorlds, berkom ,ActiveWorlds,iCity,pointworlds等。它们除了提供虚拟场景制作以外,还提供:服务器管理,通讯管理,用户管理等功能。Blaxxun公司Virtual
Worlds Platform 5.1服务器已经有许多网站用它建立虚拟社区。
§1.3 JAVA3D在Web中的成功
Java在互联网上几乎随处可见,而它在3D图形上正在显示出更大的威力。使用Java 的重要理由之一是它的平台无关性。它的平台无关性来自于Java只需部分编译,负责编译Java程序的叫做Java
Virtual Machine (JVM),不同的平台有它自己JVM,处理与平台相关的功能。因此,只要支持JVM,就能运行JAVA小程序。两种最有名的浏览器Netscape
和 IE 3都支持JVM(Java 1.0.2)。因此用Java制作的3D图形几乎都可以在互联网的浏览器上显示。令人遗憾的是:微软在它的未来极具发展前景的Window
XP中不再预装JVM,由此引起的麻烦是巨大的:要运行基于JAVA的应用,就必须安装JVM,这显然比安装一个插件更麻烦。
由于全世界有90%的人上网使用微软不要钱的浏览器IE,而Web3D的渲染引擎插件又必须安装在IE上。面对Web3D技术未来的发展潜力,软件巨人微软作何打算我们不得而知。Shout
Interactive and Blaxxun两个公司使用纯Java技术开发了实时渲染引擎(大小只有50K),这个小小的JAVA小程序,不仅在网上自动下载,而且可以在客户端实时渲染3D场景,逐帧显示动态的3D图像。Shout
Interactive and Blaxxun为用户扩充自己的3D图形功能预留了极大的空间。两个公司并没有抛弃VRML,Shout
Interactive公司可以接受VRML文件,并把它变成自己的文件格式,Blaxxun公司的软件可以直接运行VRML。当然,Shout3D的小巧灵活并不是没有代价的:它简化了VRML的功能,VRML的一些功能不能用小小50K的Java来实现。可以说这两个公司最先在它们的产品中实现了核心的X3D技术。
使用这种"无插件技术"(plug-in)的Shout公司为Macy's and Excite web
portal网站制作了栩栩如生如生的3D虚拟时装模特展示,观看者用菜单可以选择:展示的服装,模特的肤色,发型,步型,甚至于灯光都可以用菜单即刻更换。观看者可以用鼠标变换视角,远近,从各个角度观看动态展示。而所有的展示文件只有1M-2M,不需下载插件。图像的质量较好,人物动画的动作流畅自然。
第二章 Java3D技术的简介
Java3D用其自己定义的场景图和观察模式等技术构造了3D的上层结构,实现了在Java平台使用三维技术。本章将介绍Java3D特有的两个重要概念:场景图(Scene
Graph)、观察模式(View Model)。在接口使用上的介绍分为两部分:说明如何使用Java3D接口;说明如何将Java3D技术与Java原有的Web技术(JSP、Serverlet)相结合,在网页上实现三维显示。
§2.1 Java3D概述
2.1.1 Java3D简介
Java3D API是Sun定义的用于实现3D显示的接口。3D技术是底层的显示技术,Java3D提供了基于Java的上层接口。Java3D把OpenGL和DirectX这些底层技术包装在Java接口中。这种全新的设计使3D技术变得不再繁琐并且可以加入到J2SE、J2EE的整套架构,这些特性保证了Java3D技术强大的扩展性。
JAVA3D建立在JAVA2(JAVA1.2)基础之上,JAVA语言的简单性使JAVA3D的推广有了可能。它实现了以下三维显示能够用到的功能:
1. 生成简单或复杂的形体(也可以调用现有的三维形体)
2. 使形体具有颜色、透明效果、贴图
3. 在三维环境中生成灯光、移动灯光
4. 具有行为的处理判断能力(键盘、鼠标、定时等)
5. 生成雾、背景、声音
6. 使形体变形、移动、生成三维动画
7. 编写非常复杂的应用程序,用于各种领域如VR(虚拟现实)
2.1.2 Java3D与其他三维技术的比较
JAVA3D可应用在三维动画、三维游戏、机械CAD等多个领域。但作为三维显示实现技术,它并不是唯一选择而且是一个新面孔。在Java3D之前已经存在很多三维技术,这些三维技术在实现的技术、使用的语言以及适用的情况上各有不同,我主要介绍与Java3D又密切关系的三种技术:OpenGL、DIRECT3D、VRML
OpenGL
OpenGL是业界最为流行也是支持最广泛的一个底层3D技术,几乎所有的显卡厂商都在底层实现了对OpenGL的支持和优化。OpenGL同时也定义了一系列接口用于编程实现三维应用程序,但是这些接口使用C(C++)语言实现并且很复杂。掌握针对OpenGL的编程技术需要花费大量时间精力。
DIRECT3D
DIRECT3D是Microsoft公司推出的三维图形编程API,它主要应用于三维游戏的编程。众多优秀的三维游戏都是由这个接口实现。与OpenGL一样,Direct3D的实现主要使用C++语言。
VRML2.0(VRML97)
自1997年12月正式成为国际标准之后,在网络上得到了广泛的应用,这是一种比BASIC、JAVASCRIPT等还要简单的语言。脚本化的语句可以编写三维动画片、三维游戏、计算机三维辅助教学。它最大的优势在于可以嵌在网页中显示,但这种简单的语言功能较弱(如目前没有形体之间的碰撞检查功能),与JAVA语言等其它高级语言的连接较难掌握,因而逐渐被淹没在竞争激烈的网络三维技术中。
§2.2 Java3D的场景图结构
Java3D实际上是Java语言在三维图形领域的扩展,与Java一样,Java3D有纯粹的面向对象结构。Java3D的数据结构采用的是Scene
Graphs Structure(场景图),就是一些具有方向性的不对称图形组成的树状结构(图1)。

实际由Java3D定义的一系列的对象,这些对象不是杂乱无序,对象之间也不是毫无关系。如果想让三维图像正常显示,必须在这两点上遵循Java3D场景图的规定。观察图1,Java3D场景图的树结构由各种各样的对象组成:...
... ... ...
... ... ... ...
【论文说明】该论文包含部分场景图、效果图、结构设计流程图和部分代码,Word格式,文件大小2.49M,字数1.5万,计算机专业!

|