当前位置:首页 > 免费毕业设计

免费毕业设计之JAVA3D的网络三维技术的设计与实现(源代码+论文+说明)

免费毕业设计之JAVA3D的网络三维技术的设计与实现(源代码+论文+说明)

  • 网站价格: 1
  • 特殊技术: 免费毕设
  • 作品类型: 免费毕设
  • 售后服务:

联系方式: 微信:biyebang QQ: 629001810

作品详情

 系统设计

 
    互联网的出现及飞速发展使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动画进行显示和操作。

2.2 Java3D的场景图结构

Java3D实际上是Java语言在三维图形领域的扩展,与Java一样,Java3D有纯粹的面向对象结构。Java3D的数据结构采用的是Scene Graphs Structure(场景图),就是一些具有方向性的不对称图形组成的树状结构(图1)。

实际由Java3D定义的一系列的对象,这些对象不是杂乱无序,对象之间也不是毫无关系。如果想让三维图像正常显示,必须在这两点上遵循Java3D场景图的规定。观察图1Java3D场景图的树结构由各种各样的对象组成:

在图中出现的这些对象都实现了Java3D中有重要的意义的类,从逻辑上我将它们分为三类:

· 根节点(Root):Virtual Universe Object

· 节点(Node):Local ObjectBranch Group NodesBehavior NodeShape3D Node…

叶子节点(Leaf):AppearanceGeometry.

2.2.3  场景(Locale

为了支持大型虚拟宇宙,Java3D提出了"Locale"的概念。Locale把高分辨率坐标作为起源。把高分辨率坐标看作精确的定位,它在高分辨率坐标的影响范围之内使用精度较低的浮点坐标指定对象的位置。

一个Locale和与它结合的高分辨率坐标一起组成了在虚拟宇宙之下的一个表现层。所有虚拟宇宙包含一个或多个高分辨率Locale。而所有其他的对象都是附加在一个Locale上的。在整个体系中,高分辨率坐标扮演的是上层的仅供翻译的转换结点。例如,附加到一个特定Locale的所有对象的坐标都会与这个Locale位置的高分辨率坐标有关。(图2

 
系统实现
当前,互联网上的图形仍以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服务器已经有许多网站用它建立虚拟社区。
 

4.1Java3D的实现流程

本次毕业设计中实现一个JAVA3D场景,其中包括各类灯光的实现,三维场景的移动,任意物体的运动,场景背景变换,指数雾的实现以及与之配合的背景音乐.

3D场景设计中运用到立方体、圆锥及椭圆等基本形体,生成TempleTower;各种点、线、面生成地面及背景环境。以下即是其设计流程图:

4.2.2 Temple的圆柱体的构建

在程序中定义了一个函数buildColumns来生成一对圆柱体

// 开始构建柱体

Vector3f trans = new Vector3f( );

Transform3D tr = new Transform3D( );

TransformGroup tg;

 

for ( int i = 0; i < NumberOfColumns; i++ )

{

// 左边的圆柱

trans.set( x, y, z );

tr.set( trans );

tg = new TransformGroup( tr );

tg.addChild( new Link( column ) );

group.addChild( tg );

z += zSpacing;

}

// 柱体构建完毕

 

return group;

}

然后创建一个函数ColumnScene设置光线、纹理,并将buildColumns加入

public ColumnScene (Component observer)

{

// 在地面上构建一系列圆柱

SharedGroup column = buildSharedColumn ( );

Group columns = buildColumns (column);

addChild (columns);

}

4.1.1生成的场景中利用addChild方法调用ColumnScene函数,

Scene1.addChild (new ColumnScene (this));

即在场景中显示构建好的圆柱体。
 
 
 
源文件
基本形体的生成
和VRML不同,JAVA3D没有基本形体类,因而在程序中无法直接生成大量应用的基本形体,如BOX、CONE、SPHERE等。我们可以通过复杂的编程生成这些基本形体,也可以直接调用JAVA3D为我们提供的geometry classes,利用它生成程序所需要的BOX、COLORCUBE、CONE、SPHERE、CYLINDER。下面是这些基本体的生成方法。
3.2.1平板的生成
UTILITY里BOX的构造函数有:
1.Box():成一个各边尺寸均为2的BOX,要说明的是,BOX、COLORCUBE、SPHERE的坐标原点均在其中心点,CONE、CYLINDER的则在其轴线的中点上。
2. Box(float xdim, float ydim, Appearance ap) :成一个给定尺寸、给定外观属性的BOX ,例Box(.5f, .6f, .4f, myApp)
3. Box(float xdim, float ydim, float zdim, int primflags, Appearance ap):生成一个有特定说明的BOX,例如:Box(.4f,.6f,.3f,Primitive.ENABLE_APPEARANCE_MODIFY, ap)表示程序在运行时可以改变其外观属性。
3.2.2 立方体的生成
UTILITY里COLORCUBE的构造函数有:
1. ColorCube()
生成一个边长均为2的COLORCUBE
1. ColorCube(double scale)
将边长均为2的COLORCUBE按比例放大缩小。
3.2.3 圆锥的生成
UTILITY里CONE的构造函数有:
1. public Cone()
生成一个底半径为1,高为2的CONE。
2. Cone (float radius, float height)
3. Cone (float radius, float height, int primflags,  Appearance ap)
4. Cone(float radius, float height, int primflags,  int xdivision, int ydivision, Appearance ap)
这里,xdivision、ydivision可用来表示圆锥的显示是高精度的显示,或是底精度的显示,缺省时的中等精度时xdivision = 15; ydivision = 1; 我们可利用这两个参数来改变显示的效果,使显示圆锥的三角片更多或更少些。
3.2.4 球体的生成
 UTILITY里SPHERE的构造函数有:
1. Sphere()
生成一个半径为1的SPHERE。
2. Sphere (float radius)
3. Sphere (float radius, Appearance ap)
4. Sphere(float radius, int primflags, Appearance ap)
5. Sphere(float radius, int primflags, int divisions)
6. Sphere(float radius, int primflags, int divisions, Appearance ap)
这里,divisions的作用和圆锥的xdivision、ydivision相似。
3.2.5.圆柱体的生成
 UTILITY里CYLINDER的构造函数有:
1. Cylinder() 
生成一个底半径为1,高为2的CYLINDER。
2. Cylinder (float radius, float height) 
3. Cylinder (float radius, float height, Appearance ap)
4.  Cylinder (float radius, float height, int primflags, Appearance ap) 5.  Cylinder(float radius, float height, int primflags,  int xdivision, int ydivision, Appearance ap)
 

帮我毕业网微信

版权所有© 帮我毕业网 并保留所有权利

QQ 1370405256 微信 biyebang

QQ:629001810微信:biyebang

收缩