Visiting Artist Series   Next Artist 

Glenn McCarter rendered "The Drama of Cinema" as an entry to the Internet Raytracing Competition. The theme for this competition was "Arts and Entertainment," so Glenn chose to simulate the look of a 1940's-era classic motion picture. The movie scene is black-and-white, except for a single element which has been "colorized" for dramatic effect.

About The Artist:

Glenn is a self-taught analog and digital artist, who had worked with pen-and-ink and airbrush techniques prior to beginning his exploration into 3D digital artwork. He is "fascinated with the ease of managing light and shadow with raytraced 3D rendering, which is a key to evoking emotion in an image." You can send e-mail to Glenn at gmccarter@hotmail.com, or click here to visit his web site.

Behind The Scenes:

Glenn rendered this image with POV-Ray, a freeware rendering package. Instead of using an interactive graphic interface to model this 3D scene, Glenn typed in text-based descriptions for the objects, lights, and textures. Most of the objects are build with a Constructive Solid Geometry, that can also be described with a text-based scene description. Some slightly edited code appears below, that could give you an idea of what Glenn had to type to create this work.

The puddle and wet pavement textures on the street and sidewalk are a combination of two reflective textures. One texture has small, "grainy" bumps to simulate actively-rained-upon surfaces, and the other has large "wavy" bumps to look like puddles of slightly deeper standing water.

The "movie scene" image took 6 days to render on his Pentium-90 computer, for a single frame at 1200x720 resolution. The trash can is not just a transparency mapped surface, instead the whole can is actually built out of "blob" objects (similar to metaballs) assembled into a large, complex structure. The biggest slow-down for this scene was that almost every object (including the raindrops) is reflective, and the reflections are raytraced up to a limit of 10 bounces off of reflective surfaces. Finally, the raytraced movie scene was "projected" onto the screen as an image map, and lit brightly. The rest of the theater is dimly lit by a small light source near the projector, to illuminate the stage and curtain.

As you may have guessed, Glenn's final image was the winner of the competition.


Sample POV-Ray descriptions used in the scene:

//----------- Lights -------------------
#declare OverheadSpotlight =
  light_source {
    <-40, -24, 10*Feet>
    color rgb <.96,.98,.91>
    point_at <0, 0, -10>
    radius 16    // degrees fully lit
    falloff 24   // degrees no lighting
    tightness 1
    fade_distance 8*Feet
    fade_power 1

//----------- Textures -------------------

// a relatively simple texture:
#declare GreyStucco =
  texture {
    pigment { color rgb<.2,.2,.2> }
    normal { bumps 0.4 scale 0.6 }
    finish { ambient .02 specular .3 roughness .08 }

// and a more complex one:
#declare SteelSignpostTexture =
  texture {
    pigment {
      granite // mix the following colors in a rough pattern
      color_map {
        [ 0.0  color rgb<0.24,0.34,0.21> ] // start with rust
        [ 0.5  color rgb<0.55,0.54,0.57> ] // transition to steely grey
        [ 1.0  color rgb<0.48,0.44,0.49> ] // then deeper grey
      scale <.09,.09,.52> // make long streaks
    normal { waves 0.15 scale 1.4 }
    finish {
      ambient .02 specular .95 roughness .005 metallic
      brilliance 3 reflection .4

//----------- Objects -------------------

// a simple object:
#declare StreetLightPost =
  cylinder {
    texture { SteelSignpostTexture }

// and a more complex CSG (Constructive Solid Geometry):
#declare BlockOfBuildings =
  union {
    object { Store1 translate <0,6,0> }
    object { Residence translate <23*Feet,12,0> }
    object { LocalBar translate <44*Feet,3*Feet,0> }
    object { Store2 translate <74*Feet,1*Feet,0> }
    difference {
      object { SideWalk }
      box { // subtract hole for grating
        texture { SideWalkTexture }
        scale <2.2,1.5,1>
        translate <24*Feet,-5,0>
    } // end difference
    object { GratingWithSteam scale <2.2,1.5,1> translate 
<24*Feet,-5,.15> }