基于Java的开源3D游戏引擎jMonkeyEngine
2017-10-15 11:23
316 查看
jMonkeyEngine简介
jMonkeyEngine是一款纯Java语言编写的游戏引擎,继承了Java应用跨平台的特性,而且是开放源代码的,遵循BSD开源协议,BSD开源协议用一句简单的话概括就是你可以用它做任何你想做的事情而不必担心版权问题。这款游戏引擎在商业游戏中使用的不多,但是笔者觉得它的设计思想非常美妙,通过阅读源码能给我们很多启示,下面是一些游戏中的效果图(来自官网)。
jMonkeyEngine使用
SDK下载地址:http://jmonkeyengine.org/downloads/引擎为我们提供了一款集成开发环境,可以以向导的方式快速创建项目,新建BasicGame项目,向导为我们生成基础代码,并引入相应jar包:
点击运行项目按钮或按下F6键,编译运行程序。
源码方式创建游戏项目
jMonkeyEngine引擎源码托管在GitHub上,项目采用gradle构建,源码地址:https://github.com/jMonkeyEngine/jmonkeyengine
点击Download Zip按钮下载。
开发环境搭建
1.下载gradle并解压,將bin目录设置为环境变量。打开控制台输入gradle -version,显示如下则表示安装成功。gradle下载地址:http://gradle.org/downloads
2.安装gadle eclipse插件,笔者使用的eclipse 是Luna版本,点击菜单Help->Install New Software,输入地址:http://dist.springsource.com/release/TOOLS/gradle
全选显示的安装项目,一直下一步,安装完成后重启eclipse。
3.將下载的源码解压,新建工作空间,执行File->Import选择Gradle Project。
点击Browse找到项目源码目录,点击Build Model,选择要导入的项目,点击Next按钮,导入后將工程编码设置为UTF-8,不然会报错。
成功导入项目如下图所示:
使用引擎创建应用
接下来我们以jme3-examples工程下的一个案例说明如何使用jMonkeyEngine来渲染3D模型。程序代码:
package jme3test.blender; import com.jme3.app.SimpleApplication; import com.jme3.light.DirectionalLight; import com.jme3.math.ColorRGBA; import com.jme3.math.Vector3f; import com.jme3.scene.Spatial; public class TestBlenderLoader extends SimpleApplication { public static void main(String[] args){ TestBlenderLoader app = new TestBlenderLoader(); app.start(); } @Override public void simpleInitApp() { viewPort.setBackgroundColor(ColorRGBA.DarkGray); //加载三维模型 Spatial ogre = assetManager.loadModel("Blender/2.4x/Sinbad.blend"); rootNode.attachChild(ogre); //加载三维模型贴图资源 Spatial track = assetManager.loadModel("Blender/2.4x/MountainValley_Track.blend"); rootNode.attachChild(track); // 设置太阳光 DirectionalLight dl = new DirectionalLight(); dl.setDirection(new Vector3f(-0.1f,-0.7f,1).normalizeLocal()); dl.setColor(new ColorRGBA(0.44f, 0.30f, 0.20f, 1.0f)); rootNode.addLight(dl); // skylight dl = new DirectionalLight(); dl.setDirection(new Vector3f(-0.6f,-1,-0.6f).normalizeLocal()); dl.setColor(new ColorRGBA(0.10f, 0.22f, 0.44f, 1.0f)); rootNode.addLight(dl); // 设置环境光为白色 dl = new DirectionalLight(); dl.setDirection(new Vector3f(1, -0.5f,-0.1f).normalizeLocal()); dl.setColor(new ColorRGBA(0.80f, 0.70f, 0.80f, 1.0f)); rootNode.addLight(dl); } @Override public void simpleUpdate(float tpf){ } }1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
使用JMonkeyEngine创建应用,需要继承SimpleApplication类,重写父类的simpleInitApp和simpleUpdate,simpleInitApp在程序执行时只会调用一次,完成初始化工作。simpleUpdate是实时调用的,每一帧都会被执行一次,用于实现游戏中的动画效果。
其中rootNode、viewPort、assetManager都是父类的属性,我们可以通过这些属性来加载3D模型,设置环境光等。
编译运行
点击Run As ->Java Application.可以看到,一个外部的3D模型被完整的渲染到窗口中,使用起来是不是很方便呢。
这篇文章只是对JMonkeyEngine做了简单的介绍,官网上提供的教学资源比较丰富,请参考:
http://wiki.jmonkeyengine.org/doku.php/jme3#documentation_for_intermediate_users
相关文章推荐
- 基于Java的开源3D游戏引擎jMonkeyEngine
- 基于Java的开源3D游戏引擎jMonkeyEngine
- 基于Java的开源3D游戏引擎jMonkeyEngine
- OGEngine —— 基于JAVA的手游开发开源引擎
- java实现:机器人视觉与环境感知基于八叉树算法(待开源)
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- OGEngine——基于java的手游开发开源引擎
- 基于Java的 SSH / SFTP 开源工具包
- OpenJWeb(v1.9)企业级信息化应用平台开源版发布公告(基于Java语言开发)
- 推荐一款基于Java的音视频处理开源项目--JAVE
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- 阿里再开源!基于JAVA的模块化开发框架JarsLink
- java 仿qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布
- OpenJWeb(v1.9)企业级信息化应用平台开源版发布公告(基于Java语言开发)
- 【基于Java的四大开源测试工具】
- 基于JAVA的开源工作流引擎(Open Source Workflow Engines Written in Java)
- 完全开源Android网络框架 — 基于JAVA原生的HTTP框架
- 基于Java的开源日志库log4j调研笔记
- 基于Java的开源的模型驱动转换器和抽象用户接口标识语言6.1发布