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 easily 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.

Saturday, August 2, 2008

OneGeology World Layer for World Wind Java

Did you ever wonder what the Earth would look like if you stripped it of water and vegetation, revealing the underlying rocks?

The OneGeology project aim is to create dynamic digital geological map data for the world. It is an international initiative of the geological surveys of the world who are working together to achieve this ambitious and exciting venture.


Here is a WMS layer for NASA World Wind Java showing the 1:25M Geologic Units for the entire planet, provided by the french BRGM. Download OneGeologyWorldLayer.java, remove the .txt extension and add to the SDK layers.Earth package. Note that this layer is only a coarse 'preview' of the underlying datasets and will not yield much details if you zoom closer.

The OneGeology web site features a 2D map browser - the OneGeology Portal, that allows you to explore in more details the different layers provided by the participating organizations.

The official launch of OneGeology will happen at the 33rd International Geological Congress (IGC) in Oslo, August 6th - 14th 2008.

See this Nature article for an overview of the project.

Tuesday, June 3, 2008

World Borders alternate layers for WWJ

The 'broken' Country Boundaries layer has been an issue for some time in World Wind Java... After a quick search, here are three alternate layers to fill the gap until the NASA WMS server gets up and running again.

Metacarta country_02 layer - 12 levels, no coastline - WorldBordersMetacartaLayer.java


Freemap factbook layer - 12 levels, not so clean - WorldBordersFreemapLayer.java


Katrina OWS world layer - 5 levels only - WorldBordersKatrinaOWSLayer.java

Friday, May 9, 2008

JavaOne 2008 World Wind Java presentation slides

The JavaOne 2008 Power Point presentation for World Wind Java is now available.

World Wind Java presentation slides for JavaOne 2008
You will find some interesting bits about the new WMS server included in the SDK release 0.5.

Thursday, May 8, 2008

World Wind Java On a Multi-Touch Wall

Almost a year after the first World Wind Java SDK release in may 2007, a number of applications have emerged and have been gathered on the WWJ demo page. Whether it be for exploring the ocean depth, controlling cameras flying in the sky, tracking satellites or visualizing information clusters, WWJ is indeed showing up in a wide range of activities.


a


The University of Muenster Institute for Geoinformatics has now used WWJ for a multi-touch wall project. From Johannes Schöning IFGI:

"We developed a Multi-Touch version of Nasa World Wind on a 7.9 x 6.2 feet tall FTIR (frustrated total internal reflection) based Multi Touch wall. This implementation is based on a multi-touch tracking library developed within the Project: Multitouch at the Deutsche Telekom AG Laboratories, which is part of the TU Berlin."
Videos can be seen on YouTube or Google Video.de.

Friday, May 2, 2008

NASA World Wind Java SDK 0.5 released

NASA World Wind Java SDK alpha 5 - 0.5.0, has been released today. It has been five month since the previous 0.4 last december and a lot has been done since. However, although a 1.0 was in the plans, a lot remains to be done for the first stable version and you may not find all the fixes you wished for yet. Download WWJ SDK 0.5 (Zip 14.4M).

Among the most notable changes, my favorite is the new view handling which allows you to navigate with much more precision over elevated terrains as well as underwater. What is really nice is that you can now get very close to the ground and the 'orbit center point' is always anchored where you would expect, on the surface, in the middle of the viewport.

WorldWind Java 0.5Mount Rainier and Spirit Lake from inside Mount Saint Helens crater, WA, USA.

A lot of work has been done on the server side of the project. A free and open source WMS server is now included with the SDK, which itself has been deployed on a much faster network. Both Blue Marble Next Generation twelve month and I Cubed Landsat are now served via this new WMS infrastructure. Other datasets will be integrated, some 1m US NAIP among them.

Mount Olympus crater, Mars, THEMIS Color layer

As expected, you will find the Moon and Mars globes with their full layer sets from the NASA servers - Mars data seems slow to download these days though.

WorldWind Java 0.5 - Flat WorldsLast 7 days USGS earthquakes on Mercator world

Flat worlds with projection switching are now ready for prime time - or so we hope. You will find a new example application showing the latest USGS earthquakes over a Mercator world - or a modified sinusoidal if so you wish.

A 'Restorable' interface has been added and implemented in a number of classes. Think of it as a form of serialization, it allows to save an object state in an XML document and back. For instance, you can now easily save the view state - eye position, zoom, pitch angle, heading... in one step as a text string and restore it as easily.

World Wind Java 0.5 - Open Street Map layerOpen Street Map layer over San Francisco, CA, USGS Urban Area layer

These are just a few of the many goodies you will discover inside this release. Tiled image layers have been fixed and will not wait anymore for lower res tiles to download before showing the needed ones. There is a 1 meter NAIP layer for California which is quite crisp, the Open Street Map layer, a rather complex MGRS graticule layer, new minimize/maximize buttons in the terrain profile layer graph... Surface images from a remote http source, faster polylines and more.

Be aware that some classes have been moved around. For instance, all non Earth specific layers have been moved from layers.Earth to layers - that involves FogLayer, ScalebarLayer, SkyColorLayer, SkyGradientLayer, StarsLayer, TerrainProfileLayer and WorldMapLayer.

Check this WWJ Forum post for a change list and discussion, see the new WWJ Demo page for webstart examples, applets and user applications, and go to World Wind Central for everything else. Enjoy!

Sunday, April 20, 2008

Geosignal French maps in WWJ

Toulouse based Geosignal has made freely available for more than a year a number of interesting layers on their WMS server. Here is a layer class for WorldWind Java that will bring together eight levels of details from the RASTER maps serie.

Geosignal French maps in WorldWind Java
Download GeosignalRasterWMSLayer.java, remove the .txt extension and add to the SDK layers.Earth package.

Geosignal French maps in WorldWind Java
The layer covers continental France and Corsica. The finest levels include street maps for most urban areas.


Geosignal French maps in WorldWind Java

Friday, April 11, 2008

Ray Casting and Line of Sight for WWJ

It is a common issue to be able to find out where in the world does a line intersect the terrain surface. The WorldWind Java SDK allows to resolve the intersection from the eye point of view using the pick process - based on drawing objects in unique colors, but that does not help much when you need to compute such intersections from another perspective, like for line of sight calculations.

Ray casting and line of sight calculations in WorldWind JavaLine of sight calculation from the top of Mount Jackson (3064m),
Glacier National Parc, Montana, USA.

Here is a helper class to answer such questions, along with an example application that will display areas from where you can see a central point.

Download RayCastingSupport.java and LineOfSight.java - remove the .txt extensions, save the first one in 'util' and the application in 'examples'. You may also need the crosshair layer.

Update april 18: there appears to be two dependencies on the not yet published SDK version: centerPosition calculation and PatternFactory.blur() - see this post comments. You can simply comment out the blur, or replace it with a ConvolveOp, and change the center position line with:
Position centerPosition =
     RayCastingSupport.intersectRayWithTerrain(globe,
           view.getEyePoint(), view.getForwardVector(), 30, 3);


Ray castingRay casting - figure 1

The ray casting code samples points at regular intervals along the 'ray' until it finds one which elevation is below ground - figure 1.1. It then recursively resamples the last segment every tenth of the previous sample length - fig 1.2, until that sampling step is smaller then or equal to the required precision.

The longer the initial sample length, the quicker an intersection will be found - 1, and the sub sampling process will start narrowing onto the terrain - 2. However, the larger the value the less accuracy you will get since the ray will be able to go through some surface features in just one step and completely miss them. The default values for sampling length and precision are 100 meters and 10 meters and can be overrided in the methods arguments.

Note that the example application also shows how to 'paint' both on the terrain and on the screen using BufferedImage, Java 2D, SurfaceImage and ScreenAnnotation classes.

Thursday, April 3, 2008

WorldWind Java Splash Screen

Nothing fancy, fast or optimized, just a frame with the NASA WorldWind splash bitmap that has been in the SDK since day one.


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

To use it, create a no argument new instance of SplashScreen at the beginning of your application main() and dispose of it just after the main frame has been set visible.

Disclaimer: note that a 'good' splash screen that displays fast without slowing your application startup is somewhat a 'hacky' business for which you can find various kinds of tricks. This example doesn't implement any of them, and will likely make your program slower to start.