文档介绍:jME (jMonkey Engine)介绍
060505113 邹帆
摘要:jME(jMonkey Engine)是一个基于场景图、高性能的图形API。jME设计的思想主要来源
于David Eberly所写的《 3D Game Engine Design》一书。jME是一个使用Java语言编写的图形绘
制引擎。通过使用一个抽象层,jME支持任意的绘制系统。jME当前使用LWJGL 1和JOGL2作为
底层绘制引擎。
关键字:jMonkey Engine,游戏引擎,基于 Java,3D,LWJGL
Introduction to jME (jMonkey Engine)
Abstract: jME (jMonkey Engine) is a high performance scene graph based graphics API. Much of
the inspiration for es from David Eberly's book 3D Game Engine Design. jME was built to
fulfill the lack of full featured graphics engines written in Java. Using a abstraction layer, it allows
any rendering system to be plugged in. Currently, both LWJGL and JOGL are supported.
Key words: jMonkey Engine, game engine, Java-based, 3D, LWJGL
初步介绍
jME 简史
Mark Powell 2003 年研究 OpenGL 渲染时创作出了 jME。发现 LWJGL 后,他认定 Java 是自己
开发图形工具集的绝佳选择。Mark 很快就把这个工具集做成了一个雏形版的引擎。在读过
David Ebery 所著的《3D Game Engine Design》一书之后,他实现了一个场景图构架。正是在
那个时候 jME 成为了 Sun 公司 软件库的一部分。很快许多开发爱好者加入到提升 jME
性能的工程中来,从这时起 jME 逐渐扩充了许多高级特性并成为一个稳定的游戏开发平台。
Joshua Slack 在 2003 年末加入了 jME 的开发团队,成为整个 jME 开发团队的核心成员。
jME 主要特性
jME 的构架是基于场景图的,这一构架使得开发者能够以树形结构组织游戏数据。树形结构
中一个父结点可以包含任意数量的子结点,但一个子结点只能有一个父结点。具有代表性的
一点就是这种组织结点的空间结构支持快速删除某一分支的操作。例如,假设我们绘制了这
样一个场景图:房间里所有的物体共享同一个父结点——房间,所有的房间也共享一个父结
点——楼层,所有的楼层共享一个父结点——整个建筑。我们的主角在 1 楼的 1 号房间。我
1
LWJGL: Light Weight Java Graphics Library,轻型 Java 图形库,官方网站
2
JOGL: Java bindings for OpenGL,Java 对 OpenGL API 绑定的开源项目并设计为采用 Java 开发的应用程序
提供 3D 图形硬件支持 ./
们可以迅速抛弃 2 楼结点(2 楼结点下的所有房间结点及其中的所有物体也被抛弃)。接着
来处理树的 1 楼分支,抛弃 1 楼分支中除 1 号房间外其它结点(房间中的物体结点也被抛弃),
然后再处理 1 号房间中的所有物体。
抛弃结点可以裁剪图形编程中的“冗余”数据。jME 的摄像机系统(Camera System)使用
视锥(frustum)裁剪掉不可见场景的分支。一般说来,某个时刻大多数场景是不可见的,
这样一来就可以实现复杂场景的快速绘制。
场景图中的叶子结点是将被绘制和显示的几何形状。jME支持多种几何形状的绘制,包括贝
塞尔曲面(Bezier Patches),线,点,模型。(Milkshape3,MD24,ASE5等),地形(Terrain),
细节层次(LOD,Level of Detail)等等。jME同样支持多种高级特效,如视点替用特效
(Imposters),环境映射( Environmental Mapping),镜头眩光(Lens Flare),着色( Tinting),
粒子系统(Particle Systems