Mobile 3D Graphics API

"M3G" redirects here. For the morphine metabolite, see Morphine-3-glucuronide.

For the Brazilian militant group, see Marx, Mao, Marighella, and Guevara.

Mobile 3D Graphics API

Developer(s)| Java Community Process
Stable release|

1.1 / August 24, 2005; 19 years ago (2005-08-24)

Preview release|

2.0 / April 14, 2009; 16 years ago (2009-04-14)[1]

Operating system| Cross-platform
Type| 3D computer graphics software (library/API)
Website| JSR 184: Mobile 3D Graphics API for J2ME
M3G file format

Filename extension|

.m3g

Internet media type|

application/m3g

Developed by| Nokia
Latest release|

1.1
August 24, 2005; 19 years ago (2005-08-24)

Type of format| 3D computer graphics
Standard| JSR 184
Website| JSR 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.

## History

[edit]

Originally developed at Nokia Research Center Tampere in 2003-2005, M3G was standarized under the Java Community Process as JSR 184 in 22 Dec, 2003. As of 2007[update], 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.

## Rendering

[edit]

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

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.[2]

## Further reading

[edit]

* Pulli, Kari; Aarnio, Tomi; Roimela, Kimmo & Vaarala, Jani (2005). "Designing graphics programming interfaces for mobile devices". IEEE Computer Graphics and Applications. 25 (6). IEEE CG&A 2005: 66–75\. doi:10.1109/MCG.2005.129. PMID 16315479. S2CID 8177273.
* Aarnio, Callow, Miettinen and Vaarala: Developing Mobile 3D Applications With OpenGL ES and M3G,[3] SIGGRAPH 2005: Courses
* Alessio Malizia: Mobile 3D Graphics, Springer, 2006, ISBN 978-1-84628-383-3
* Kari Pulli, Tomi Aarnio, Ville Miettinen, Kimmo Roimela, Jani Vaarala: Mobile 3D Graphics with OpenGL ES and M3G, Morgan Kaufmann, 2007, ISBN 0-12-373727-3
* Claus Höfele: Mobile 3D Graphics: Learning 3D Graphics with the Java Micro Edition, Thomson Course Technology PTR, 2007, ISBN 1-59863-292-2
* Carlos Morales, David Nelson: Mobile 3D Game Development: From Start to Market, Charles River Media, 2007, ISBN 1-58450-512-5

## References

[edit]

1. ^ "JSR 297: Mobile 3D Graphics API 2.0".
2. ^ "File Format for Mobile 3D Graphics API".
3. ^ ""Developing Mobile 3D Applications With OpenGL ES and M3G" by Aarnio, Callow, Miettinen and Vaarala".

## External links

[edit]

Java Community Process

* JSR 184 (Mobile 3D Graphics API for J2ME 1.0, 1.1 Final Release 2)
* JSR 297 (Mobile 3D Graphics API 2.0 Proposed Final Draft)
* JSR 239 (Java Bindings for OpenGL ES) – related Java ME graphics specification

Specifications

* JSR-000184 Mobile 3D Graphics API for J2ME(TM) 1.1 Maintenance Release
* JSR 184 1.1 Specification (Mobile 3D Graphics API Technical Specification, Version 1.1, June 22 2005)
* Getting Started With the Mobile 3D Graphics API for J2ME
* 3D graphics for Java mobile devices: Part 1 and Part 2

list of compatible devices

* JSR 184 compatible devices (Performance listing of most mobile 3D devices)

Source code released by Symbian Foundation on GitHub

* SymbianSource/oss.FCL.sf.app.JRT

* v
* t
* e

Nokia platforms

Operating systems|

* Maemo
* MeeGo
* Nokia Asha Platform
* Nokia X Platform
* Smart Feature OS
* Symbian

Software frameworks|

* Series 30
* Series 30+
* Series 40
* Series 60 (N-Gage)
* Series 80
* Series 90

Related Articles|

* Accredited Symbian Developer
* Carbide.c++
* Qt
* Symbian Foundation
* Mobile 3D Graphics API

*[v]: View this template
*[t]: Discuss this template
*[e]: Edit this template