|
Introduction
This project represents my first attempts at procedural shading. The scene is reminiscent
of a view of San Antonio's Riverwalk where
a footbridge frames the colorful umbrellas of Casa Rio.
I noticed the scene during this year's SIGGRAPH and took a few pictures. The photos turned
out mediocre at best, but they were sufficient to serve as a reference for this assignment.
The rendered scene is not intended to be a photo-realistic reproduction of the real-world scene.
Certain things were changed or omitted for artistic reasons, while others (such as plants and
trees) were omitted due to time constraints.
Overview
I chose to do off-line rendering. I selected
BMRT over PRMan since I wanted ray-traced reflections in the water. (As an aside, Release 11 of PRMan
handles ray tracing. However, we have an earlier version, I believe.) For modeling, I used
Rhino, which is a NURBS modeling package for Win32. Since this
is a shading assignment, not a modeling assignment (and since I am novice modeler, to say the least),
I tried to keep the model relatively simple. Most surfaces are flat, with detail added by displacement
and surface shaders. Click on the thumbnail to the right to see a rendering of the model with no shaders.
Stone bridge, walkways, walls
The various stone surfaces were created using a surface/displacement pair based on
Steve Worley's cellular noise. Each surface has an st parameter space that defines a grid.
The center of each grid cell is jittered, and then a basis function is calculated based on
the distance between a particular jittered point and the closest point to it. This function
is called F1. Similarly, the function based on the distance between a particular jittered
point and the second closest point is called F2. As it turns out, F2-F1 produces patterns
that resemble cobblestone. The amount of jitter controls the randomness of the resulting
pattern. Thus, the gray wall in the background used a jitter value near zero, while the
bridge and walkways used a jitter value closer to one.
The displacement shader uses F2-F1 to transition from low grout areas to high rock areas.
The smoothstep function is used to make the transition gradual. A separate smoothstep
call adds a slight bevel to the rock edges. Lastly, the rock surface is perturbed with
fractional Brownian motion (fBm). The surface shader uses the position of the closest
point to randomly adjust the rock color. Then, it uses F2-F1 to transition from grout
color to rock color. Again, the smoothstep function is used to make the transition gradual.
Water
The water features a simple displacement shader for ripples and a somewhat more
involved surface shader to produce antialiased ray traced reflections. The ripple
shader uses the method suggested by F. Kenton Musgrave in Texturing and Modeling:
a Procedural Approach. Specifically, it displaces the surface with two octaves
of low-amplitude fBm. The surface shader is based on the
stochastic RayTrace function presented in Advanced RenderMan: Creating CGI for
Motion Pictures. My version has been simplified somewhat to perform non-jittered
supersampling. It uses the RenderMan Shading Language's built-in derivative functions
to account for the size of the surface patch. It also offsets the reflection vector
based on the local surface curvature.
|

|
|
San Antonio Riverwalk.
|
©2002 JES
|
<< Prev Next >>
Go to page: 1 2 3
|