TITLE: Daybreak in the Ancient Forest
NAME: Michael Shevlin
COUNTRY: USA
EMAIL: shevlin@uic.edu
WEBPAGE: http://www.uic.edu/~shevlin/
TOPIC: Epic Proportions
COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT.
JPGFILE: daybreak.jpg
ZIPFILE: daybreak.zip
RENDERER USED: 
    Povray 3.6

TOOLS USED: 
    POVTree, LParser, Triangles, Plant Studio, Crossroads 3D, Gimp

RENDER TIME: 
    3h 15m 10s

HARDWARE USED: 
    AMD Athlon XP 1700+, 512 MB RAM

IMAGE DESCRIPTION: 


Another day begins as the first rays of sun filter through the ancient 
redwood forest.  Some of these trees are so old that they were saplings 
during the peak of the Roman empire.  It is not uncommon for these trees to 
grow to be over 300ft tall and over 20ft wide; they are the tallest trees on 
earth.

My initial ideas involving epic proportions all seemed to involve catastrophe 
or disaster of some sort, but I really didn_t want to create an image like 
that for this round.  I wanted to do an outdoor scene, and that eventually 
led to the idea of redwood trees, which are undoubtedly huge.  _Epic_ was no 
good without the appropriate _proportions_, though.  Of course, I could (and 
did) put things in the foreground to indicate size, but I wanted some sort of 
symbolic contrast, too.  To that end, I spoiled my pristine outdoor scene 
with a city far off in the distance.  As the perspective suggests, the rest 
of the living world is much, much bigger than the little niche carved out by 
humanity.  Unfortunately, so few of us take the time to realize, appreciate, 
and enjoy that fact.


DESCRIPTION OF HOW THIS IMAGE WAS CREATED: 


Since this image was completely dependent upon the redwoods, I tackled them 
first; they_re isosurfaces.  More or less they_re cylindrical with some 
twisty sine-waves and noise added to make the bark, with some bell-shaped 
curve being thrown in by the base to flare the trunk by the ground.  Those 
trees are so tall that essentially all of their canopy would be off the top 
of the screen, which made my modeling job easier.

After having repeatedly met with failure to generate reasonable random 
terrain, I ended up making a couple height fields using one- and two-
dimensional bell-shaped functions and a little noise.  Those little y=exp(-
x^2) functions are indispensable when trying to procedurally generate natural 
looking curvy surfaces.  The landscape is split into a foreground height 
field that extends all the way down to the lake, and a background height 
field that continues on to the horizon.  The lake itself is a mess of CSG 
between the two height fields.

The smaller spruce trees in the foreground were made using POVTree, and weigh 
in at nearly a quarter million triangles each.  They_re all identical save 
rotation and scale, though, so they don_t cause that big of a memory hit.  I 
figured it would be a bit of overkill to use even a simple tree mesh for the 
background, so I wrote a macro to make fake trees from three triangles 
intersecting at 120 degree angles.  20,000 fake trees were made into a mesh, 
and 18 of those meshes, offset randomly from each other, covered the 
background nicely.  A similar technique was used to cover the area to the 
left of the lake.

The smaller bushes were made with the maketree macro by Gilles Tran.  The 
ferny foliage was generated with LParser, exported as a .dxf file, and 
converted into a mesh with Crossroads 3D.  The redwood sorrel (creeping 
groundcover with pink flowers) was modeled in Plant Studio and exported 
directly to Povray, discarding everything but the foliage and flowers which 
were gathered as individual meshes.  In order to get the patch shape on the 
ground, random positions were determined using polar coordinates where 
theta=rand and r=rand^2.  This worked nicely to make a patch of small plants, 
but tended to pile larger ones (like the ferns or nettles) up too much in the 
middle.  It turned out to be difficult to model the relatively simple nettles 
(broad leaf plants), so I ended up creating a mesh of a pair of leaves and 
their petioles with the old MS-DOS triangles program by David Sharp  A little 
tweaking and CSG made for a reasonable looking plant.  After all that, the 
scene still seemed like it needed more greenery.  I was tired of figuring out 
how to model plants, so I looked for some pre-made models.  The remaining 
purple and yellow flowering plants are public domain models from Varian_s 
Dreammodels and 3dplants, respectively.

In order to get a more realistic forest floor, I wrote a macro to generate 
patches of 200 randomly placed triangles (i.e. pine needles) in a mesh, which 
is duplicated 15,000 times to cover the foreground.  Since I was using real 
objects to cover the forest floor, I was able to get away with a relatively 
simple _ground_ texture on the height field itself since the floor is nearly 
completely covered with debris.  The rocks are relatively simple isosurfaces.  
The city in the background was generated with Chris Colefax_s city generator.  
Considering the amount of detail required for a little spot in the 
background, it was probably overkill.  The downtown area was generated as one 
big piece and then I generated a bunch of blocks of smaller buildings which 
are randomly placed around downtown.  The clouds are 8 stacked planes, based 
somewhat loosely off Rune S. Johansen_s stacked-plane fast sky.

After all that, I still had problems with establishing the scale of the big 
trees in the foreground, with no familiar reference.  I ruled out humans 
immediately, since that went against the concept of the image.  Animals I 
could only do with a high-quality public-domain model, which after several 
evenings_ worth of Google searching I concluded did not exist.  I finally 
settled on a few butterflies over the flowers, since I could make those with 
simple CSG and an image map.  With the butterflies in the scene, though, I 
had to use my artistic license to scale the objects a little so everything 
looked reasonable; otherwise the small details in the foreground would 
completely be lost compared to the size of the big trees.

The most challenging aspect of this image was trying to model all sorts of 
natural objects like plants, trees, and rocks, while only having access to 
free software.  Many, many thanks go out to all of those individuals who 
write such software, because without it, none of this is possible.  A 
secondary challenge in this scene was memory constraints; even with 512 MB of 
RAM, I had to be very selective of the modeling techniques used to avoid 
running the computer out of memory, thrashing, and as a result, unacceptably 
long render times.  That_s why so many objects were coaxed into meshes; mesh 
copies incur very low memory overhead.  I_d never have been able to make this 
scene, for instance, with half a million CSG objects.  

Finally, I had some serious issues with lighting the scene correctly.  I 
wanted a sunrise or sunset scene so I could get some dramatic shadows, but I 
didn_t want to be looking at the sun or else the smaller trees would become 
dark silhouettes.  This resulted in an interesting southwest view; the 
sunrise still imparts a little blush to the scene, even though you can_t see 
it directly.  Also, with the sun still low on the horizon, I ended up with 
bottom-lit clouds.  At first, the shadows in the tops of the clouds looked 
odd, but observing the real things convinced me that it was indeed realistic.  
The nature of plants and trees, particularly pine trees, is that they cast a 
lot of shadow on themselves, and it took a lot of tweaking of the light 
source and of indirect lighting via radiosity to avoid an image that wasn_t 
too dark.  I also had to strike a balance between realism and visual appeal, 
since a mix of strong shadows and bright sunlight is too contrasty for any 
reasonable image.

References:
Gena Obukhov and Tom Aust, POVTree: www.txemijendrix.com/povtree.html 
Gilles Tran, Maketree macro: www.oyonale.com/ressources/english/index.htm
Laurens Lapre, LParser: home.wanadoo.nl/laurens.lapre/lparser.htm
David Sharp, Triangles: www.geocities.com/Athens/Academy/8764/triangles.htm
Kurz-Fernhout Sooftware, Plant Studio: www.kurtz-fernhout.com/
Keith Rule, Crossroads 3D: www.europa.com/~keithr/crossroads/
Varian_s Dreamview, Flowering plant: www.varian.net/dreamview/index.html 
3Dplants, Flowering plant model: www.3dplants.com/
Rune Johansen, Fast sky: runevision.com/
Chris Colefax, City generator: www.geocities.com/SiliconValley/Lakes/1434/

