Posted on March 17th, 2010

Bow waves for your ships

During the production of Ships we had a lot of trouble to create an acceptable looking bow wave and to be honest, never quite achieved that either. Also with our cruise ship project for Clean Cruising we decided to display a better representation of a bow wave and so we set out to find a method to achieve this.

But what does a bow wave look like? There are plenty of pictures on the internet showing wakes of ships. A bow wave seems to be a standing wave that travels with the ship while the shape of the wave depends on the ship speed and hullshape.

To represent a standing wave in Google earth we want to lighten the sun facing side of the wave while darkening the other side of the wave. In Google Earth we can not yet access the shader code so the next best thing is a semi transparent image overlay containing light and dark patches of color.

Research into the shape for a bow wave led me to the web-site from Professor Sir Michael Berry, Professor of Physics at the University of Bristol.

Professor Berry defined a bow wave in a mathematical equation which he plotted to an image.

Click on the image for a full size version.
As you can see there is more to it than a simple splash of white or black. I could not do any justice to, or even attempt to describe the work Proffesor Barry did on this subject but he graciously permitted the use of his image for further processing and to be made available in the public domain.

The way I look at this image is that the neutral gray (r,g,b 163,163,163) represents flat water. Following that I make the assumption that lighter pixels are sloping backward while darker pixels represent are sloping forward.

From here on in it is all a matter of processing the image. The most tricky thing is to create a mask that defines which parts of the image are transparent because we want to keep seeing the water texture present in Google Earth

Obviously we want the neutral gray to be transparent but we still want to see the lighter and darker pixels. For this job Photoshop provided a solution with the Image-Adjustments-curves tool. Basically we want the neutral gray to be 100% transparent and we want white AND black to be opaque (0% transparent). The transparency mask in Photoshop uses black as 100% tansparent and white as opaque so we need a version of this image where both white and black are turned into white while the neutral gray is turned into black. The Photoshop curves tool proved to be brilliant for this task.

Click on the image for a full size version. The resulting transparency map can be used to define the transparency of each pixel. In order to remove the abrupt termination of the bow wave we need to add a gradual fadeout to transparent so no edges are visible.

For artistic purposes further manual tweaks are required to soften the waves at the left of the image and shift the lightness and contrast a little for sharper edges.

Click on the image for a full size version. The final result is a 32 bit png image that contains the transparency channel. This bitmap can be used to display bow waves in Google Earth but of course any application where a bow wave needs to be displayed can benefit from this image.

Click on the image for a full size version. To make the whole thing complete I generated a normal map using the NVidia Photoshop plugin that turns a heightmap into a normal map. Not much use in Google Earth yet but applications that use normal maps will be able to provide a realistic reflection to the waves.

Above one of our 3D cruiseship models with a bow wave image combined with shadow and stern wake.

Have a look at this kmz file for the animated result in Google Earth or view the video below.


©2009 All Rights Reserved  •  by