Mobile 3D Graphics API: Difference between revisions

From HandWiki
imported>JMinHep
url
 
Scavis2 (talk | contribs)
url
 
Line 1: Line 1:
[[File:Asphalt 3 gameplay.png|thumb|right|Screenshot of ''[[Software:Asphalt 3: Street Rules|Asphalt 3: Street Rules]]'', showing the capabilities of the Mobile 3D Graphics API.]]
{{Infobox software
| name = Mobile 3D Graphics API
| logo =
| screenshot =
| caption =
| developer = [[Java Community Process]]
| released =
| latest release version= 1.1
| latest_release_date = {{Start date and age|2005|08|24}}
| latest_preview_version = 2.0
| latest_preview_date = {{Start date and age|2009|04|14}}<ref>{{cite web|url=https://jcp.org/en/jsr/detail?id=297|title=JSR 297: Mobile 3D Graphics API 2.0}}</ref>
| operating_system = [[Cross-platform]]
| genre = [[Software:3D computer graphics software|3D computer graphics software]] (library/API)
| license =
| website = [https://jcp.org/en/jsr/detail?id=184 JSR 184: Mobile 3D Graphics API for J2ME]
}}
{{Infobox file format
|name= M3G file format
|screenshot=
|caption=
|extension= .m3g
|mime= application/m3g
|type code=
|uniform type=
|magic=
|owner= [[Company:Nokia|Nokia]]
|released=
|latest release version= 1.1
|latest_release_date = {{Start date and age|2005|08|24}}
|genre= [[3D computer graphics|3D computer graphics]]
|container for=
|contained by=
|extended from=
|extended to=
|standard= [[Java Community Process|JSR]] 184
|url= [https://jcp.org/en/jsr/detail?id=184 JSR 184: Mobile 3D Graphics API for J2ME]
}}


The '''Mobile 3D Graphics API''', commonly referred to as '''M3G''', is a specification defining an [[Application programming interface|API]] for writing [[Java (programming language)|Java]] programs that produce [[3D computer graphics|3D computer graphics]]. It extends the capabilities of the Java ME, a version of the [[Software:Java (software platform)|Java platform]] tailored for embedded devices such as [[Engineering:Mobile phone|mobile phone]]s and [[Social:Personal digital assistant|PDA]]s. The [[Object-oriented programming|object-oriented]] interface consists of 30 classes that can be used to draw complex animated three-dimensional scenes. M3G was developed under the [[Java Community Process]] as JSR 184.  {{As of|2007}}, the current version of M3G is 1.1, but version 2.0 is in development as JSR 297.
The '''Mobile 3D Graphics API''', commonly referred to as '''M3G''', is an [[Open source|open source]] graphics API and [[File format|file format]] specification for developing Java ME applications that produce [[3D computer graphics|3D computer graphics]] on embedded devices such as [[Engineering:Mobile phone|mobile phone]]s and [[Social:Personal digital assistant|PDA]]s.


== Immediate and retained modes ==
== History ==


M3G 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).
Originally developed at [[Company:Nokia|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 [[Java Native Interface|JNI]] [[Source code|source code]] and related Symbian OS Java Runtime Environment were subsequently released into [[Open source|open source]] through the [[Organization:Symbian Foundation|Symbian Foundation]].


Retained mode always uses a [[Scene graph|scene graph]] that links all geometric objects in the 3D world in a [[Tree structure|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.
== Rendering ==
[[File:Asphalt 3 gameplay.png|thumb|right|Screenshot of the [[Mobile game]] ''[[Software:Asphalt 3: Street Rules]]'', showing the capabilities of the Mobile 3D Graphics API.]]


== Other features ==
M3G is an [[Object-oriented programming|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 (computer graphics)|immediate mode]] and [[Retained mode|retained mode]].
The M3G standard also specifies a file format for 3D model data, including animation data format. This allows developers to create content on PCs that can be loaded by M3G on mobile devices.
 
In immediate mode, graphics commands are issued directly into the [[Graphics pipeline|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|scene graph]] that links all geometric objects in the 3D world in a [[Tree structure|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 [[Serialization|serialized]] by Java's own serialization mechanism. They are [[Program optimization|optimized]] by the M3G serialization mechanism, which produces and loads data streams conforming to the '''.m3g''' [[File format|file format]] specification for 3D model data, including animation data format. This allows developers to [[Social:Content creation|create content]] on [[Engineering:Desktop computer|desktop computer]]s that can be loaded by M3G on mobile devices.<ref>{{cite web|url=http://www.j2megame.org/j2meapi/JSR_184_Mobile_3D_Graphics_API_1_1/file-format.html|title=File Format for Mobile 3D Graphics API}}</ref>


== Further reading ==
== Further reading ==
 
* {{Cite journal |first1=Kari |last1=Pulli |first2=Tomi |last2=Aarnio |first3=Kimmo |last3=Roimela |name-list-style=amp |first4=Jani |last4=Vaarala |doi=10.1109/MCG.2005.129 |title=Designing graphics programming interfaces for mobile devices |journal=IEEE Computer Graphics and Applications |publisher=IEEE CG&A 2005 |year=2005 |volume=25 |issue=6 |pages=66–75 |pmid=16315479 |s2cid=8177273 }}
* Aarnio, Callow, Miettinen and Vaarala: ''Developing Mobile 3D Applications With OpenGL ES and M3G'',<ref>{{cite web|url=https://history.siggraph.org/learning/developing-mobile-3d-applications-with-opengl-es-and-m3g-by-aarnio-callow-miettinen-and-vaarala/|title="Developing Mobile 3D Applications With OpenGL ES and M3G" by Aarnio, Callow, Miettinen and Vaarala}}</ref> SIGGRAPH 2005: Courses
* Alessio Malizia: ''Mobile 3D Graphics'', Springer, 2006, {{ISBN|978-1-84628-383-3}}
* 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}}
* 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}}
* 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}}
* Carlos Morales, David Nelson: ''Mobile 3D Game Development: From Start to Market'', Charles River Media, 2007, {{ISBN|1-58450-512-5}}
== References ==
{{reflist}}


== External links ==
== External links ==
 
;[[Java Community Process]]
* [http://www.jcp.org/en/jsr/detail?id=184 JSR 184] (Mobile 3D Graphics API for J2ME 1.0, 1.1)
* [http://www.jcp.org/en/jsr/detail?id=184 JSR 184] (Mobile 3D Graphics API for J2ME 1.0, 1.1 Final Release 2)
* [https://web.archive.org/web/20190418161916/https://download.oracle.com/otn-pub/jcp/j2me_mobile_3d-1.1-mrel-oth-JSpec/j2me_mobile_3d-1_1-mrel-spec.pdf?AuthParam=1555604400_ba262294320997663c67cd3ace63145c JSR 184 1.1 Specification] (Mobile 3D Graphics API Technical Specification, Version 1.1, June 22 2005)
* [http://www.jcp.org/en/jsr/detail?id=297 JSR 297] (Mobile 3D Graphics API 2.0 Proposed Final Draft)
* [http://www.jcp.org/en/jsr/detail?id=297 JSR 297] (Mobile 3D Graphics API 2.0)
* [http://www.jcp.org/en/jsr/detail?id=239 JSR 239] ([[Java (programming language)|Java]] [[Language binding|Binding]]s for [[OpenGL ES]]) – related Java ME graphics specification
; Specifications
* [https://download.oracle.com/otndocs/jcp/j2me_mobile_3d-1.1-mrel-oth-JSpec/ JSR-000184 Mobile 3D Graphics API for J2ME(TM) 1.1 Maintenance Release]
* [https://web.archive.org/web/20190418161916/https://download.oracle.com/otn-pub/jcp/j2me_mobile_3d-1.1-mrel-oth-JSpec/j2me_mobile_3d-1_1-mrel-spec.pdf?AuthParam=1555604400_ba262294320997663c67cd3ace63145c JSR 184 1.1 Specification] (Mobile 3D Graphics API Technical Specification, Version 1.1, June 22, 2005)
* [http://www.oracle.com/technetwork/systems/3dgraphics-155829.html Getting Started With the Mobile 3D Graphics API for J2ME]
* [http://www.oracle.com/technetwork/systems/3dgraphics-155829.html Getting Started With the Mobile 3D Graphics API for J2ME]
* 3D graphics for Java mobile devices: [http://www-128.ibm.com/developerworks/wireless/library/wi-mobile1/ Part 1] and [http://www-128.ibm.com/developerworks/wireless/library/wi-mobile2/ Part 2]
* 3D graphics for Java mobile devices: [http://www-128.ibm.com/developerworks/wireless/library/wi-mobile1/ Part 1] and [http://www-128.ibm.com/developerworks/wireless/library/wi-mobile2/ Part 2]
* [http://www.jcp.org/en/jsr/detail?id=239 JSR 239] (Java Bindings for [[Software:OpenGL|OpenGL]] Embedded Subset) – related Java ME graphics specification
; list of compatible devices
* [https://web.archive.org/web/20120616134716/http://www.jbenchmark.com/result.jsp?benchmark=hd JSR 184 compatible devices] (Performance listing of most mobile 3D devices)
* [https://web.archive.org/web/20120616134716/http://www.jbenchmark.com/result.jsp?benchmark=hd JSR 184 compatible devices] (Performance listing of most mobile 3D devices)
; [[Source code]] released by [[Organization:Symbian Foundation|Symbian Foundation]] on [[GitHub]]
* [https://github.com/SymbianSource/oss.FCL.sf.app.JRT/tree/master/javauis/m3g_qt SymbianSource/oss.FCL.sf.app.JRT]
{{Nokia platforms}}


[[Category:Application programming interfaces]]
[[Category:3D graphics file formats]]
[[Category:Computer file formats]]
[[Category:Cross-platform free software]]
[[Category:Java device platform]]
[[Category:Java device platform]]
[[Category:Java specification requests]]
[[Category:Java specification requests]]
[[Category:Java APIs]]
[[Category:History of software]]


{{Sourceattribution|Mobile 3D Graphics API}}
{{Sourceattribution|Mobile 3D Graphics API}}

Latest revision as of 20:40, 19 May 2026

Mobile 3D Graphics API
Developer(s)Java Community Process
Stable release
1.1 / August 24, 2005; 20 years ago (2005-08-24)
Preview release
2.0 / April 14, 2009; 17 years ago (2009-04-14)[1]
Operating systemCross-platform
Type3D computer graphics software (library/API)
WebsiteJSR 184: Mobile 3D Graphics API for J2ME
M3G file format
Filename extension.m3g
Internet media typeapplication/m3g
Developed byNokia
Latest release
1.1
(August 24, 2005; 20 years ago (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.

History

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.

Rendering

Screenshot of the Mobile game Software: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

  • Pulli, Kari; Aarnio, Tomi; Roimela, Kimmo; Vaarala, Jani (2005). "Designing graphics programming interfaces for mobile devices". IEEE Computer Graphics and Applications (IEEE CG&A 2005) 25 (6): 66–75. doi:10.1109/MCG.2005.129. PMID 16315479. 
  • 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

Java Community Process
Specifications
list of compatible devices
Source code released by Symbian Foundation on GitHub