TITLE: Marble
NAME: Philip Chan
COUNTRY: Canada
EMAIL: p_chan@shaw.ca
WEBPAGE: www.ucalgary.ca/~phichan/index.html
TOPIC: Minimalism
COPYRIGHT: I SUBMIT TO THE STANDARD RAYTRACING COMPETITION COPYRIGHT.
JPGFILE: pc_marbl.jpg
ZIPFILE: pc_marbl.zip
RENDERER USED: 
    POV-Ray 3.6 (Windows)

TOOLS USED: 
    Adobe Photoshop LE 5.0

RENDER TIME: 
    0 00 00 parse, 2 48 52 photon, 7 16 07 trace, 10 04 59 total

HARDWARE USED: 
    Athlon 2400+ XP, 512 Mb RAM

IMAGE DESCRIPTION: 
    The first minimalist image that comes to mind for many
people in the context of raytracing is the classic sphere on a checkered plane.
This entry represents an attempt to create something suitably minimalist in
composition, but still sufficiently complex to be interesting from a technical
perspective.


DESCRIPTION OF HOW THIS IMAGE WAS CREATED: 


First off, special thanks to Mike Williams, whose tutorial on the rendering
speed of objects with holes (http://www.econym.demon.co.uk/holetut/index.htm)
allowed the render time of this image to be kept reasonable.

This image is quite different than the ones I've done in the past in the sense
that there were really only two objects to model:  the marble and the tile.
The marble is CSG, and being the main focus of the image, uses a layered
texture and detailed interior properties.  The tile is an isosurface,
implemented as a macro so no two tiles will look exactly the same.  Add some
atmospheric media, photons, a spotlight, and a few fill lights, and that's it.

PS.  I know the tiles are horribly out of scale with the marble for a realistic
image, but maintaining the "sphere on checkered plane" look was more important.

For those that are interested, a more detailed and technical description of
individual components follows:

Marble:

The marble is a sphere with various CSG operations to create the "defects" on
the surface as well as inside the marble.  The scratches are created by
differencing sections of torii generated using a random height and major radius
appropriate to that height, and than rotated randomly.  The height allows the
scratches to appear slightly curved, as the major radius of each torus is not
the same as that of the sphere.

The chips (which aren't all that noticeable because of the bubbles), are
created by differencing a blob, with components placed using a nested loop (the
first loop generates a "centre" position for a chip, and then the second
generates several blob components randomly placed near centre position by means
of rotations.  Both the surface effects (chips and scratches) are only placed
in the front (i.e. visible portion) of the sphere, since when they are viewed
through the sphere they are magnified by refraction and look far too sharp and
clear, and I couldn't find a way to cause blur objects on the other side.

The bubbles are where Mike Williams' tutorial mentioned above really helped.
They are created using by using a union of spheres with an interior ior of 1.0
instead of actually using a difference to remove parts of the sphere.  While
the source does include a switch to change which method is used, and I had
intended to render the scene using the difference method to see the difference,
I always gave up before I ever completed the render because it was taking way
too long.  The random locations are generated using polar coordinates, and the
random value used to generate the distance is square rooted in order to avoid a
large number of bubbles begin generated near the centre.

A three layer texture is used:  the base glass textures, and than two mostly
transparent textures for the dirt (one for smaller spots and one for larger
ones).  The specular value is purposefully set low to create the impression
that the highlight is on the far side of the sphere (again, to be consistent
with the idea that there should be some blurring/absorption of light as it
passes through the sphere).  The interior, obviously, has in ior and also uses
a fade colour and a slight bit of dispersion.  The dispersion is used primarily
for the effect on the caustics (photons), and you probably can't see the
difference from the sphere alone.

Finally, the sphere is scaled slightly to counteract the effects of perspective
distortion, since it isn't in the centre of the image (i.e. at the camera's
look_at point), but is still the focus of the scene.

Tiles:

The tiles are isosurfaces created using a basic function to define the height
of the tile, added with four functions to define the edges.  A turbulent agate
pigment function is used to create the rough surface, multiplied with a
function ranging from 0 to 1 to smooth it out before it hits the edges of the
tile.  The tile is implemented as a macro, where an random "translation" is
applied to the coordinates supplied to the pigment function for each instance
of the macro so that the surface of each tile is different.

The tiles are placed in a nested loop, beginning with the row of tiles at the
bottom of the image.  The number of tiles placed in a row increases by two for
each iteration of the outer loop, which avoids placing a lot of tiles outside
the camera's view (although it still does "waste" a few).  The pigment of the
tiles is the absolute value of the sum of the two loop counters, modulo two.
After 15 rows of tiles, it reverts to a "traditional" checkered plane with the
same texture as the tiles.  Although there isn't any more grout or height to
the tiles, between the distance and the focal blur, you really can't see the
change.

The texture for the tiles has an ambient of zero so that they fade to black in
the distance.  I liked the look this gave the image, and also the fact that
this eliminated the focal blur artifacts that tended to show up in the distance
when the checkers got smaller and smaller in the image.

Lighting:

The scene uses two global light sources:  the spotlight showing in the
atmospheric media, and a dim fill light coming from the opposite direction.
The tiles also use a dim fill light, placed at the same location as the spot
light, to increase the level of light on the floor.  Both fill lights use
attenuation.

