back to Rob's Digital Art Page
https://pilulesfrance.com/
fire and ice

My second entry in the Internet Ray Tracing Competition (Jan-Feb, 2006). The theme was "Fire and Ice."
The making of "The Hottub"
At last year's Christmas party some of my co-workers went hottubbing outdoors. I thought that might qualify as a fire and ice hot vs. cold contrast. This image is NOT a representation of my co-workers. :-)


The Fence
The fence is just a quick CSG macro.  I originally used a transparent texture in the lattice, which turned out to be very slow. I sped things up by making boxes for each bar of the lattice and rotating it 45 degrees. The wood knots are just little cylinders that are randomly placed and poke out of both sides of each plank.
I think the key to the fence is making the wood look faded and giving each plank a slightly different colour. The macro positions each plank, so there's an obvious opportunity to apply a second texture to each plank with random darkening.

The Houses
The houses are generated by a set of CSG macros I wrote. You tell them how big each part of the house is, where the windows and doors are located, what style of window, etc. The macros automate the roofs (gabled or hipped-shaped). The vinyl siding is actually just a slope_map trick which works well with the lighting in this scene.  Unfortunately, I wrote the macros in a very messy manner. Once I rewrite them, I'll post them here if anyone is interested.

The icicles are sphere_sweeps with random bending placed randomly along the eavestrough. The shovel is also CSG.

The flexibility of these macros allowed me to easily change the appearance of things by only tweaking a few parameters.

The Trees
The trees are Lightwave Object (.OBJ) files downloaded from xfrog public plants and converted to mesh2 with PoseRay.Originally, I had changed the leaves to transparent textures to leave the branches bare, but the rendering time was extremely slow. POV-Ray seems to be very slow rendering transparent objects (especially overlapping ones). Later, I used PoseRay to exclude the leaves when exporting to PovRay. That reduced the mesh size by about half and decreased the render time a great deal.  I then mapped a seamless bark image around the whole thing.

The snow on the branches was done by having PoseRay export some of the branches of the same tree and texturing them as snow covered. This "partial tree" was then placed at the same location as the original but slightly offset so that the snow covered branches would "stick out" a bit from the bare branches.

Early renders used the Montpelier Maple object (acer monspessulanum); later ones used the European Chestnut (castanea sativa) object. 

The blue spruce (picea pungens glauca) uses flat triangles for the branches with image_maps of a fir branch applied.  I painted on a bit of white onto the branch image to simulate snow. Some "floating branch" artifacts are visible where the image_map is repeated.



The Hottub
The hottub itself is just CSG. The water is an isosurface with a granite based texture for the foam. It looks okay from a distance, but not that great in a closeup. I randomly scattered bubbles on the water surface using discs whose normal was pointed at the camera.  The steam clouds are based on the makecloud2 technique described by Gilles Tran.  The clouds doubled the render time, but add a subtle hint of heat.



The People
The human models are from DAZ with the textures from DAZ and Renderosity.The girls' swimsuits were painted onto their skin texture using Paint Shop Pro. As for the men, you can't really tell if they have swimsuits on or not :-) Don't tell anyone or they'll be in hot water! (sorry, couldn't resist)

From left to right, we have:

Sophie
Model: Stephanie Petite 3
Texture: "Sophie" texture by 3D Strike
Hair: Up Do by Kozaburo
David
Model: David 3
Texture: Michael 3.0 Universal Texture Maps by  DAZ
Hair All Back hair by Kozaburo
Shenyu Model: Victoria 3
Texture "London Knights" by orion1167
Hair: Shorthair by Kozaburo
The Captain Model: Michael 3
Texture: "The Captain" by ExprssnImg
Cap: ExprssnImg
Ahmed Model: Michael 3
Texture: Michael 3.0 Universal Texture Maps by  DAZ
Hair: Mihai hair by Neftis (tweaked)

The photographer is an untextured Michael 3 model.




Early Tests
click on an image to see some early versions of the hottub

The Stats
Scene Statistics
  Finite objects:         5110
  Infinite objects:          1
  Light sources:             2
  Total:                  5113
Rendering Warning: Illegal grid value in dda_traversal(). The height field may contain dark spots. To eliminate them moving the camera a tiny bit should help. For more information read the user manual!

Render Statistics
Image Resolution 1024 x 768

Pixels:           829635   Samples:         3545627   Smpls/Pxl: 4.27
Rays:           27202926   Saved:            383212   Max Level: 103/150

Ray->Shape Intersection          Tests       Succeeded  Percentage

Box                         2218522871      1046800256     47.18
Cone/Cylinder               1806052613         7192784      0.40
CSG Intersection              46146685         6070920     13.16
CSG Merge                    143274179         2822477      1.97
CSG Union                    164242074        10313283      6.28
Disc                           4930270         1914811     38.84
Height Field                1807205430         7591608      0.42
Height Field Box            1807205430        12174315      0.67
Height Field Triangle         39673363        11346545     28.60
Height Field Block            19589555        14928462     76.21
Height Field Cell            195075531        20663282     10.59
Isosurface                   243089590        12673327      5.21
Isosurface Container         243794329       243793629    100.00
Isosurface Cache              12044564         9250586     76.80
Mesh                        2561271672       627077307     24.48
Plane                       1864012811        41408771      2.22
Prism                           534869           22420      4.19
Prism Bound                     534869           41684      7.79
Sphere                      1152204135          169075      0.01
Sphere Sweep                   2885319          189750      6.58
Superellipsoid                28105123          893371      3.18
Torus                         35979520          195926      0.54
Torus Bound                   35979520          254839      0.71
Bounding Object               17493407         1717673      9.82
Clipping Object             1839947246      1805757430     98.14
Bounding Box              221670532365     83480010517     37.66
Vista Buffer                 194614794       134052111     68.88

Isosurface roots:         243089590
Function VM calls:       1384848203

Roots tested:               1445563   eliminated:                80730
Calls to Noise:          1505053588   Calls to DNoise:    132412149032

Media Intervals:         1557093960   Media Samples:       20247229185 (13.00)
Shadow Ray Tests:        2353892071   Succeeded:            1247034756
Reflected Rays:             1157898
Transmitted Rays:          11282397
I-Stack overflows:                2

Radiosity samples calculated:           229623 (1.17 %)
Radiosity samples reused:             19350826

Smallest Alloc:                  17 bytes
Largest  Alloc:            48000016 bytes
Peak memory used:        1379359821 bytes
Total Scene Processing Times
  Parse Time:    0 hours  4 minutes  6 seconds (246 seconds)
  Photon Time:   0 hours  0 minutes  0 seconds (0 seconds)
  Render Time:  21 hours  5 minutes 29 seconds (75929 seconds)
  Total Time:   21 hours  9 minutes 35 seconds (76175 seconds)
CPU time used: kernel 137.13 seconds, user 74834.58 seconds, total 74971.70 seconds
Render averaged 10.49 PPS over 786432 pixels