T. Burge
The short answer:
- Specify the vertices in clockwise order from the camera's point of view; or
- Call RiReverseOrientation to flip the "current orientation" first.
If you can make one square with the normal facing the camera, then you can
use translation and rotation to create the other five faces, being careful
to make the normals point outward from the cube.
There's a whole lot going on behind the scenes here. There are three things
to worry about: 1) the current coordinate system; 2) the geometric primitive
normal; and 3) the current orientation. (Note: The "current orientation" and
"the orientation of the current coordinate system" are two different concepts.)
1) The initial camera coordinate system is left-handed. Transformations such
as reflection can flip the orientation of the current coordinate system.
2) Each geometric primitive has a well defined normal. For polygons, the
normal is perpendicular to the plane of the polygon and is in the direction
of a viewer who would see the vertices in clockwise order.
3) The current orientation is a RenderMan graphics state variable. It can
take on one of two values: left-handed or right-handed. The default value
is left-handed. Whenever the orientation of the current coordinate system
flips, so does the current orientation variable. The user can directly modify
the current orientation with RiOrientation() or RiReverseOrientation().
In the end, whenever the current orientation does not match the orientation
of the current coordinate system, normals are automatically flipped.
Much of this article was paraphrased from the spec:
http://www.pixar.com/products/renderman/toolkit/RISpec/section4.html#Orientation
http://www.pixar.com/products/renderman/toolkit/RISpec/section5.html#Polygons
Rick LaMont
Dot C Software, Inc.
http://www.dotcsw.com/