定点,也不指向某个特定方向。
它的方法:
AmbientLight()
点光:
PointLight从一个指定位置向各个方向辐射,并随着距离的增加而减弱。点光源的一个例子是没有灯罩的台灯。
它的方法是:
PointLight()
voidsetPosition(Point3fpos)
SpotlightPointLight的继承,是一种将光的范围限制在一个圆锥形内的点光源。聚光源的一个例子是手电筒。
直射光:DirectionalLight的光线射向某一个特定方向,却不发自任何特定的位置。这种定向光的所有光线都平行发射。虽然从技术上说,太阳是一个点光源,但使用DirectionalLight可以更准确地模拟太阳光。
AmbientLight
PointLight
Spotlight
DirectionalLight
所有的Light节点都是场景图中的叶节点。创建它们时,需要指定Bounds对象;我们使用BoundingSphere。光将仅仅影响那些位于光的BoundingSphere所定义的空间内的几何对象,因此我们需要确保BoundingSphere足够大。在创建完光之后,我们用Scene1.addChild(Node);将其附加到场景图的顶部BranchGroup。光、行为和材质都在场景图的上面添加。
3.5.2纹理贴图
装入纹理同光照一样,纹理贴图影响整个几何对象。再一次使用Appearance类来指定纹理贴图效果。
Java3D简化了装入纹理图像的过程。TextureLoader类位于Java3D实用类中。为了看起来更真实,请总是将纹理图像的宽度和高度设置成2的幂。其它的值会导致TextureLoader将纹理压变形。
Primitive类将生成纹理坐标――就象它们为计算光照生成法线一样。
3.5.3雾
雾效果可以增添场景的真实感,也可以使远处的形体变模糊或是屏蔽它们,也可以使场景产生透视效果。
Java3D中可以用ExponentialFog类添加雾效果。
它的方法:
ExponentialFog()
§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来使形体绕着其所在的局部坐标系不停地旋转。
第四章JAVA3D场景的实现
§4.1Java3D的实现流程
本次毕业设计中实现一个JAVA3D场景,其中包括各类灯光的实现,三维场景的移动,任意物体的运动,场景背景变换,指数雾的实现以及与之配合的背景音乐.
该3D场景设计中运用到立方体、圆锥及椭圆等基本形体,生成Temple和Tower;各种点、线、面生成地面及背景环境。以下即是其设计流程图:
图6结构设计流程图
§4.2JAVA3D的建模
4.2.1生成场景:(SimpleUniverse在哪生成的并没说清楚)
先生成一个Scene1场景作为父结点,以后在此结点下加入子结点完成各种操作及图形显示。:
publicGroupbuildScene(SimpleUniverseu)//继承Group类
{
GroupScene1=newGroup();
......
returnScene1;
}
这里的SimpleUniverse是对VirtualUniverse的继承,一个应用程序只有一个SimpleUniverse(VirtualUniverse)。它同时定义了其下的Locale、Node、Group及BranchGroup结点。
4.2.2Temple的圆柱体的构建
在程序中定义了一个函数buildColumns来生成一对圆柱体
//开始构建柱体
Vector3ftrans=newVector3f();
Transform3Dtr=newTransform3D();
TransformGrouptg;
for(inti=0;i
第五章实践和展望
§5.1Web3D技术发展前景
虽然,Web3D技术将有好的发展前景,但仍然不可乐观,它面临下述问题:
网络带宽仍然是Web3D主要瓶颈:当前处理器的速度与网络的带宽只能初步满足Web3D图形联机操作的要求,随着Cablemodems和DSL连接的应用,网络带宽将有更大的改进,当一个10MB左右的Web3D模型文件只需要几秒钟下载时,Web3D图形的质量将有很大的改善,而现在的带宽还不能满足要求。Flash作为2D动画在互联网上的成功的关键是只有唯一的技术和标准。现在的Web3D图形是有几十种可供选择的技术和解决方案,多种文件格式和渲染引擎的存在是Web3D图形在互联网上应用的最大障碍,而这种局面在今后若干年还将存在。从现在的发展态势来看,有几种技术可能在未来有一定的优势:
X3D:由Web3DConsortium制定,得到大学,政府机构及一些Web3D图形公司的支持,由于它是VRML97下一代新的国际标准,有比较广泛的社会基础。
Pulse3D:在游戏娱乐领域内领先,使用它的技术的游戏网站有100多个,它得到Discreet和Entertaindom公司的资金支持,现在它正在把游戏领域的技术优势应用到e-commerce。它的插件支持QuickTime5andRealPlayer。
Viewpoint:前身是MetaCreations(3D图形应用软件开发商),它卖掉了所有的其他软件产品,改名为Viewpoint,专们从事Web3D图形技术。其渲染引擎的模块化结构极易扩充,并且能与QTVR-,iPix-,andXML-等标准集成。它的目标是e-commerce。它的技术的最大特色是与XML集成。
Cult3D:开发了e-commerce的全套解决方案,已经有450e-commerce网站使用了Cult3D技术,近10000个商业模型,它也在向娱乐领域扩充,提供全面解决方案,提供最稳定可靠的渲染引擎。
Shockwave3D:这是Macromedia公司Flash插件,有着极为广大的用户群,更引人注目的是Intel把它的Web3D图形集成到Shockwave。IntelWeb3D图形极具特色:动态调节3D内容的分辨率,曲面光滑技术,照片级逼真材质及各种特色效应。
在今年的SIGGRAPH2002世界计算机图形会议上,Intel宣布建立Web3D/CAD工作组,其主要目标是:建立一个统一的,开放的文件格式,用于在Web上显示实时的3D图形。与此同时Web3DConsortium在SIGGRAPH2002会议上了发布X3D最终工作草案。X3D是一个成熟的标准,是VRML的下一代标准,但是Intel完全没有提到它,如果Intel重新制定另外一个新标准,X3D的将面临尴尬,就Intel公司的实力和威望,X3D很难成为真正的国际标准。Intel公司很可能将左右新标准的制定与推行。
预测未来谁是最后的胜利者是困难的,也许很长一段时间内将是多种技术同时共存而又相互竞争。而Intel和微软都具有左右Web3D发展前景的实力。
§5.2论文总结
首先,要感谢郑坤老师给我这次在武汉中地数码公司学习,实习机会,中地公司舒适的工作环境,良好的学习环境,团结协作的作风,不懈努力的进取精神给我很大的启发,并留下了深刻的映像。感谢郑老师、黄秋龙师兄的热心指导和帮助,使我能够顺利地完成毕业设计。
本次的毕业设计就是不断学习的过程。本人初次基础Java3D这种全新的3D开发工具,在编程方面,不
上一篇:java+课程设计+扫雷(论文和程序)
下一篇:试题库管理系统毕业论文