Sunday, April 5, 2009

Sunlight package for WorldWind Java

Here is the very first iteration of a sun light package for NASA WorldWind Java. It includes a custom tessellator for terrain shading, an atmospheric scattering based sky layer, a sun position calculator and a lens flare effect. Some of the code has been contributed by WWJ Forum member Michael de Hoog aka Omega.

Sun shading in WorldWind JavaTerrain shading

Download the sunlight package (Zip 33K). Unzip in the SDK examples package and run the sunlight.SunShading.java demo application.

Lens flare and atmospheric scattering in WorldWind JavaLens flare and atmospheric scattering

The demo application code will show you how to use the different components. Although this initial version works rather well, you may notice a couple issues. Dark or bright bands may show across the terrain in some places. The atmospheric scattering code is not optimal. It fails to produce a blue sky at ground level and the sky underlying geometry is too coarse to produce nice and smooth sunsets. The sun calculator reported position does not seem right either.

Lens flare and atmospheric scattering in WorldWind JavaSun occlusion


Enjoy!

Friday, March 6, 2009

WorldWind Java 0.6 Source available

Access to the daily NASA WorldWind Java SDK 0.6 source code has been made public from the NASA WWJ build site. You will find the announcement and change list in this WWJ Forum post.

So much has been going into the SDK since the 0.5 release in May 2008 it is hard to sort out what the most notable changes and additions are. Here are a number of new features that come to mind.

WWJ 0.6 Airspace volumesAirspace volumes


WWJ 0.6 Airspace builderAirspace builder

You will find a new render.airspace package you can see at work with the examples.Airspaces application. It includes a number of geometric volumes that can follow the terrain. It's main application is to visualize 'air spaces' but there is no doubt it will serve many other purposes. Be sure to have a look at the AirspaceBuilder that allows you to create and edit 3D polygons and spheres.

WWJ 0.6 On-screen layersOn-screen layer manager, status bar and view controls

There are a couple new on-screen layers that replace the status bar and layer manager SWING version and offer control over the view. All the 2D layers have now a 'location offset' property that let you fine tune their screen placement.

WWJ 0.6 Contour linesContour lines

The default tessellator has been augmented with intersection code for line and elevation against the current terrain geometry. This allows to cast rays or compute contour lines that you can see at work in the examples.ContourLines.

WWJ 0.6 Rubber sheet imagesRubber sheet images

At a lot of work has been done on data import and image processing. There is code to import, manipulate, tile, stitch and transform imagery. You will find surface textures you can stretch and warp with the examples.RubberSheetImage application.

The icon layer and renderer can now use absolute elevations and will perform horizon and view frustum clipping if set to do so. This should help handle larger icon populations.

Work has been done to allow several elevation models and data sources to be compounded.

WWJ 0.6 Measure toolsLength and area measure tools

Interactive length and area measure tools have been added - see examples.MeasureToolUsage and util.measure package.

Tiled image layers can now use mipmaps and produce a cleaner terrain rendering without 'shimmering' in the distance. Image blending has been fixed and should allow proper application of semi opaque layers without the 'black edges' we have seen before. However this change had the fog produce 'white edges' so it has been dropped for now - the fog layer.

The applet package has been updated to take advantage of the latest Sun Next Generation Java plugin - more stable and flexible.

WWJ 0.6 Multimedia annotationsMultimedia annotations

A new examples.util package contains a couple useful tools like a browser launcher, an image viewer, an audio player or a slide viewer.

The view sensitivity can now be set. The TerrainProfileLayer can now follow a path. Track markers have been reworked and have now extended and more flexible capabilities. The FlatWorld example has been updated with code to switch from round to flat globe. The place name layer has been enhanced. Web Service Catalog support has been implemented - see applications.gio. There is code to convert WW.net cache...

Many bugs have been fixed, often in response to comments from the World Wind Java Forum users. Thank you all.

More screenshots dating back to October 2008 can be found here.

For all migration related issues, questions and comments, please use this WWJ Forum thread.

Saturday, January 24, 2009

Interview with Patrick Hogan WWJ Project Manager

Patrick Hogan is NASA World Wind Project Manager. He was kind enough to answer and comment ten questions regarding NASA virtual globe project and open source initiative.


Patrick Hogan at NASA Ames Research Center
1. World Wind came out in 2004 before Google Earth and is arguably one of the (if not the) first virtual globe. What is the 'short' history of World Wind - how and when did it all start, what where the goals and the context?


World Wind began in the 2002/2003 timeframe under NASA Learning Technologies, a program to get 'NASA content' into the classroom. In January 2004 World Wind became one of the first NASA programs to be released as open source. World Wind existed approximately coincident with Keyhole, though neither knew of each other until later.

2. World Wind is a free and open source project delivering technologies to the community that some private companies have spent large amounts of money to acquire. Who is paying for this and how come it’s given away just like that?

Same answer as to your previous question, World Wind began as part of NASA Learning Technologies, a program to get 'NASA content' into the classroom. NASA has more planetary information than any other entity on Earth. NASA, more than any other entity on Earth, needs to have the tools necessary to work with planetary data that is part of the public domain. Today, more than ever, it is vital that research, academia and the public have useful access to this data. This is made most possible with technology that can readily adapt to service those various needs. This includes the need for a broad spectrum of private companies who are free to use this technology in proprietary ways. World Wind open source technology stimulates entrepreneurial enterprise by helping to standardize the geospatial information exchange medium. This establishes the infrastructure for greater participation by the widest possible range of business enterprise from small to large.

The World Wind project is supported by several agencies within the US federal government, including of course NASA.

By using open source technology and open standards for data exchange, the government has the ability to adapt to rapidly changing circumstances. Building increasingly more sophisticated functionalities to a core technology that is open source continually challenges entrepreneurs and the world community to greater appreciation for what is possible. NASA provides the kind of leadership that allows for this. World Wind technology also provides the government with absolute control over use of the technology, as well as absolute security due to code visibility, while also making industry and the world community more competitive in the area of solutions based on use of this open and standardized technology. These solutions can be proprietary, free, or open. Advances in intelligence come from a combination of information access and increasingly sophisticated processing of that information. World Wind, although a very smart mechanism, is not intelligence. World Wind technology is about standardized and optimized delivery of pixels, picking them up and moving them around. Information intelligence is applied by others using this technology as the medium for information exchange, a lingua franca, if you will.

3. A common reaction to the World Wind project is to wonder why bother redeveloping something that already exist for free, namely Google Earth or Microsoft’s Virtual Earth?

Google, who bought Keyhole in October of 2004, delivers data that is proprietary and restricts use of its technology essentially to the KML file format. World Wind provides that same ability without any limitation on how one might use the technology. This stimulates business opportunities for a much larger solution domain.

4. It is a bit disappointing that one cannot access imagery as good as in other virtual globes with NASA software. Why is it so?

When you open World Wind, out of the box so to speak, it arrives with the base set of data needed for a 3D world. Although higher quality imagery is available that World Wind can certainly deliver, and does so for those who have access to that data, the base set of data that World Wind comes with is necessarily in the public domain. We are looking forward to higher quality imagery becoming increasingly more available. We are already seeing this happen. The great State of New York and the great country of New Zealand, having made higher quality imagery publicly available, prove this is already happening.

5. There does not seem to be any 'road map' for the World Wind Java SDK. How are decisions made regarding the implemented capabilities?

For those who can appreciate the degree of sophistication involved in developing an Application Programming Interface (API) -centric Software Development Kit (SDK), it’s easy to understand the unusual amount of *accommodation* required for how others will use the technology. Building an optimized and adaptable technology of this nature is a Herculean task. It is far more involved than simply building an application. World Wind technology must transparently 'plug-in' to other applications. The ability to do that well is as much art as engineering. Leonardo da Vinci was notorious for spending inordinate amounts of time working through ideas before ever putting paint to brush. World Wind is being crafted as an adaptable building block others construct with. Making it work requires accounting for many variables well beyond our control. Building for the future is an infinite challenge. We look forward to a time when much more of the world participates in the development. Although this is already happening informally, this will begin in earnest with release of v1.0.

6. How large is the development team?

I’ve heard it said that it’s not size that matters. So thankfully, we have a few of the best. At some point, after version 1.0, we’d like to see a collaboration of the world community to advance this core technology. We’re already seeing this technology applied by the European Space Agency, the Japan Space Agency, and a few Fortune 100 companies, as well as extensively within the US government.

7. A number of community users would be willing to contribute code to the project but there is no such established process to do so now. Are there any plans to allow contributions?

We welcome contributions and have already put some of those to good use. We want World Wind development in the hands of a well organized worldwide consortium. That takes a concerted effort by the world community. We look forward with great anticipation to that stage of this project. You don't have to be a rocket scientist to know that the amount of energy required to effectively process the input from a worldwide community is enormous. 2009 should be 'the' year for version 1.0 of World Wind along with the hope for a world community that hosts the ongoing development of this technology.

8. The WWJ SDK is still in alpha stage after two years. When can we expect a stable 1.0 release and what will be in it?

In the spirit of ‘we will serve no wine before its time,' version 1.0 is expected during the second half of this year (2009). What will be in it? More and better stuff!

9. The WWJ SDK departed from the World Wind .NET version in the sense it is not a 'ready to use' client application one can download and use right away. Although there are clear advantages in providing a SDK, are there any plans to produce a WWJ client application similar to the .NET version so many have been using?

World Wind Java is component technology purposed to be used as a plug-in by others in support of their visualization needs. We like playing a strong supporting role rather than the lead. We believe this provides the maximum opportunity for information exchange technology to advance.

10. The unique aspect of World Wind technology is that it also provides the WMS server software to deliver geospatial data. How did that happen?

World Wind SDK technology is there to visualize geospatial data, manage the pixels so to speak. Having the technology to see 3D is cool, but that's only half the story, maybe even the smaller half. Making data accessible, the data delivery mechanism, is where the information experience begins. The World Wind Server delivers data according to the Open Geospatial Consortium international WMS standards.

Together, the World Wind SDK client and WMS server provide the infrastructure for government, research, and business communities, as well as education and public outreach, to both deliver and experience information, hopefully increasing our understanding. And it is also true that sometimes we do things just for fun! World Wind technology unlocks the power to make all this happen.

Patrick Hogan - interview by Patrick Murris, January 2009.
Photo from swissstartups.com.

> Another Patrick Hogan interview by Scott Swigart, and Sean Campbell for the How Software is Built blog - July 2007.
> World Wind presentation at the Geological Society of America, May 2007. How the Java SDK got started.

Wednesday, December 3, 2008

World Wind at the American Geophysical Union

Patrick Hogan the NASA World Wind project manager will be presenting the World Wind Java SDK at the 2008 American Geophysical Union Fall Meeting in San Francisco December 15-19.

Although Google Earth and KML have an overwhelming presence, the World Wind Java SDK is being used by an increasing number of professionals:

Patrick Hogan presentations:

During Patrick's presentation, VEGA will also show a new version of EOLI (Earthnet OnLine Interactive), a client developed for the European Space Agency for the Earth Observation, Multi-mission, Catalogue and Ordering Services, using the World Wind SDK.

Thursday, November 20, 2008

World Wind Multitouch Wall in Public Underground

Johannes Schöning from the University of Muenster Institute for Geoinformatics, Germany has posted a video showing their multitouch wall version of World Wind Java installed in a public place.



During a technology exhibit we installed a FTIR based large scale multi-touch screen in pedestrian underway in the city of Münster, Germany. In this video we show a few impressions of this project called: "Hightech Underground".

Build your own multi-touch screen - see link below

See this previous post about the same multitouch World Wind project - May 2008.

> YouTube video here.
> Some pictures of the event.
> Build your own multitouch screen with the MultiTouch Bootcamp.
> Improving interaction with virtual globes through spatial thinking: helping users ask "why?", a research paper from the same author.

Tuesday, November 18, 2008

CNES e-CORCE: Earth At One Meter Every Week

The French Centre National d'Etudes Spatiales (CNES) has come up with an innovative satellite remote-sensing system capable of generating a high-resolution picture of Earth on the Web, refreshed every week. Four patents have already been filed for the concept, called e-CORCE that could start broadcasting on the Internet by 2014.

CNES e-CORCE
Although still on paper, the plan is to use a constellation of thirteen low cost micro satellites capable of imaging the globe at a resolution of one meter. Each of these orbiting webcams would use a smart "spycho-visual" compression scheme to drastically reduce the amount of data to be transmitted in real time to a grid of fifty ground stations connected to the Internet.

Whether this particular project will become a reality or not, it shows what the current trends in micro satellites technologies, data compression and grid computing will allow in the near future. How privacy groups, military and security agencies around the world will react to it remains to be seen though.

Tuesday, October 7, 2008

World Wind Java 0.6 Screenshots

While the next alpha 0.6 version of the NASA World Wind Java SDK is not ready yet, here are some screenshots showing some of the coming features.

NASA World Wind Java SDK 0.6
NASA World Wind Java SDK 0.6Airspace shapes and volumes, terrain conforming or not.


NASA World Wind Java SDK 0.6Distance and area measure tools, terrain following or not.


NASA World Wind Java SDK 0.6View visual controls layer, provides a GUI to pan, tilt, zoom or look around.


NASA World Wind Java SDK 0.6
NASA World Wind Java SDK 0.6Extended track markers shapes and attribute management.


Friday, September 12, 2008

Elevated Surface Image for World Wind Java

A few WWJ forum members have asked whether it would be possible to have a surface image that could be rendered somewhat 'up in the air' instead of painted on the globe surface. The idea would be to show the global clouds image for instance at 10 km altitude. Although the feature is not part of the actual SDK, i happen to have created some time ago a sub class of SurfaceImage that does exactly that.


Download TexturedLayer.java (updated for WWJ 0.6 March 13, 2009), remove the .txt extension and add to the SDK render package.

The class is very similar to SurfaceImage and is instantiated the same way, but the texture will be painted on a 'flat layer' at a given altitude that must be set using the setElevation() method.

Note that the cloud image does not contain an alpha channel and will obscure the underlying imagery. In the .net version of World Wind, the "Global Clouds" plugin does some post processing after each new image is downloaded to create an alpha channel and save the resulting image as a .png. In that case the alpha is just a copy of the black and white cloud image.

However, i found you could get somewhat better results by replacing the cloud image with plain white - the alpha channel will then 'modulate' the white and produce a more realistic effect without the 'greyish' shades where the cloud coverage is less then one hundred percent.

The bottom line is that some additional work is to be done to get a decent global cloud image over the World Wind Java globe, even with this 'elevated' surface image class. The above screenshot is using a static post processed image - not the 'real time' online version.

Another usage of this textured layer could be to use a plain blue texture with some transparency and somewhat simulate the sea level as with the "Global Flood" WW.net plugin (see this forum thread).

Monday, September 1, 2008

Truncated Earth in World Wind Java

I wanted to try this for a while and i'm pleased to see it works rather well considering how little code is involved. Here is a simple World Wind Java example application that will produce a truncated globe.


Download TruncatedEarth.java, remove the .txt extension and add to the SDK examples package.

Update Nov. 20: once again there appear to be a dependency on the not yet publish SDK 0.6. Please check this forum post for a workaround with version 0.5.

The code illustrates how to extend and override the globe elevation model to 'take out' a slice of the planet. Although rough coloring of the section interior is easilly done with some gradients and surface images, placing a texture on the section side would require a bit more then that.

Wednesday, August 6, 2008

Wii Remote and World Wind Java

Fabrizio Giudici, a World Wind Java early adopter, reports yet again a Wii remote related demo involving the NASA SDK. The project called Montenav demonstrated by Gianpaolo Melis at the JUG Genova uses the Nintendo hardware to control the WW globe using gestures.


In the above video the red and green dots are the two hands being tracked simultaneously. Gianpaolo Melis used IR leds attached to his hands to communicate his gestures to a fixed Wii remote.

For more details see Fabrizio Giudici web log.

Last January i reported another project involving Wiimotes and World Wind - the .net version. Recently, j_c_maglio, a WWJ forum member mentioned working on a related project.