- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目 录
设计的需求分析 2
实际题目 2
要解决的问题 2
问题的功能说明 2
软件系统结构 2
Java 3D功能描述 2
场景图描述 3
用户界面 3
关键技术 4
三维物体建模技术...................................................................................................................5
程序运行结果 6
摆动状态 6
结论 7
设计的需求分析
实际题目
本课题的题目为:基于Java 3D的设计
本课题的核心是解决钟摆运动的问题。但是相对于核心代码的实现,基础场景的布置,三角形面片的设计以及纹理的映射等也是十分重要的,下面将详细说明本课题需要解决的问题:
背景图映射问题。
摆钟各部分运动的实现问题。
纹理映射的实现问题。
环境光设置问题。
问题的功能说明
背景图映射问题。一般的场景中,我们只是通过简单的调用方法对背景进行单一着色,比如:Background bg = new Background(bgColor);这样的背景会略显单调,所以,本科中首先要解决的问题是在场景背景中映射图片,使得背景更加生动且逼真。
摆钟各部分运动的实现。本场景中,实现的主要过程是钟摆的周期性摆动以及各指针的正常旋转。
纹理映射的实现。本课题实现的场景中,表盘以及背景墙需要采用不同的纹理映射,实现不同的效果,其中背景墙需要特定的花纹,而表盘则采用已设计好的图案。
聚光灯效果。场景中添加环境光束,使得物体呈现不同的视觉效果,
本课题使用的核心技术是Java 3D。Java 3D是Java语言在三维图形领域的扩展,是一组应用编程接口(API)。利用Java 3D提供的API,编程人员可以编写出相对较多的逼真且操作性强的一些三维图像或者游戏。详细介绍如下:
生成简单或复杂的形体(也可以调用现有的三维形体)
使形体具有颜色、透明效果、贴图。
在三维环境中生成灯光、移动灯光。
具有行为的处理判断能力(键盘、鼠标、定时等)。
生成雾、背景、声音。
使形体变形、移动、生成三维动画。
编写非常复杂的应用程序,用于各种领域如 VR(虚拟现实)。
Java 3D场景图结构。Java 3D采用场景结构图的场景组织模式。场景图是一种DAG图,类似于一种属性结构,即一些具有方向性的不对称图形组成的树状结构。我们在一个 Java3D 应用程序看到的逼真三维场景从程序的角度看来,实际就是由 Java3D 定义的一系列的对象,这些对象不是杂乱无序,对象之间也不是毫无关系。如果想让三维图像正常显示,必须在这两点上遵循 Java3D 场景图的规定。如下图 1,Java3D 场景图的树结构由各种各样的对象组成,其中,场景图中线和线的交汇点称为节点(Node),这些节点都是 Java3D 类的实例(Instance of Class),节点之间的线表示各个实例之间的关系。
图1:Java 3D场景图Virtual Universe采用默认值。并且没有采用观察者模式。
用户界面
如下图2所示,
关键技术
三维物体建模技术
// 时针设计
Appearance ap = new Appearance();
ap.setMaterial(new Material());
Shape3D shapeHour = new Shape3D(createGeometry(0.4, 0.02, 0.02), ap);
TransformGroup spinHour = new TransformGroup();
spinHour.addChild(shapeHour);
spinHour.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
root.addChild(spinHour);
// 分针设计
Shape3D shapeMin = new Shape3D(createGeometry(0.5, 0.02, 0.02), ap);
TransformGroup spinMin = new TransformGroup();
spinMin.addChild(shapeMin);
spinMin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
root.addChild(spinMin);
// 秒针设计
Shape3D shapeSec = new Shape3D(cr
文档评论(0)