Tripping Over First Hurdles
For a recent project, I had to demonstrate M3G's capabilities by writing a MIDlet that would display 3D models and let users interact with them. The MIDlet had to function identically on several types of handsets. My initial plan was to download a model in M3G format and add it to an M3G-capable MIDlet I wrote. The MIDlet would load the 3D model and display it on-screen. By pressing buttons on the phone's keypad, the MIDlet would make M3G API calls that manipulated the model's orientation.
After conducting Google searches and code experiments, I discovered that there weren't any M3G model files available anywhere. I would have to make the model myself, then somehow export it into a format or data arrays useable by M3G. The project was turning ugly.
This isn't to say a migration path wasn't in place when the M3G specification was implemented on vendors' phones in 2005. Hi Corporation, the company that did the M3G implementation for Sony Ericsson and Sprint-badged phones, provides plug-ins that let you export 3D models from several high-end commercial 3D authoring applicationsAutodesk's 3ds Max (formerly Discrete's 3D Studio Max), Newtek's LightWave, Autodesk's Maya (formerly Alias), and Softimage's SOFTIMAGE|XSI. There are also utilities such as M3GExport Limited and M3GExporter that translate Maya and 3ds Max files, respectively.
But there's a catch. The price tag for commercial 3D authoring programs start at $500 and go as high as $4000! The plug-in situation also eliminates the use of capable shareware and freeware 3D authoring applications. For developers on a tight budget, migrating a 3D model from a PC to a MIDlet amounted to the adage "you can't get there from here."
Eventually, I discovered ways to accomplish the migration. The technique I describe here exports a model's geometry and appearance as data arrays. (In a future article, I will describe how to export the model in M3G file format.)