jMonkey Engine [freeware]

Moderators: Moderator, Global Moderator

Post Reply
Tami
Administrator
Administrator
Posts: 10892
Joined: Sun Apr 25, 2004 1:05 pm

jMonkey Engine [freeware]

Post by Tami »

[url=\"http://www.jmonkeyengine.com/\"]jME (jMonkey Engine)[/url] is a high performance scene graph based graphics API. Much of the inspiration for jME comes 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, LWJGL is supported with plans for JOGL support in the near future.

jME is completely open source under the BSD license. You are free to use jME in anyway you see fit, hobby or commercial. All we ask is a little footnote (donations are nice too.)

History

jME was created by Mark Powell in 2003 while he was investigating OpenGL rendering. After discovering LWJGL he decided that Java (his language of choice) would be perfect for his own graphics tools. These tools soon grew into a primitive engine. After reading David Ebery's 3D Game Engine Design, a scene graph architecture was implemented. It was then that jME became part of Sun's Java.net software repository. jME soon saw others joining the project to enhance it's capabilities. It has since grown to encompass many advanced modern graphics features and turned into a stable platform for game development. Joshua Slack joined jME at the end of 2003 and became a core member and integral part of the jME team.

Features of jME

jME is a scenegraph based architecture. The scenegraph allows for organization of the game data in a tree structure, where a parent node can contain any number of children nodes, but a child node contains a single parent. Typically, these nodes are organized spatially to allow the quick discarding of whole branches for processing. For example, if we build a graph such that all objects in a room share a parent (room), and all rooms share a parent (floor), where all floors share a parent building. Our character is in room 1 of the first floor. We can quickly discard the floor 2 node (which is turn discards every room on the 2nd floor and every object in those rooms). We can then process the floor 1 branch of the tree. All rooms that are not room 1 are discarded (including all objects in that room). We then process room 1 including it's objects.

Discarding can mean a variety of things, but the most significant in Graphics programming is culling of data. jME's camera system uses frustum culling to through out scene branches that are not visible. This allows for complex scenes to be rendered quickly, as typically, most of the scene is not visible at any one time.

The leaf nodes of the scenegraph are Geometry that will be rendered to the display. There are many supported Geometrys, including: Bezier Patches, Line, Points, Models (Milkshape, MD2, ASE, etc), Terrain, Level of Detail, and more.

jME also supports many high level effects, such as: Imposters (Render to Texture), Environmental Mapping, Lens Flare, Tinting, Particle Systems, etc.

jME supplies the user with easy to use, but powerful application classes for building the application. Jumping into jME should be a quick and painless process. With a small learning curve, you can have your game up and running in no time.

The following is a comprehensive list of the current (Version .11) Features of the jMonkeyEngine:


* Sample Applications: Game system allows for maintenance of the main game loop
* SimpleGame provides a quick entry point for proof of concepts
* GameState provides ability to change game states (menu, game, credits, etc)

Embedded Integration
* Java Applet
* AWT/Swing
* SWT through user code

Import / Export
* Fast and compact jME binary format
* Extensible to allow other import/export formats (XML is planned)

Bounding System
* All geometry can be enclosed in a bounding system.
* Boxes, Capsules and Spheres.

Curves
* Bezier curves can be used for node controlling.

Bezier Mesh
* For smooth curved surfaces.
Font Meshes
* Ability to generate 3d meshes from fonts.

Effects
* GLSL Shader Support
* Vertex and Fragment Program Support (ARB Shaders)
* High Quality Water with configurable reflection, refraction, wave generation, etc.
* Bloom
* Extensible Particle System.
* Lens Flare.
* Cloth Simulation.
* Screen tinting.
* Texture based dot3 bump-mapping

Image Loading
* Support BMP, uncompressed TGA, JPG, PNG, GIF, DDS.

Texture System
* Supports mipmapping, environmental mapping, multitexturing.

Input System
* Robust system allows for easy creation of input actions.

Collision and Picking
* Efficient bounding volume and triangle accurate picking and collision.

Lighting System
* Handles up to eight lights at a time with utilities for optimal light selection.
* Supports directional light, spot light and point light.

Shadow System
* Z-Pass Shadow Volumes.

Math Library
* Provides faster system for linear algebra
* Use of look up tables.

Level of Detail
* Discrete Level of Detail using a switching mechanism for fast model switching.
* Continuous Level of Detail dynamically collapses triangles of a single model.

Model Loading
* COLLADA, 3DS, Obj, MD2, MD3, Milkshape, ASE support.
* Supports skin and bones and weighted skeletal animation.

Shape Primitives
* Box, Sphere, Cylinder, Capsule, Torus, Arrow, Disk, Hexagon, Dodecahedron, Icosahedron, Octahedron, PQTorus, Pyramid and Quad support.

State System
* Minimizes OpenGL state changes by tracking and managing the status of the OpenGL machine.
* Allows merging of Texture and Light states in the tree.

Camera System
* Maintains camera as a separate object or a node in the scene.
* Frustum culling for efficiency.

Renderer Abstraction
* Allows for any rendering API to be implemented.
* Currently LWJGL 1.0 implemented.
Render Queue
* Sorts scene elements based on Opacity. Opaque are sorted front to back and rendered first, then transparent is sorted back to front, last screen elements are sorted by z depth.

Render to Texture
* Render any scene to a texture object (currently requires FBO support)

Imposters
* Render to texture used to display a single model to a texture, can be animated as slow as needed to increase frame rate.

Billboard Node
* Keeps a node facing the camera

Sound
* Supports OpenAL and FMOD
* Music queue system

Terrain
* Terrain blocks act as single geometry.
* Terrain Pages implements a Quad tree of Terrain blocks.

User Interface
* JMEDesktop System allows rendering of Swing components in jME scenes.
Image

[color=\"#41211C\"]It takes years to build up trust and only seconds to destroy it

[/color]
Post Reply

Return to “Game Dev”