Reference articles on history, science, culture and more
Encyclopedia

Mobile 3D Graphics API

M3G file format
Filename extension .m3g
Internet media type application/m3g
Developed byNokia
Latest release1.1
August 24, 2005 (2005-08-24)
Type of format3D computer graphics
StandardJSR 184
WebsiteJSR 184: Mobile 3D Graphics API for J2ME

The Mobile 3D Graphics API, commonly referred to as M3G, is an open source graphics API and file format specification for developing Java ME applications that produce 3D computer graphics on embedded devices such as mobile phones and PDAs.

01History

Originally developed at Nokia Research Center Tampere in 2003-2005, M3G was standardized under the Java Community Process as JSR 184 in 22 Dec, 2003. As of 2007, the latest version of M3G was 1.1, but version 2.0 was drafted as JSR 297 in April 2009. In 2010, M3G 1.1 JNI source code and related Symbian OS Java Runtime Environment were subsequently released into open source through the Symbian Foundation.

Screenshot of the Mobile game Asphalt 3: Street Rules, showing the capabilities of the Mobile 3D Graphics API.
Screenshot of the Mobile game Asphalt 3: Street Rules, showing the capabilities of the Mobile 3D Graphics API.

02Rendering

M3G is an object-oriented interface consists of 30 classes that can be used to draw complex animated three-dimensional scenes, it provides two ways for developers to draw 3D graphics: immediate mode and retained mode.

In immediate mode, graphics commands are issued directly into the graphics pipeline and the rendering engine executes them immediately. When using this method, the developer must write code that specifically tells the rendering engine what to draw for each animation frame. A camera, and set of lights are also associated with the scene, but is not necessarily part of it. In immediate mode it is possible to display single objects, as well as entire scenes (or worlds, with a camera, lights, and background as parts of the scene).

Retained mode always uses a scene graph that links all geometric objects in the 3D world in a tree structure, and also specifies the camera, lights, and background. Higher-level information about each object, such as its geometric structure, position, and appearance, is retained from frame to frame. In retained mode, data are not serialized by Java's own serialization mechanism. They are optimized by the M3G serialization mechanism, which produces and loads data streams conforming to the .m3g file format specification for 3D model data, including animation data format. This allows developers to create content on desktop computers that can be loaded by M3G on mobile devices.

Watch videos about Mobile 3D Graphics APIExplainers and documentaries on YouTube (opens in a new tab)

Sources and credits

This article is adapted from the Wikipedia article Mobile 3D Graphics API, written by its contributors and licensed under CC BY-SA 4.0. Fathomly has changed the layout, removed citation markers, navigation and maintenance notices, and adjusted punctuation. This adapted version is shared under the same license. For references, see the original article.

Images, from Wikimedia Commons:

Fathomly is not affiliated with or endorsed by the Wikimedia Foundation. Spotted a problem? Tell us.