"Miss You (when you're gone)"

This image was made as a christmas present for a very close friend of mine. She had wished for an image with an animal leaving marks, e.g. footprints in the sand, or bent grass-blades. Her family owns a cat and it was winter, and thus, the basic requirements were found.
The rendering at 3840x5120 for a print took 3 days and 2.5 hours with a maximum memory usage of 272 Megabytes. The required rendertime set a new personal record for non-technical images! Nowadays, it renders in a mere 11 hours on a laptop...
In the following, I will be explaining various technical details of the construction and composition of the image.


Index

The Message
The Foreground
The Snow
The Background
The Sky


The Message

In my images, I always try to convey a certain message. Special care is taken to make sure that several aspects can be discovered, which elevates the understanding for "insiders".
Some background information might be helpful: In this case, the person for which this image was made is a very close female friend of mine. Others are often hesitant to believe that she and I weren't having an affair (or at least were planning on having one) or assumed that there's more going on than we admit. It seems that there's this stereotype-thinking that men and women can only have a relationship somehow based on sex and attraction.
Anyways, at first, I had a difficult time pinpointing an idea for an image. I wanted to somehow visualize our friendship along with making a great image which would enhance my knowledge and understanding of POV-Ray and break new grounds for future images.
During a boring course at my university I scribbled on my pages, trying to draw a rough blue-print which I could use to model the cat with a blob. One of the sketches showed a sitting cat looking slightly upwards, like it was waiting patiently for her owner to feed it. A few rough lines aside it sparked the idea of a tree, and the idea for a bird's nest (which eventually got replaced by a birdhouse, because the nest wasn't very visible from the image's perspective) quickly followed.
In essence, a cat waiting in the snow on a cold mid-winter day for a bird's return is a cute thought, but it also touches on the above mentioned stereotype that men and women can't be plain friends: who would think that a cat becomes a bird's friend (or vice versa, for that matter?).

The Foreground

The main objects of the image which tell the story are the cat and the tree with the bird's house. The snow in the foreground also required a small script.

The cat is a set of blobs modelled out of several spheres and cylinders. If I had attempted to place all components in a single blob, I would have had difficulties keeping the parts seperated. Instead, I use several blobs which used the same components at the places where the blobs would meet.
Texturing the cat is a small script in itself. Just slapping a bozo pattern onto the model wouldn't have resulted in a proper pattern suitable to a cat. Combining patterns in order to follow curves and localize certain patterns would have become quite tedious and complicated, as I would have had to work around layered textures. POV-Ray has this limitation that you cannot layer textures of patterned textures. My solution to this was to use the object-pattern, which colors everything inside a given object with one color and everything outside with another. So, in order to color the back of the cat, I shot hundreds of tiny spheres onto the cat-model, blobbed this and used it as a basis for the object-pattern. Converting the pigment to a function allowed for some further modifications with the color-maps, e.g. blurring the border to get a soft gradient from the white fur to the red/orange fur. To create a fur-like texture, I had to apply a trick. Fur has a similiar lighting effect to that of velvet, surfaces in a certain angle towards the light and the viewer shine more than an area that are perpendicular to the viewing direction. To achieve this, I applied a very turbulent normal and averaged two textures: one with a high specularity value, and another one with a slightly less specularity and inverted colors. The larger specular shine on the "positive" texture with the smaller shine of the "negative" shine resulted in a specular ring, where the actual specular hotspot was removed, but the outer rim still kept. The result is (at least for objects that are not too close to the camera to reveal that there is no real fur) quite convinving in my oppinion.

The bird's house is a rather simple CSG object with a handcrafted texture which is aligned with the broad section of the wood-parts. The sign beneath is a bicubic-patch with manually modified control-points. For a more "untidy" look, I didn't use a font to write the text, but instead drew the text by hand with the mouse, and uv-mapped the result to the patch. The tree was created using Arbarao, a freeware tool which exports meshes. Some manual tweaking was required to get the tree look like I wanted it to.
Lighting the tree was an issue by itself. Using arealights can slow down the rendering process significantly. Add to that a complicated object like the large mesh used for the tree, and it will take forever. Additionally, an arealight can create artifacts when the adaptive settings aren't set detailed enough. To cut down on the rendertime and use less complicated arealights, I resorted to lighting the tree (and the objects attached to it) with shadowless lightsources in a lightgroup. To get shadows back onto the objects, a negative light was projected through the objects, essentially creating a "shadowlight". Finally, a cone was placed inside the tree using the no_image keyword, so that it appears like the trunk throws a soft shadow with the foreground area-light.

The foreground snow was modelled using function-turned pigments. What I needed was a method to stack some snow as well as stamp footprints into it. I also needed to have flexibility for the resolution of the heightfield along with the possibility to quickly change and modify the distance between steps or their size, in case I change the size of the cat or such. This was the first time I actually worked with functions to achieve a specific effect and I hope to gather more experience with further images, as I think that functions can be quite a powerful tool. For this image, a small script would take my input and multiply and/or add functions with/to each other. It was rather simple set of macros which basically took care of "stamping" footprints into the snow and creating the small piles for the cat and the tree. The foreground snow ends roughly where the fence begins.

The Snow

The snow on the foreground tree and bird's house a new set of Macros originally designed for this image. However, they quickly evolved into something bigger and more generally useful and thus lead to the release of the Surcoat-Macros. They take care of efficiently covering an object with samples and getting rid of unwanted ones. Especially for the tree there were some issues, as Arbaro creates a tree of which the triangles of the branches stick into the trunk. The samples inside the mesh had to be removed, along with shooting tons of samples onto the tiny branches. Another set of macros then use these samples and further parses data to model a layer snow which stacks at walls and has a few settings to control minimum size for snow-particles and such. For example, the wall-check scans a hemisphere above the particle using trace() to collect data of the particle's vicinity. Dependant on various settings a height is calculated for the particle, which, when applied to several neighbouring samples, leads to the impression of snow being stacked and accumlated against walls.
The macros were applied to the tree and house, but not on the fence. The fence has a hardcoded layer of snow which places blobs onto the vertices of the beams and spheres on the top of the poles.
On every other surface the snow is actually just a texture, the trees and bushes only have a slope-map to apply snow to upward facing surfaces, and the barn's roof is textured like snow.

The Background

Beginners often make the mistake of rendering detailed foreground objects, but putting little to no work into the background. With some artistic style, this can be pulled off properly and look great, in most cases, however, you end up with a simple "spotlight on object" image.
The clue for outdoor images is to properly position the horizon and (something very important for POV-Ray Users) get rid of the horizontal line a plane creates. Place some mountains in the distance, block the horizon line with cars, houses, trees, whatever, but *please* don't make it obvious that the ground is a simple, boring plane.
For this image, I've decided upon smoothly sloped hills in the distance, achieved with a simple heightfield and a handmade function-turned pigment to adjust the hills. This alone would have been too little and boring, and I needed to further break it up. Especially with the tree in the foreground, reaching out and above the frame of the image, a simple rolling hills landscape wouldn't suffice. The tree quickly lead to a forest, which is made up of 4 trees, rotated about the y-axis and positioned pseudo-randomly to properly fit the viewing area. Bushes and grass were added to the closer forest-edge for further realism. Unless it is a planted forest, trees seldomly stand all by themselves...
With the forest to the left, the right half of the background-snowfields still were an open expanse which needed to be filled. Although a certain emptiness underlines the solitude and loneliness of the cat (also positioned in the right side of the image), one shouldn't overdo it. Instead of placing yet more trees, I decided to script a fence-macro which would take a beginning and an end position and randomly generate poles and beams. Two of these fence-lines - along with a large tree and some bushes at the corner where they meet - nicely filled the expanse visually whilst still retaining some of the open atmosphere in this side of the image.
Nontheless, the horizon was missing something, the entire image was weighted more on the left side, as many more objects were placed there. My first thought was a distant small town with a church, but a few quick tests quickly convinced me that the effort of creating a fairly realistic though low-detail town would take longer than I had time. I ended up with a barn, which was a useful suggestion my father made. Googling for a few barns I found a nice reference pic which was the base for the simple CSG background barn.

The Sky

One of the things my friends like most about my images are the media-clouds. I spend hours on picking the correct patterns, combining them, turbulencing them properly, setting sufficient sampling and, above all, coloring them properly for an artistic impression. Although I often look at the source of older clouds, I *never* just plug in the same settings or do a quick and dirty "copy-paste" job. The clouds for all scenes are always handcrafted for the image.
At first, I wanted to have a pure blue sky, to have some contrast in an otherwise more or less white image. As a measure for love of detail I placed the moon.
Now, the moon-texture wrapped onto a sphere would normally result in a sphere hanging in the sky with a black rearside. How did I manage to fade from moon to blue sky? It's simple, although a little tracing intensive: the sky is actually a small shell filled with colored emission media. Near the horizon, it is colored more white and a gradient takes care of fading to blue. Since this effect isn't really complicated, very few samples were sufficient (actually, 1 was min and 3 was max) to just get the blue color onto the sky. Thus, the black background color and the black shadow of the moon are taken care of, where many would otherwise have used the simple sky_sphere, which of course does not have this "special effect".
The clouds are yet another layer in front of the sky-shell. As the shell is hemispheric, but the ground is not, I had to take care that the clouds don't look like they were mapped onto a hemisphere, but not overdo it to have it look like I've just placed a plane at the end of the hills and textured some clouds onto it. The turbulence had to be just right as well as the thickness and color. Important was to get a more vanilla color than yet another shade of white, and avoid creating too prominent clouds which would attract the view.
Another final note concerning the rendertime for the sky: one might think that the clouds, made of high-sampled scattering media, required most of the 74.5 hours rendertime, but the sky in fact rendered slightly faster than the remaining image. Why? Because I've used an arealight to light the forest, and now imagine how intensive tracing arealights through thousands of complicated trees is...