Overview
Although the name of the project hints at music, we're actually working on 3D computer graphics. Our main responsibility is the Mobile 3D Graphics API for Java (M3G, JSR-184), but we have also contributed to OpenGL ES.
Computer and console gaming has grown into a multi-billion dollar business thanks to the visual appeal and innovative new game genres that 3D graphics has enabled. Our aim is to make sure that if mobile gaming doesn't become equally popular, the reason will have to be something else than lackluster graphics.
We also believe that 3D graphics can improve mobile phone user interfaces, not just by making them look fancier, but also by enabling new metaphors and more intuitive navigation, for instance.
History
We started Gramophone in 2000, initially with a very broad and fuzzy goal of finding out whether and how vector graphics could be used on mobile phones. The concept may have seemed futuristic to some, because phones back then had measly black & white displays and just enough processing power to match a 1980's home computer. However, it was clear that displays and processors were getting better very rapidly.
2D vector graphics
We first studied 2D vector graphics, in particular Macromedia Flash and SVG. We made plans for adapting them for mobile devices, but then realized that if we were to go forward, we wouldn't have any time for 3D graphics, and decided to branch the 2D activities into a separate NRC project. That project has over the years contributed to the SVG Mobile, JSR-226 and OpenVG standards.
NokiaGL and OpenGL ES
We then focused on 3D graphics, and started off by hacking together a prototype 3D engine for the Nokia 3310. It had all the basic technology in place, including perspective projection, z-buffering, texture mapping, lighting and Gouraud shading. It could render hundreds (!) of polygons per second on the 84x48 pixel screen.
The prototype showed enough promise that a larger project, lead by Kari Pulli, was kicked off in 2001 to create a commercial grade 3D engine. We decided to base its design on OpenGL, the industry standard 3D graphics API for desktop computers, and selected a subset of it that could conceivably fit into mobile phones. We were deeply involved in writing that engine, known as NokiaGL, although the bulk of the work was done by others.
NokiaGL has proven to be a remarkably stable and durable piece of software. As of late 2005, all Nokia phones that support 3D graphics are still based on NokiaGL. Although the engine was later optimized and modified to conform to the OpenGL ES standard-which we helped to define based on our experience from NokiaGL-the basic architecture and most of the code is still from 2001-2002.
3D screensavers
Our main task in the NokiaGL effort was to create an animation system to exploit the basic rendering services provided by NokiaGL. And that's what we did: A system whereby a graphics artist could create animation clips in 3dsmax and export them into our proprietary "N3A" file format. N3A files could then be downloaded over-the-air and used as screensavers in the Nokia 3410. The combination of real-time rendering and efficient compression allowed us to keep the screensaver file sizes at just a few kilobytes each &em; a tiny fraction of what they would've consumed as pre-rendered video clips.
A few screensavers came embedded with the 3410, and we hoped that third-party content providers would create more of them and start selling them in the same way as ringing tones. That obviously didn't happen, mainly because there were too few phones with screensaver support. We never managed to sell the idea and our software across all Nokia business units, not to mention other companies. The N3A screensaver toolkit is still available, though: just Google for "Nokia 3D Animation Toolkit". If you have 3dsmax version 5 or 6, you can amaze your grandmother with tailor-made screensavers for her Nokia 3410!
Java Mobile 3D
After our relative failure with the screensavers, we recognized that a huge installed base of devices will be needed before any sustainable business around mobile graphics can take place. No device vendor or operator has big enough market share to be able to create a unified developer platform single-handedly; open standards are needed instead. That led us to initiate the OpenGL ES and M3G standardization efforts.
Since 2002, we have led the standardization of M3G, the Mobile 3D Graphics API, within the Java Community Process. Since the completion of its first version in late 2003, M3G has been endorsed and adopted by leading mobile device vendors, operators, and game developers worldwide. We have also developed an efficient and robust M3G engine that is now deployed on all Nokia product platforms. Starting with Nokia 6630 (on Series 60) and Nokia 6230i (on Series 40), all our mid-tier and high-end phones have been M3G-enabled.
Research Results
- Mobile 3D Graphics API (M3G) specification at JCP
- M3G Reference Implementation (Forum Nokia)
- M3G Product Implementation (Nokia Series 40 and Series 60 devices)
Awards
- 2004: Nokia Quality Award, Research Category
- 2003: Java Community Process (JCP) Program Excellence Award for JSR-184
- 2002: Nokia Quality Award Finalist, Research Category
Resulting Publications / Papers / Presentations
2005
- Designing Graphics Programming Interfaces for Mobile Devices, in IEEE Computer Graphics & Applications, Nov/Dec 2005.
- SIGGRAPH Course: Developing Mobile 3D Applications with OpenGL ES and M3G
2004
- "Advanced Game Development with the Mobile 3D Graphics API", presentation at JavaOne
- "A New Dimension for Java Games: Mobile 3D Graphics API", featured at the Nokia Research Web
2003
- "The Rise of Mobile Graphics", featured at the Nokia Research Web
Recommended Links
- All M3G enabled devices on the market
- M3G enabled devices from Nokia