NASA World Wind Java at JavaOne
By kbr on May 10, 2007
This is an historic moment. Now leading-edge, high-performance, 3D geospatial visualization is available to developers on all platforms. You can embed it in your Java applications as a component. You can extend it, changing the visual appearance of the globe in any way you can imagine. This technology is deployable inside of a web browser as an applet, or as an application launched with a single mouse click, using the foundations of the Java platform and the OpenGL 3D graphics API. No manual software installation is required (aside from the Java Runtime Environment, which is pre-installed on 9 out of 10 PCs shipped today, and on all Macintosh computers).
Tom Gaskins, the technical lead of World Wind Java, and the team of Dave Collins, Lado Garakanidze, Randy Kim, and alumni Eric Dalgliesh and Chris Maxwell, led by Project Manager Patrick Hogan, have built an elegant, extensible, and embeddable architecture which will resonate throughout the software development community and the world. I extend my heartfelt thanks to them for their perseverence and hard work.
Sun's involvement with NASA World Wind Java dates back to September 2005, when Hans Muller, CTO of Sun's Desktop division, initiated a dialogue between NASA's World Wind development team and Sun. At the time, World Wind was exclusively a .NET application, written in C# and Direct3D, and ran only on Microsoft's Windows platform. Chris Campbell and I met with the World Wind development team at NASA Ames to discuss the feasibility of a Java platform port of World Wind. It turned out that NASA had already been discussing this internally and Tom Gaskins had written an article on EarthFlicks, a stripped-down version of World Wind written in Java using OpenGL via JOGL for its 3D graphics. Chris and I discussed the current state of Java 2D and 3D graphics, and we collectively discussed areas where NASA would need help in bringing World Wind to Java.
The extraordinary nature of NASA's work was immediately apparent, and I initiated discussions throughout Sun to try to help accelerate the development of a Java version of their system by providing funding enabling NASA to hire an additional contractor. My vice-president, Laurie Tolson, agreed to fund half of a collaborative research project, the other half funded by Sun's External Research Office led by Emil Sarpa. Foothill / De Anza College, which has an internship program at NASA Ames, helped facilitate the collaboration, which officially began in April 2006.
In the meantime, NASA had already begun work on a Java version of World Wind. Tom Gaskins had been providing feedback on JOGL for months, and he, Chris Campbell and I had had steady dialog during this time. His need for an easy code path to bring textures in to OpenGL prodded Chris to finish the initial version of JOGL's TextureIO utility classes. Afterward I assumed responsibility for these classes and extended them with compressed texture support which is required for World Wind to use texture memory effectively. Tom and the NASA team improved the quality of JOGL for the entire development community by uncovering several bugs in these utilities along the way which we fixed.
The entire NASA development team made extraordinary strides in a remarkably short period of time, getting quickly to the point where the globe was on the screen and continuing to refine the algorithms used and extend the system's functionality. Areas of development and discussion included the general strategy for producing the geometry and imagery for the planet's surface; support for rendering place names; support for rendering lines and polygons on the planet's surface; the algorithms used to position the camera (or the "view"); integration of new data sets; inclusion of features such as political boundaries and meridian and parallel lines; and selection of features on the surface of the planet. Patrick Hogan retargeted the team's efforts and made World Wind Java the primary focus for ongoing development.
NASA's work on World Wind Java informed bug fixes to JOGL's support for DRI rendering on X11 platforms, among other areas. Based on NASA's experience using JOGL to render text for place names, as well as extensive discussions with Phil Race from the Java 2D team, I added a TextRenderer to JOGL which provides easy, high-quality, and platform-independent text support for OpenGL applications. JOGL's TextRenderer soon after replaced the custom text rendering system built earlier in World Wind Java for rendering place names.
At OOPSLA 2006 I saw an exhibit of a virtual equipment panel out of an airplane (an F-16, in fact). Looking closer I saw the standard Java coffee cup logo in the corner of the window. The sales representative from the company (The DiSTI Corporation) indicated that this was a piece of code produced by their tool, GL Studio, and that they were showing a new Java code generator for their tool which produced Java code using JOGL. I introduced myself as the JOGL technical lead and was soon in touch with Darren Humphrey, the CTO of DiSTI. I put NASA and DiSTI in touch, as DiSTI's F-16 cockpit was a natural fit for flying over NASA World Wind Java's terrain. This resulted in the mind-blowing F-16 flight simulator demo shown at JavaOne 2007, linked below, in which you can fly over the entire world.
In recent months the NASA team has focused on refinements of the view and terrain algorithms, as well as satisfying requirements set by other sponsors of the project such as geometric highlighting of features on the planet's surface. The software has become increasingly ready for consumption by a larger audience.
NASA World Wind Java and The DiSTI Corporation's F-16 flight simulator demonstration were shown in Bob Brewin's technical keynote this past Tuesday to a wonderful audience reception. You can watch a replay of the webcast of the keynote. Part of the segment on NASA World Wind Java even made it to CNET News.com. Tom Gaskins presented an excellent technical session today (TS-3489, 3-D Earth Visualization with NASA World Wind) which was extraordinarily well received and which discussed in greater depth World Wind Java's architecture and how it can be utilized, extended, and embedded as a component.
This is just the beginning of a remarkable journey. Sun and NASA eagerly await what the Java developer and user communities will do with these capabilities. The world is at your fingertips.For More Information