Experimental renderings

This page contains experimental renderings, including some weird ones, errors in my renderer (which can sneak in when I'm modifying it ;) can sometimes result in very interesting and rather "artistic/surrealistic" results. Click the images on this page for full size versions.

Stereo magic: A DEM of Rhea

anim00074_c_s.jpg (13996 bytes) Unlike Jupiter's satellites it is not possible to get acceptable renderings of Saturn's icy satellites without using a digital elevation model (DEM). The main reason is that the craters on Saturn's satellites are far bigger and deeper relative to the satellites than the craters (and topography in general) on Jupiter's satellites.


Rayleigh scattering and atmospheric refraction

Back in 2005 I added several experimental renderings involving Rayleigh scattering to this page. Back then my code was still buggy so some of the renderings looked weird. I then fixed the bugs. Later, after seeing some of Cassini's images of Saturn, I decided to extend my code to include refraction. The top row images show two fairly early attempts to get things right. For comparison, take a look at this Cassini image and this page showing a moonset from space. The distortion due to the atmosphere seems fairly accurate but the images look rather noisy (especially the Moon) and Saturn's color is weird. Later on I reduced the noise by using a higher number of layers in my atmospheric model and by fine-tuning my code a bit. However, I have found that rendering these images takes a huge amount of time and optimizing the rendering time without severely reducing the image quality has proved difficult, especially for non-spherical planets like Saturn. I also have found far less literature concerning the implementation of refraction than I have found for atmospheric scattering. The limited dynamic range of computer monitors is another problem. I frequently get severely overexposed or underexposed images so I need to use various arbitrary multiplication factors in my code to make things look right. These factors vary depending on solar elevation (when inside the atmosphere), altitude and atmospheric properties such as scale height, the amount of aerosols etc. The fact that I ran into an optimization bug in Microsoft's Visual C++ compiler also didn't make things easier or quicker to debug.

The image at lower left shows an attempt to extend my rendering code to produce realistic images from within the Earth's (or any planet's) atmosphere, as opposed to from outside the atmosphere only. The altitude above sea level is 10 km. For comparison, I took the image at right from a similar altitude somewhere above the Atlantic Ocean. The computer rendered image compares fairly well with the photo. The only problem is that I can't take photos from far higher altitudes ;-). I have also gotten fairly good renderings showing a sunset.

A more recent higher quality image from a later version of my renderer showing Saturn's rings from inside Saturn's atmosphere can be seen on the Saturn page.

DSC02413_s.jpg (6791 bytes)

Return of a blue Saturn

saturn_blue_season_s.jpg (2138 bytes) Ages ago in a different millenium a weird bug caused my old renderer to output bluish renderings of Saturn. Needless to say I quickly fixed this bug; back in 1998 a blue Saturn was a ridiculous idea, at least to me. How things have changed. Now NASA's Cassini spacecraft has discovered that Saturn's winter hemisphere which thanks to the rings' shadow receives even less sunlight than it otherwise would, indeed has a bluish color due to a deeper clear atmosphere than in the summer hemisphere. This causes a bluish color due to Rayleigh scattering. This rendering was created using a new version of my renderer. This new version modifies the color of the Saturn texture map on the fly depending on season in an attempt to simulate the seasonal color change observed by Cassini.
Recently I have been attempting to make a 3D model of Amalthea, one of Jupiter's small, irregularly shaped satellites. I started by downloading a shape model from Philip Stooke's website. This model has a resolution of 5 (72x36 'pixels') and is based on Voyager images only; unfortunately models incorporating Galileo results do not seem to be available on the WWW. I then resampled the model to a much bigger size (higher resolution) and added lots of craters using a special program I wrote for adding craters to elevation maps. Since no high resolution images of Amalthea have been obtained most of the craters, except for the big ones, are fictional. I then made a partially fictional texture map based on a texture map of Mars (!). The topmost rendering shows a very early version of this work. Artifacts of the resampling process are visible (especially at left), the surface looks too smooth, it has a somewhat shiny/plastic appearance and there are too few craters. The version at center shows the most current version. It was resampled with a program I wrote instead of using Photoshop so no reampling artifacts are visible, there are more craters and I am using more realistic photometric parameters to render the model. Also I added a small level of random noise to the elevation map. The improvement is obvious.

Making animations is a good way to check if the photometric parameters make sense. In particular, it is easy to see if the surface is too shiny. The rendering at bottom is the first frame from a rotation movie (2.4 MB) that can be downloaded by clicking the rendering.

Amalthea rotation movie
Cassini's Jupiter
I recently finished a very high resolution map of Jupiter based on images obtained by NASA's Cassini spacecraft during its Jupiter flyby in December 2000. This map is 50% bigger and of somewhat higher quality than my Voyager 2 map of Jupiter. In particular, the color balance is better. This rendering was made to check if everything looks OK. Apparently it does, meaning I can start making lots of new renderings of Jupiter and its satellites.

Rayleigh scattering

Recently I have been adding Rayleigh scattering to my PT3RT renderer to simulate atmospheric effects. These early renderings show that I am making some progress but something is still wrong. The first rendering (left) looks fairly good. The one in the center looks a bit strange at the northern limb which seems rather bright near the terminator. In the last one (right) it is obvious that something is wrong. The limb at bottom near the terminator looks far too bright and the terminator is also probably too bluish and bright. Also the Earth (especially the clouds) may be too yellowish. What this all means is more debugging and experimentation. In the end I hope to be also able to simulate things like a bluish sky and sunset colors.


An experimental rendering showing ringshine on Saturn's nightside. It is rendered using a precalculated map like the one below. I calculated roughly 30 such maps for different solar elevation angles relative to the ring plane (here this angle is 20 degrees). The ringshine is exaggerated a bit in this rendering to make it easier to see but you may still need to turn up the brightness of your monitor to see it clearly. The appearance of the nightside should be fairly realistic but it should still be possible to make significant improvements to my ringshine model, especially at low solar elevation angles.

Click the image for a full size version.


ringshine_n15.jpg (7484 bytes) Recently I have been attempting to precalculate how light reflected from Saturn's rings illuminates Saturn's nightside. This is a very significant effect that is clearly visible in spacecraft images of Saturn, e.g. this image. The results of these calculations will be used as input into my raytracer when rendering Saturn's nightside. The global map at left shows this illumination for a solar elevation angle of 15 degrees above the northern side of the rings. The nightside is around the center of the map and is relatively dark since a part of the rings is in Saturn's shadow. This is only an approximation, probably a cude one. In particular, the southern hemisphere is far too bright here since the overall brightness of the rings' unlit side is too high in my model. Renderings showing ringshine on Saturn's nightside should show up here soon.
Gusev's landscape
gusev_a140_s.jpg (5666 bytes) These experimental renderings show Gusev crater, the landing site of NASA's Spirit rover on Mars. I made no attempts to make the renderings pretty or realistic at this stage but just wanted to see which features (e.g. Gusev's rim) would be visible from the landing site if Mars' atmosphere was more transparent.


Loki's relief
The Loki area with and without a bumpmap These renderings show the area near Loki on Jupiter's satellite Io. For the rendering at top only a texture map was used. It doesn't look very realistic since it's near the terminator so shadows caused by surface relief should be visible. In the second row the same area can be seen under identical illumination conditions but a bump map was used, thus shadows caused by surface relief are visible. The bump map is fictional and is based on a greyscale version of the texture map that has been modified in Photoshop. Despite the primitive way of making the bump map this rendering looks much better but there are major errors I know of, for example Loki Patera (the big dark feature) is probably not lower than the surrounding, lighter areas.

The rendering at bottom shows the same features as before but rendered using a triangle mesh instead of bump map. This rendering looks rather crude, for example a much higher resolution texture map (the one I'm using is only 9000x4500 pixels) is really needed for closeups like this. In this case this is no problem at all since my only purpose was to check the surface relief; I didn't want things like mountains to look unnaturally steep and high.

An oblique view of the Loki area
Io's color
io_col_montage_s.jpg (10010 bytes) These renderings of Io were created using a new map of Io I'm finishing. They show attempts to get Io's color right.

The rendering at upper left has colors that are similar to the colors of most of the 'true color' images from the Galileo spacecraft that have been released. These images use images taken through red, green and violet filters as red, green and blue respectively. The problem with this is that images taken in violet light are darker and much more contrasty than images at longer wavelengths, including blue. The rendering at upper right uses a synthetic blue image instead of the violet image and is probably more realistic.


PT3RT: Saturn's rings at different phase angles

sat_montage_s.jpg (3732 bytes)

This montage of renderings shows the effects of varying phase angle on the appearance of Saturn's rings.


PT3RT: The all-new renderer
I'm in the process of rewriting my planetary renderer from scratch. This is a big project likely to take a year or more. I call the new renderer PT3RT. This is the first time for many years that I completely rewrite the renderer. The new one will be far more powerful than the old one, in particular it can render a far bigger number of object types (spheres, ellipsoids, surfaces, heightfields on a sphere, volcanic eruption plumes, cones, cylinders, atmospheric effects, triangle meshes etc.). Also the shading model will be more sophisticated (as if it wasn't so already ;-) and PT3RT already has a very powerful texture map handling.

These renderings are from an early version of PT3RT. They are both supposed to show Saturn's satellite Mimas but the upper one doesn't look like it at all due to a bug. The lower one was rendered after I fixed most of the bugs and looks a little more realistic ;-).


PT3RT: Mars using a heightfield on a sphere
These two renderings of Mars are also done using the new PT3RT. They combine a heightfield on a sphere (this is really just a triangle mesh containing several million triangles) and a 'quick-and-dirty' texture map I created from these images. This particular texture map is better than the other maps of Mars I have been using since it has almost no shadows which is a Good Thing for renderings like this.

The upper rendering shows Mars' global appearance from a distance of 30000 km and has a field of view of 20. The lower one has a field of view of 9 and vertical relief has been exaggerated by a factor of 4. A Buratti function is used for shading calculations and both renderings are slightly post-processed (at the moment necessary because I have not finished PT3RT).

More PT3RT: Martian topography
Another PT3RT rendering showing the 0.03125 x 0.03125 topographic map derived from Mars Orbiter Laser Altimeter data. The same texture map as before has been draped over the topographic map. Like the renderings above this image was rendered using a Buratti function and then slightly post-processed.
Some of these renderings may look nice but the PT3RT project is far from finished. It's well under 50% complete at the time if this writing.
Jupiter's color
These renderings were created from several different versions of a map based on Voyager 2 images. The rendering at upper left is from the 'original' version of the map. The map was processed to make big, bright areas approximately white (the North Tropical Zone is an example). The spacecraft imaged Jupiter through orange (O) and violet (V) filters. Synthetic green (G) images were therefore needed. The synthetic green images are extremely similar to actual green images so they are not a problem. The real problem is the fact that orange images are used instead of red and violet images instead of blue. These renderings show attempts to correct this by creating synthetic red (R) and blue (B) images from the existing images (orange/green/violet). Some of the resulting maps/renderings are definitely more realistic than the original one but I'm not sure which one is best even though I've seen Jupiter myself through a telescope. One problem is that Jupiter changes over time, for example the equatorial areas are brighter now than in 1979 when the map's source images were obtained. Some of these renderings are obviously wrong, for example the reddish one at lower right.
Simple atmospheric effects
This montage shows a photo of Jupiter obtained by the Cassini spacecraft (upper left) and two renderings. In the Cassini photo, the limb (Jupiter's right edge) looks a little bluish. The rendering at upper right is an attempt to simulate this using a very simple 'model' where separate limb darkening parameters for red, green and blue are specified. The rendering at lower center is without atmospheric effects. The upper right rendering is more realistic in several respects, in particular the limb looks bluish. However, some areas look slightly too bluish, especially in the southern hemisphere's right half (however, the bluish color near the south pole is due to color inaccuracies in my texture map). This might be fixed by modifying the limb darkening parameters (a process of trial and error) or the atmospheric model which at the moment is very simple, for example contrast does not get lower close to the limb as in the photo. Modifying the atmospheric model is also a trial and error process. A 'full blown' atmospheric model involving things like Rayleigh scattering would probably do the trick but the rendering time would increase dramatically. There's just one problem: Suddenly several previously nice renderings on the Jupiter page suck because they lack atmospheric effects. A description of this shading model can be found here.
Martian topography
mars_mola_s.jpg (3376 bytes) This POV-Ray rendering of Mars was created from a 0.03125 x 0.03125 topographic map derived from Mars Orbiter Laser Altimeter data. The map was downloaded here. This is just the "flat map" with altitude greatly exaggerated but this will look really interesting on a sphere, especially if I manage to colorize it using color maps.
Making a map: Callisto
This rendering of Jupiter's satellite Callisto was created using an unfinished map while I was working on it. It shows what these things look like during the intermediate stages: There is imaging coverage for most of the surface although there still are some gaps and ugly seams. But other areas look realistic so this seems rather promising. But considerable work still remains, both to get rid of the gaps and seams and finally to colorize everything.
Fun with photometric parameters
This rendering of Jupiter's satellite Europa shows the effect of specifying different photometric parameters for the three color channels (red, green and blue). Note that areas near the limb appear slightly bluish/greenish compared to the center of the disk. This is a highly experimental feature and the photometric parameters used here do not make a lot of sense except for the purpose of exaggerating the effects ;-) . In fact I'm not sure using different R/G/B photometric parameters makes a lot of sense when using a color texture map.
Voyager 2 at Saturn
This rendering was created by rendering Saturn in my renderer "the usual way". I then took the resulting image file and used it as a kind of background in POV-Ray which I used to render Constantine Thomas's exquisite model of the Voyager spacecraft in action in its "natural environment". This was extremely clumsy to do (but I'm a beginner in POV-Ray), e.g. the sun is only 1 (yes one) kilometer from the spacecraft ! Nevertheless, this rendering, showing the Voyager 2 spacecraft at Saturn, should be rather accurate.
The magic of bump maps: The "bump map generator"
These renderings show the effect of using a bump map as opposed to a texture map to render bodies with rough surfaces. The rendering at top left shows Saturn's satellite Mimas rendered using a texture map. The areas to the right look nice (prominent shadows because of the low solar elevation angle) but in the areas to the left the shadows are too prominent so the rendering is not realistic. A section of the texture map is shown at top right.

The next three rows show renderings created using a bump map. These renderings have more realistic shadows but are experimental. I used a bump map I created by running the texture map of Mimas through a "bump map generator" I'm writing. The renderings in the left column use "raw" data from it with only minor cosmetic enhancements. Their biggest defect is the horizontal lines which show up as "ridges and valleys" if the bump map is rendered as a heightfield in POV-Ray. The right column shows the renderings after the most prominent horizontal lines have been removed using a partly automatic and partly manual method. They look much better but some horizontal lines remain.

The renderings in the two lowermost rows have identical viewing geometry but the lighting geometry is different, enhancing the effects of using a bumpmap for rendering cratered bodies.

Finally, if anyone has managed to do something similar to this (without getting these ugly, horizontal lines) let me know ! I'm not expecting lots of responeses though, judging from the fact that I've found very few bump maps on the net.

Mimas spherical heightfield / triangle mesh
Mimas global spherical heightfield rendering
Mimas' Herschel crater rendering
These two POV-Ray renderings of Mimas were created using a smooth_triangle mesh created by wrapping the same bump map as above around a sphere. The resulting POV file is extremely big so I had to subsample the map by a factor of two but still the POV file is almost 120 MB and took 20 minutes to render on a 200 MHz Pentium machine (result: I need a bigger computer ;-). These renderings are more realistic than the bump map renderings above, the horizontal lines are less prominent, possibly (but hopefully not) because of the subsampling, the edge of the disk is slightly irregular due to "mountains" and some "self shadowing" can be seen. The upper rendering shows Mimas from a distance of 3000 km and has a field of view of 11. The lower one shows Mimas' huge Herschel crater from an altitude of 215 km and has a field of view of 40.
A blue Saturn
This is not Neptune - it's Saturn ! I got this strange rendering when I was messing with the shading function in my renderer, thus creating a new bug (which I then quickly fixed). Saturn turned blue (in reality it is yellow tinted/creamish), there is no shading and the rings have disappeared. This is not at all like Saturn so this may be a possible method to create maps of fictional planets: Mess up the colors without doing a lot of other changes.
Weird Europa
The fun thing about bugs in 3D programs is that frequently they do not result in a crash. Instead they result in weird renderings with distorted perspective or beautifully wrong colors. This is an example, in this case a variable used as a multiplier in shading calculations inadvertently had an illegal value (a much too big one) resulting in this weird rendering of Europa. It looks like a false color image from an image processing program.
Different shading functions
Normal Lambert shading
Lambert shading ("Gamma corrected")
Buratti's empirical photometric function ("Gamma corrected")
Hapke's photometric function
Hapke's photometric function ("Gamma corrected")
0 phase 20 phase 45 phase 90 phase 145 phase
These renderings show the differences resulting from using different photometric functions for rendering Jupiter's satellite Europa in my renderer. The topmost row was rendered using Lambert shading. The second row is also rendered using Lambert shading but in a slightly more complicated form by incorporating what is in effect a gamma correction into the shading calculations. This gives more realistic results, limb darkening is less pronounced. The third row was rendered using Buratti's photometric function, an empirical function which describes how planets/satellites reflect light.

The fourth and fifth row were rendered using Hapke's photometric function, a relatively complicated theoretical function. Near 90 phase Europa looks more realistic by using gamma correction (fifth row), without it (fourth row) less than half the disk seems lit (unless you turn up the brightness of your monitor ;) which is incorrect. At low phase angles I don't think it is more realistic to use gamma correction but I haven't checked this against spacecraft images yet.

Unlike the Lambert renderings the Buratti and Hapke renderings are "normalized" so that the brightest point in each rendering always has a brightness value of 1. This is necessary since if I used the values from these functions directly the renderings would in most cases be far too dark. This is also more realistic when only a small part of the disk is lit; in the "not normalized" Lambert renderings the lit limb appears rather dark.

Back to main page