




已阅读5页,还剩10页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ1 Java3D 引擎 Jmonkeyengine 入门 V0 1 版 一 JME 在 Eclipse 上的下载配置 2 二 Learning jME 9 1 Hello World JME 9 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ2 一一 JME 在在 Eclipse 上的下载配置上的下载配置 JME 是一个优秀的开源 java3D 游戏引擎 以下几幅图是由 JME 开发的游戏的截图 足以吸引你到其主页上瞧瞧吧 想上手玩玩 好 我们一步一步来 即然是开源的 我们要做的第一步就是下载其源码 源码中包含了 jme 类库的源码和 step by step 的代码示例 在 ec 通过 cvs 中导入 jme 源码 看图说话吧 1 点 File 下的 import 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ3 2 选择通过 CVS 导入 3 Next 后 选中 如果你是第一次上 的话 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ4 4 设定登陆 sun CVS 的帐号 主机当然是 Repository 如你不知都有哪些项目 就写 cvs 吧 这样进去后就可瞧见 sun 上所在的 Open 项目了 帐号 如你未在 上注册过 就全写 guest 了 我个主觉得还要是注册下 这是个礼貌问题 毕境是用人家辛苦写出来的代码呢 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ5 5 再 Next 嗬 原来 sun 上有这么多开源项目 等搞完这个再慢慢看 列表可能有点慢 要看你的网速 了 等全列完了 你就在下面选 jme 导出就 OK 如果你在列表中未找到 jme 也不要急 看到这个么 选中 在里面输入 jme 后 Next 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ6 6 接下来 不用贴了吧 导入 jme 的所有源码 资源文件 例程和其所使用的 Native Lib 给个最终结 果的全图吧 Src 所有的源代码 Lib javaLib 和 Native Lib 7 到底有啥效果呢 忙乎了这半天 往下看 这老外做事真是实在 一课一课的讲怎么做个游戏 就生怕我们不玩它的做品 Jmetest 包下都是一个个的测试例程 只要有 main 方法的你就可以运行 眼见为实嘛 我建议你运行jmetest flagrushtut lesson9 Lesson9 这个类 是个己经 Started 的赛车游戏 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ7 首先看到的是一个对话框 设置相关参数的 直接 OK 吧 它总是有默认的 黑屏 变亮 看到了吗 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ8 如看到上图 你现在就可以使用 w s a d 四个键控制这个小车车 用鼠标控制视角 有点简简陋 是 不到 2000 行代码写出的东东啊 你写 2W 行试试 可能屏幕一闪而过 又恢复了原状 那就只有两个原因 一是你机器太破了 跑不起 好像有这种 情况 我猜的 3D 游戏嘛 另一个原因是你技术 cha 啦 下载的 jar 包和本地类库没配好 Jar 包好导 入 NativeLib 就要右击 src 目录 在对话框中如下设置 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ9 二二 Learning jME This will provide all you need to get started with jME It assumes you have jME installed If not you can look to this installation guide As a supplement to this guide you can read the documentation at jME s documentation link paying special attention to jME s wiki Finally never be afraid to ask questions no matter how simple at jME s forum All of the code you see here is done using jME s latest CVS version Also all the source code here is in the CVS under package jmetest TutorialGuide Please post any corrections on the jME forums or email them to me directly 1 Hello World JME 最简单的一个 JME 游戏 只是一个场景展示 使用 rootNode 展示一个 3D Box 在空间中展示 一个 3D 的长方体 界面如下图 代码简单了 先看一下我再来分析 import com jme app AbstractGame import com jme app SimpleGame import com jme math Vector3f import com jme scene shape Box 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ10 在空间中显示一个长方体 1 一个简单游戏只需要继承com jme app SimpleGame即可 2 创建一个Box对象 加入到场景中 author javaFound public class HelloWorld extends SimpleGame 主方法 public static void main String args HelloWorld app new HelloWorld 显示游戏配置窗口 默认为不显示 app setDialogBehaviour AbstractGame ALWAYS SHOW PROPS DIALOG 启动游戏 app start protected void simpleInitGame 创建一个Box对象 第一个参数是其识别名字 第二个定义了一个Vector3f对象 表示形状在空间中的中心位置点 后三个参数分别定义了形状在x y z三轴上的拉伸 即长宽高 Box b new Box My box new Vector3f 3 2 0 2 20 2 rootNode代表场景中的根形状结点 是从父类继承而来的 将我们自己新建的形状对像b加入到场景中 rootNode attachChild b 就这么短短的几行代码 看到了吗 如果还有点摸不着头脑 别急 我来说明下 1 继承游戏基类继承游戏基类 SimpleGame public class HelloWorld extends SimpleGame 首先 我们的类是 extends com jme app SimpleGame 这是 JME 提供一游戏引擎基类 当我 们自己的类继承其后 再调用 start 方法时 JME 类库就自动初始化了 3d 游戏所需要的基础配置 在 com jme app 下面 其它几个类都可以用来继承生成我们的游戏 可根据我们游戏的复杂度选择 只是 SimpleGame 是最简单的而己 换包话说 真正的 引擎 就是在 com jme app 下面 2 3D 形状的创建 形状的创建 Box b new Box My box new Vector3f 3 2 0 2 20 2 这行代码构建一个 3D 的立方体 构建时 通过设置 Box 类不同的构造参数 可以创建不同位置 大 小的立方体 Box 有不同的构造器参数 本例中所使用的构造器 第二个参数是一个 com jme math Vector3f 对象 一个 Vector3f 对象通过三个 float 构造而成 用以代表空间中 确定某个点坐标的 x y z 值 在 com jme math 下 提供了较常用的数学计算对象 最后一个参 数 分别代表了要创建的立方体的长 宽 高参数 在 com jme scene shape 下面 提供了非常多的 3D 形状类 比如 Sphere 等 你可根据自己 的需要使用 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ11 3 关于 关于 rootNode 对象对象 Box b new Box My box new Vector3f 3 2 0 1 1 1 rootNode attachChild b rooNode 是从父类继承而来的 可以理解为当前场景的根对象 后继所加入的对象 将通过 rootNode 引入 你可以通过 rootNode 向场景中加入多个形体 例如 如下代码效果 Box b new Box My box new Vector3f 3 2 0 1 10 1 rootNode attachChild b Sphere b2 new Sphere My Sphere new Vector3f 3 2 0 4 5 6 rootNode attachChild b2 Chllenge 1 请在场景是显示一个哑铃状的物体 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ12 2 HelloNode 本节示例如何在场景中如何定义 Node Bounding Volumes Sphere Colors Translation and Scaling 如代码示例 public class HelloNode extends SimpleGame public static void main String args HelloNode app new HelloNode app setDialogBehaviour AbstractGame ALWAYS SHOW PROPS DIALOG app start protected void simpleInitGame Box b new Box My Box new Vector3f 0 0 0 new Vector3f 1 1 1 设定一个球形边界外框 b setModelBound new BoundingSphere 调用这个方法后 以后在场景中所加入的物体在按下B时 就会显示其边界 b updateModelBound 设置b在空间中的位置 b setLocalTranslation new Vector3f 5 2 0 默认的颜色 b setDefaultColor ColorRGBA blue 创建一个球形 Sphere s new Sphere My sphere 10 10 1f s setModelBound new BoundingBox s updateModelBound 设为随机颜色 s setRandomColors 构造一个用来挂接上面两个物件的子节点 Node n new Node My Node 挂接上前面创建的物件 n attachChild b n attachChild s 放大节点为其原始大小的5倍 n setLocalScale 5 移动默认场景颜色 物件将会显示自己的颜色 rootNode setLightCombineMode LightState OFF 挂接上子节点 rootNode attachChild n 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ13 1 显示边界 与上节相比 新增加的第一行代码就是 设定一个球形边界外框 b setModelBound new BoundingSphere Bound对象 such as BoundingSphere and BoundingBox 是jME中的一个关键对象之一 按 下B键时 你的物件会的边界会显示在线条构成的球形中 如果使用BoundingSphere 对象 在jME中通过物件的Bound对象 可以很容易的观察可视化的和非可视化的物件 特别是 当游戏中加入复杂的物件中 如人物 2 设定位置 b setLocalTranslation new Vector3f 5 2 0 要将物件放到 移动到 指定位置时 需要提供一个Vector3f对象 Vector3f对象构造时 的三个参数分别代表空间中 x y z值 3 设定物件的颜色 默认的颜色 b setDefaultColor ColorRGBA blue 设为随机颜色 s setRandomColors 简单的颜色设置 可通过ColorRGBA 的属值设定 当然 你也可通过 new ColorRGBA 0 1 0 1 调用构造一个自己的色彩对象来设定到物件 3 贴图 本节演示如何给物件贴图和打光 先看效果图 只为不凡而来 蓝杰内部资料 蓝杰内部资料 非商业用途可分发 www NetJ14 代码如下 public class HelloStates extends SimpleGame public static void main String args HelloStates app new HelloStates app setDialogBehaviour AbstractGame ALWAYS SHOW PROPS DIALOG app start protected void simpleInitGame Create our objects Nothing new here Box b new Box my box new Vector3f 1 1 1 new Vector3f 2 2 2 b setModelBound new BoundingBox b updateModelBound Sphere s new Sphere My sphere 15 15 1 s setModelBound new BoundingSphere s updateModelBound Node n new Node My root node 指定要贴图的图片位置 URL monkeyLoc monkeyLoc HelloStates class getClassLoader getResource jmetest data imag es DSC00660 JPG 创建贴图对象 TextureState ts display getRenderer createTextureState 设定贴图风格 在物件的每个面贴一张图
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家居前台规划方案(3篇)
- 水库管道泄洪方案(3篇)
- DB23-T2950-2021-梓树播种育苗技术规程-黑龙江省
- DB23-T2933-2021-寒区规模化奶牛场粪污收集、贮存与处理技术规程-黑龙江省
- 广电网络设备管理制度
- 咖啡器具仓库管理制度
- 小区物业安全管理制度
- 公司劳资纠纷管理制度
- 商品优化规划方案(3篇)
- 水利公司组建方案模板(3篇)
- 要素表及要素式判决书
- 瑞幸咖啡入职考试50道测试答案
- 2022年南通如皋市医疗系统事业编制乡村医生招聘笔试试题及答案解析
- GB/T 9652.1-2007水轮机控制系统技术条件
- 初中英语八下unit默写手册
- 消防控制室值班记录1
- 考研考博-英语-天津理工大学考试押题卷含答案详解4
- T-CASAS 004.2-2018 4H碳化硅衬底及外延层缺陷图谱
- 法学本科毕业论文
- 敏捷项目管理:敏捷革命课件
- 真空断路器课件
评论
0/150
提交评论