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:
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 |