RENDERMAN .RIB
DAVID GRZESIK | Visual Effects Artist

Renderman .rib File Control


This project was a study and exercise into the Renderman rendering engine. All of the work completed, modeling, texturing, materials, and rendering, was all done through pure code manipulation of the .rib renderman files that are read directly by the renderman engine. A special thanks to my teacher Malcolm Kesson.

I was rather happy with the rendering of the final image. Modeling of course is pretty tough to do in this method but getting the materials right was definitely one of the harder things to do purly due to the lack of options. Having no GUI for material creation made it rather tough to keep track of various textures and material options and connections. This made it rather tough to balance out different problems like differences in color and specularity. I also seemed to completely forget about various options that were extremely important like specular type (Artistic or Physical).

Format 1280 720 1
Display "untitled" "it" "rgba"
Projection "perspective" "fov" [20]
DepthOfField 5 1 9

Translate  -1 -1 9.3
Rotate -15 1 0 0 #elevation
Rotate  19 0 1 0 #orbital
Scale 1 1 -1
#DisplayFilter "PxrBackgroundDisplayFilter" "background" "color backgroundColor" [1 1 1]
WorldBegin

AttributeBegin
Scale 2 2 2
#ReadArchive "cutrAxes.rib"
AttributeEnd

AttributeBegin
ReadArchive "../archives/lights/teapotLighting.rib"
AttributeEnd

AttributeBegin
#ReadArchive "../archives/materials/cyanMetalPot.rib"
Translate 2 0 -4
Rotate -20 0 1 0
Scale .8 .8 .8
ReadArchive "../archives/geo/greenTeapotGeo.rib"
AttributeEnd


.....other teapot copies.....


AttributeBegin
Translate .13 0 .1
Rotate 120 0 1 0
Scale 8 8 14
ReadArchive "../archives/materials/woodTable.rib"
Polygon "P" [-0.5 0 -0.5  -0.5 0 0.5  0.5 0 0.5  0.5 0 -0.5] 
"st" [0 0  0 1  1 1  1 0]

AttributeEnd


Compared to the reference, the image is pretty spot on. I picked these teapots due to their straightforward design. You can break up the object into much more basic objects, mainly cylinders and toruses. Not only that, but since they are all the same teapot, all I would have to do is model one and then copy the code over and over and changing higher level attributes on that code to translate the entire object or change the material.

The geometry was quite a grind to get through but a very interesting experience. Constructed from basic primitives (hyperboloid, disk, torus, and cylinder) the hardest part was to blend inbetween these harsh primitives. Some of these harsh meetings of geometry was smoothed with the interior side of a torus that was only about 15-20 degrees shown to be seen as more of a bevel than a harsh line. Each piece of geometry had to be hard coded in with all specific values on each individual parameter. Here's a quick snippet of how to create the very bottom base of the teapot.

#Start Base

#Bottom

AttributeBegin
ReadArchive "../archives/materials/cyanMetalPot.rib"
AttributeBegin
Translate 0 .1 0
Rotate 90 1 0 0
Torus 1 0.1 200 360 360
AttributeEnd

#Blending Geo  
AttributeBegin
Translate 0 .228 0

Rotate 90 1 0 0
ReverseOrientation
Torus 1.025 0.03 100 180 360
AttributeEnd

#Bottom Connecting Geo
AttributeBegin
Translate 0 .1 0
Rotate -90 1 0 0
Hyperboloid  0 1.05 -.1    0 1.1 0   360
AttributeEnd
AttributeEnd

#End base


The materials for these tea pots are rather straight forward, it was more of a subtle balance between diffuse and specular values. Once the values were established the same material was used with changes to color values. Color values were not always representational as the color rendered was typically lighter due to the specular nature of the material and the brightly lit scene.

The lighting was extremely annoying to create due to the lack of an interface. The main lighting is done by an HDR on a dome light with a subtle fill that creates a nice highlight followed by a nice light contrasting orange rim light. A lot of tweaking was needed to get them perfectly placed, however it was absolutely worth it, the lighting came out perfectly.


AttributeBegin
Attribute "visibility" "int indirect" [0] "int transmission" [0]
Attribute "visibility" "int camera" [0]
Rotate 50 0 1 0  # oribital
Rotate 200 1 0 0 # elevation
Rotate 180 0 1 0 # do not change
Light "PxrDistantLight" "PxrDistantLight1"
"float intensity" [25000]
"float exposure" [0]
"float angleExtent" [0.53]
"color lightColor" [1 1 1]
"int enableTemperature" [1]
"float temperature" [3100]

............

AttributeEnd


AttributeBegin
Attribute "visibility" "int indirect" [0] "int transmission" [0]
Attribute "visibility" "int camera" [0]
Rotate 110 0 1 0
Rotate -90 1 0 0

# txmake -envlatl ../tiffs/hdrs/canada_montreal_loft_max_sunny.exr ../textures/name.env.tex
Light "PxrDomeLight" "PxrDomeLight1"
"float intensity" [1.5]
"float exposure" [0]
"color lightColor" [1 1 1]
"string lightColorMap" ["../textures/name.env.tex"]
"int enableTemperature" [0]
"float temperature" [7000]

.............

AttributeEnd

AttributeBegin
Attribute "visibility" "int indirect" [0] "int transmission" [0]
Attribute "visibility" "int camera" [0]
Rotate -50 0 1 0  # oribital
Rotate 180 1 0 0 # elevation
Rotate 150 1 0 0 # elevation
Translate 8 2 8
Scale 2 2 -1
Light "PxrDiskLight" "PxrDiskLight1"
"float intensity" [15]
"float exposure" [0]
"color lightColor" [1 1 1]
"int enableTemperature" [0]
"float temperature" [6500]

...........

AttributeEnd