Industry-wide standards for 3D graphics rendering, such as OpenGL and DirectX, have been available on traditional computers for many years. These standards have paved the way for the development of higher level frameworks and APIs such as, for example, the Java 3D API available for high-powered computing devices such as desktop computers and scientific workstations. Adoption of these standards for use in 3D application development for low-end consumer and embedded devices is problematic, however, due to the large footprint imposed by underlying implementations and heavy utilization of hardware acceleration that is commonly available for personal computers, dedicated game consoles, and high-end visualization workstations. Two emerging Java technology specifications are poised to solve this problem; the Mobile 3D Graphics API for J2ME (JSR 184) and the Java Bindings for OpenGL ES specification (JSR 239). The Mobile 3D Graphics API for J2ME specification development process was led by Nokia working in collaboration with Motorola, Sony Ericsson, Cingular Wireless, France Telecom, Intel, and Symbian, to name just a few of the companies involved. The Java Bindings for OpenGL ES specification, meanwhile, is led by Sun Microsystems working in combination with a number of the same companies. Whereas the Mobile 3D Graphics API was finalized in December 2003, work on the Java Bindings for OpenGL ES is ongoing (as of this writing the work was progressing through the JSR process and had been generally approved through a member balloting process earlier this year).
Mobile 3D Graphics API for J2ME: The Mobile 3D Graphics API for J2ME is a lightweight, high-level API designed to augment J2ME and Mobile Information Device Profile (MIDP) as an optional package. As a high-level API, the Mobile 3D Graphics API will enable an object-oriented approach to 3D application development using the well-known scene graph data structure (a scene graph is a hierarchical arrangement of nodes specifying objects and properties in a 3D scene and was popularized years ago by VRML). The Mobile 3D Graphics API scene graph representation is rooted in a World node and includes a number of node types common to other high-level 3D development systems. The Mobile 3D Graphics API support node types such as Group, Light, Mesh, Sprite, and Camera, among others.
At a lower level, the Mobile 3D Graphics API solves the problem of supporting application development across a wide range of devices by guaranteeing that 3D rendering is performed using native code that takes advantage of hardware acceleration when it is available on the underlying runtime environment. Consequently, applications created with the Mobile 3D Graphics API are expected to run on a spectrum of devices that have a range of capabilities, from low-end J2ME Connected Limited Device Configuration (CLDC) systems that have low memory and no hardware support for 3D graphics or floating point math to more capable mobile devices that have larger amounts of memory and hardware acceleration. In addition, the Mobile 3D Graphics API defines its own binary file format to optimize efficient downloads over wireless networks.
Java developers can use Sun's freely available Wireless Toolkit to create mobile applications that take advantage of the Mobile 3D Graphics API. Available through Sun's J2ME site, version 2.2 of the Wireless Toolkit was released last month and comes with the build tools, utilities, and a device emulator necessary to develop and test mobile Java applications. In addition to supporting the Mobile 3D Graphics API, the award-winning Wireless Toolkit also supports a range of important mobile Java technologies that have emerged from the open JSR process, including the Mobile Media API, Java APIs for Bluetooth, and J2ME Web Services Specification.
Java Bindings for OpenGL ES: Toward supporting a wide range of device configurations, the Mobile 3D Graphics API supports two rendering modes: retained mode and immediate mode. The retained mode representation addresses high-level scene graph representations whereas immediate mode addresses low-level rendering that is aligned with a subset of the OpenGL standard known as OpenGL for Embedded Systems. Specifically, when using the high-level retained mode Java developers interact with scene graphs while the 3D content described by these data structures renders itself automatically based on camera and light positions. In contrast, the low-level immediate mode enables developers to take control of the rendering process so that they can draw 3D content to the screen when and how they desire. Developers can use either of these modes, and can even use them both simultaneously if desired.
OpenGL ES is developed by the Khronos Group, a member-funded industry consortium founded in January 2000 to create open, royalty-free APIs for authoring and playback of media on a range of platforms and devices. Khronos members include 3Dlabs, ATI, Discreet, Evans & Sutherland, Intel, NVIDIA, SGI, Sun Microsystems, Fujitsu, Mitsubishi Electric, PalmSource (the company that creates the Palm OS), Symbian, Panasonic, QUALCOMM, Samsung Electronics, Sony, Toshiba, and a number of other leading media and electronics companies.
OpenGL ES is a royalty-free, cross-platform API for 2D and 3D graphics on embedded systems (including handheld devices, appliances and vehicles) that is comprised of a well-defined subset of desktop OpenGL. It is designed to handle low level implementation details related to interfacing between software and graphics acceleration which is expected to become increasingly prevalent in embedded devices. Java Bindings for OpenGL ES, also known as JSR 239, addresses the need for a specification describing the way in which higher-level API components will bind to native 3D graphics libraries implemented using the OpenGL ES standard.
In this sense, OpenGL ES is a complementary technology to the Mobile 3D Graphics API for J2ME. OpenGL ES is available to developers requiring a low-level API that facilitates 3D graphics rendering using a subset of the OpenGL standard. The Mobile 3D Graphics API, in contrast, provides a higher level scene graph oriented API along with a lower level mode that aligns with OpenGL ES to facilitate the development of efficient and portable embedded 3D applications using industry standards.
The world of mobile 3D is evolving rapidly thanks to new hardware and software technologies that promise to fundamentally change the type of content and applications that can be deployed to mobile devices. In many respects the state of the mobile 3D industry can be compared to the early days of the World Wide Web, and it will only heat up as more powerful mobile computing devices find their way into customer hands, which in turn grows the overall market size for 3D content and applications. As reported by Web3DNews.com, nearly every personal computer created today has the horsepower to handle rich, interactive three-dimensional content thanks to hardware accelerators and 3D software technologies similar to those expected to power the next generation of mobile devices. Much like the 3D revolution that began in the personal computer industry a decade ago, today all of the enabling technologies are in place for the mobile computing industry to experience a three-dimensional transformation of its own.
Aaron Walsh is Director of the Web3D Web (web3dweb.com) and Media Grid (mediagrid.org). He can be contacted at www.MediaGrid.org/people/aew/.
Nicholas Nagel is a Java instructor for Sun Microsystems (sun.com), and Web3D Web fellow (web3dweb.com). He can be contacted at [email protected]