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.