Mobile 3D Graphics API

Mobile 3D Graphics API (M3G) は、3次元コンピュータグラフィックスを生成するJavaを記述するためのAPIを定義した仕様である。M3Gは携帯電話やPDAのような組み込みデバイス向けのJavaプラットフォームバージョンである Java Platform, Micro Edition の性能を拡張する。
オブジェクト指向インターフェースは3次元シーン複雑なアニメーションを描画することに使用できる30のクラスで構成している。M3GはJava Community Processの下でJSR 184として開発された。2006年現在、現在のM3Gのバージョンは1.1である。

M3Gの目標 
M3Gはモバイルデバイスの特殊な要求に適応するように設計された。モバイルデバイスはメモリ、メモリバンド幅およびプロセッサパワーの点で制約されており、しばしばFPUとGPUのようなグラフィックアクセラレーションハードウェアが欠けている。

M3GはJava3Dではない 
M3GはJava3Dと間違えるべきではない。Java3Dはstandard Java platformの性能を拡張する。Java3Dはモバイルデバイスよりメモリが多く強力なフロセッサパワー
を持ったPC向けに設計されている。
M3GとJava3Dは2つに分かれそれぞれ異なった用途に向けて設計された互換性のないAPIである。

immediate modeとretained mode 
M3Gは開発者が3Dグラフィックを描画するために2の方法(immediate mode, retained mode)を提供している。immediate modeではグラフィック命令はグラフィックパイプラインに直接に入力されレンダリングエンジンが即座に命令を実行する。この方法を使うときは、開発者はレンダリングエンジンにそれぞれのアニメーションフレームごとに描画する内容を特別に伝えるコードを記述しなければならない。

retained modeは木構造で3D世界の幾何的なオブジェクトをリンクするシーングラフを使用する。
それぞれのオブジェクトに関する幾何学構造、位置、容姿などの高次元の情報はフレーム間で保持される

その他の特徴 

M3G standardはアニメーションデータも含む3Dモデルデータのファイルフォーマットも定義している。

M3G ユーティリティー 
 Desktop-M3G - M3G for Linux and Android のオープンソース実装
 XMM3G - M3G for Windows, WinCE, Linux, Android, iOS, Bada　のオープンソース実装
 M3X - XML encoding of the .m3g file format and related open-source tools
 Wizzer Works M3G Viewer - .m3g ファイルを閲覧・操作するためのオープンそースツールキット
 Maya 用の M3GExport
 Mascot Capsule M3G Exporter for 3ds Max, Maya, Lightwave, and Softimage|XSI
 M3G Exporter for Milkshape 3D for MilkShape3D
 Blender Exporter - Blender向けの M3G エクスポーターのオープンソース実装
 Blender Converter - Blender向けのオープンソースのファイルレベルコンバーター
 M3G Exporter for Metasequoia - Metasequoia 向けのオープンソースの M3G エクスポーター
 M3G Reader Writer - .m3g ファイルを読み書きするオープンソースの C/C++ ライブラリ

外部リンク 
 JSR 184: Mobile 3D Graphics API for J2ME
 Getting Started With the Mobile 3D Graphics API for J2ME
 JSR 239: Java Binding for the OpenGL ES API - 3Dグラフィック使用に関連して

グラフィックライブラリ
Java
API
3DCG