1 / 17
文档名称:

中国象棋3D.doc

格式:doc   大小:1,639KB   页数:17页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

中国象棋3D.doc

上传人:非学无以广才 2020/2/11 文件大小:1.60 MB

下载得到文件列表

中国象棋3D.doc

文档介绍

文档介绍:中国象棋3D配置Java3D环境本次实验我们组打算使用的编程语言是Java,但是Eclipse自带的函数库里不含Java3D所需的配置信息,所以需要我们自己配置3D环境,下面是我们组的添加方法。首先下载配置文件,,,,,,然后将配置文件复制到Eclipse安装目录下的JDK/JRE/bin和DK/JRE/lib里当运行Java程序的时候按下面步骤添加jars文件>buildpath->configurebuildpathexternaljars点击OK然后运行程序代码编写在编写代码部分,我们组遇到了许多问题,因为是从未接触过的知识,所以在编程过程中经常报错,为了在规定时间内完成任务,我们组就现学现用,在网上下载相关的代码,结合Java_API手册一遍又一遍的反复读,手册上没有的类就上网查,遇到英文就用翻译软件翻译了来看,最后再一步又一步的解决编程过程中的一个个error首先介绍一点必备的Java3D相关知识Java3D的场景图结构:Java3D实际上是Java语言在三维图形领域的扩展,与Java一样,Java3D有纯粹的面向对象结构。Java3D的数据结构采用的是Scene Graphs Structure(场景图),就是一些具有方向性的不对称图形组成的树状结构(图1)。 我们在一个Java3D应用程序看到的逼真三维场景从程序的角度看来,实际就是由Java3D定义的一系列的对象,这些对象不是杂乱无序,对象之间也不是毫无关系。如果想让三维图像正常显示,必须在这两点上遵循Java3D场景图的规定。观察图1,Java3D场景图的树结构由各种各样的对象组成: 在图中出现的这些对象都实现了Java3D中有重要的意义的类,从逻辑上我们将它们分为三类:•根节点(Root):Virtual Universe Object •节点(Node):Local Object、Branch Group Nodes、Behavior Node、Shape3D Node… •叶子节点(Leaf):Appearance、Geomery.. 图1:在应用中的Java3D场景图场景图中线和线的交汇点称为节点(Node),这些节点都是Java3D类的实例(Instance of Class),节点之间的线表示各个实例之间的关系。•Virtual Universe是根节点,每一个场景图的Virtual Universe是唯一的。 •在Virtual Universe下面是Locale节点,每个程序可以有一个或多个Locale,但同时只能有一个Locale处于显示状态,就好象一个三维世界非常大,有很多个景点,但我们同时只能在一个景点进行观察。Java3D允许从一个Locale跳到另一个Locale,不过绝大多数程序只有一个Locale。 •每一个Locale可以拥有多个BranchGroup节点。所有三维形体的其位置信息(Transform Group Nodes)都建立在BranchGroup节点之上。 •TransformGroup Node用来设定Shape3D在Virtual Universe中的位置。 •Spape3D Node是三维图形节点,这个节点的实体放映在最后的显示画面中,就是三维世界中的每个形体。包括正方体、球体以及任何形状和外观的三维形体。 •位于场景图最下层的是两个叶子节点:三维体的外观(Appearance)和几何信息(Geometry),这两个节点定义了一个三维体的显示效果。 •View Platform位于图1的另一个分枝上,与前面所有描述三维体的性质的概念不同,View Platform和View都是用来定义观察者的信息。 上面所列的概念很多,但是对于建立一个简单的Java3D程序,我们至少需要了解三个概念:虚拟宇宙(Virtual Universe)、场景(Locale)、坐标系统。下面是一些相关代码的具体实现:privateChessFram(){ setpanel=newSetPanel(); canvasfactroy=newCanvasFactroy(()); (660,600); (false); (null); ("中国象棋3D"); (); ((),); (setpanel,); }比较简单,anvasFactroy(GraphicsConfigurationconfig){ canvas3d=newCanvas3D(config); bounding=newBoundingSphere(newPoint3d(0,0,0),1000); startabs=newAbsChess('炮',newPoint(2,3),);//开始节点信息 endabs=newAbsChess('',newPoint(3,3),);//结束节