top of page

RIB Wrangling

                            ~Kettle Assignment~

For this project, I was given the task of creating an original teapot in Cutter.

 

As stated by Malcolm Kesson:

 

     "The purpose of this assignment is to provide a context in which you can learn the basics of Pixar's 3D scene description language - generally referred to as Rib (RenderMan Interface Bytestream). You are to model, shade and light an interesting 3D composition directly as a Rib file using a text editor. The use of interactive software such as Maya or Houdini is not permitted. The principle model in your scene will be be a kettle. "

 

 

Basically I had to model, texture and light a teapot using Cutter. The catch was that I had to use RIB Archvies, which I have never done before.

 

 

For more information about Cutter, visit http://fundza.com/index.html for more details.

 

 

Final Beauty Shots

My first final render has a projection of 30 and the second final render has a projection of 20. With each projection, I had to change the translate z.

Models & Inspirations

The picture, Teapot 01, was my main inspiration for this project. After learning how to use cutter and the limits of the geometry given, I just did my own thing and my final teapot came to be.

Textures

For the brick wall, I used a displacement map of the same texture and a "float Km" of 0.04. I did not have to change any of the "st" for my texture maps. Although, in the beginning before I settled on these textures, I did test out other textures and played with the "st" coordinates.

RIB Snippets

 

 

 

Teapot Body:

 

     AttributeBegin

             ReadArchive "materials/shiny_pot.rib"

         TransformBegin
             Attribute "identifier" "name" ["Pot"]
             Color 1 1 1
             Translate 0 1 0
             Rotate 90 1 0 0
             Scale 1 1 1.5
             Sphere 1 -0.3 0.8 360
         TransformEnd

     AttributeEnd

 

 

Teapot Sprout:

 

     AttributeBegin

              ReadArchive "materials/shiny_pot.rib"

         TransformBegin
             Attribute "identifier" "name" ["Spout"]
             Color 1 1 1
             Translate 0.8 1.4 0
             Rotate 180 0 1 0
             Rotate 180 1 0 0
             Rotate 180 0 1 0
             Scale 1 1.5 1
             Torus 0.6 0.1 0 360 90
         TransformEnd

     AttributeEnd

Parts of my code:

Brick Wall:

 

     # txmake -mode periodic ../tiffs/brick_02.jpg ../textures/brick_02.tex

 

     "string displacementMap" ["brick_02.tex"]

     "float Km" 0.04

 

 

Wood Countertop:

 

     "string surfaceMap" ["wood_01.tex"]

 

     "float specularGain" 3.5

Bouce Light # 1

 

     TransformBegin #BounceLight
             Translate 8 -1 -7
             Rotate 90 0 1 0
             Rotate -90 1 0 0
             Rotate -15 0 1 0
                  ReadArchive "cutrAxes.rib"
             Scale 15 15 1    
       LightSource "ppAreaLight" "bouncelight" "float intensity" 0.8
        
    TransformEnd

Cup Body:

 

     AttributeBegin

             ReadArchive "materials/shiny_pot.rib"

         TransformBegin
             Attribute "identifier" "name" ["Pot"]
             Color 1 1 1
             Translate 2 .55 0
             Rotate 90 1 0 0
             Scale .5 .5 .75
             Sphere 1 -0.3 0.8 360
         TransformEnd

     AttributeEnd

 

 

Bottom of Cup:

 

     AttributeBegin

              ReadArchive "materials/shiny_pot_top.rib"

         TransformBegin
             Attribute "identifier" "name" ["Bottom_of_Cup"]
             Color 1 1 1
             Translate 2 0.501 0
             Rotate -90  1 0 0
             Rotate -180 0 1 0
             Scale 1 1 1
             Disk 0.5 0.35 360
         TransformEnd
    
AttributeEnd

Left Wall:    (*NOTE: The "int transmission" is 0 so the bouce light can go through it and hit the teapot and cups.)

 

     AttributeBegin #Left Wall
             ReadArchive "materials/shiny_wall.rib"
        

      Attribute "visibility" "int specular" [1] "int diffuse" [1] "int transmission" [0]  

      Attribute "trace" "int maxdiffusedepth" [1] "int maxspeculardepth" [2]

 

             Scale 10 10 1
             Translate 0 0 -4.5
             Rotate 90 1 0 0
             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

Teapot Placement:

 

         AttributeBegin #Teapot
             Translate 2 -0.01 -1.7
             Rotate -55 0 1 0
             ReadArchive "TeaPot3.rib"
         AttributeEnd

 

Sideways Cup Placement:

 

     AttributeBegin #Side cup
             Translate -2 0.5 -0.5
             Rotate 90 1 0 0
             Rotate 45 0 0 1
             ReadArchive "cup_side.rib"
         AttributeEnd
   

Depth of Field

Using Depth of Field in Cutter was a lot easier than I thought it would be. With just a small command of DepthOfField and only three numbers made the usually hard to understand DOF really, really simple.

 

 

For my first shot, I focused on the teapot.

     The code: DepthOfField     2.7      1.8      2

 

For my second shot, I foucsed on the sideways cup.

    The code: DepthOfField     7.2        1        5

Animation

For the animation, I wanted to rotate the camera to get different angles of the teapot and cups. In order to save render time, I made the animation at 720 by 480.

Conclusion

     In the end, I really enjoyed using Cutter. I think of it as "easy" coding. Figuring out what geometry would work for my teapot was fun, and at first it was a lot of "hit or miss". Texturing was the funnest part of this project. I don't usually like to texture, but it was very simple in Cutter and I found that I liked finding different textures and seeing which ones would work the best. The least thing I enjoyed was lighting, because I do not like lighting at all. Nevertheless, I understand the importance of RIB Archives and now have the ability to use them whenever necessary.

  • Facebook Square
  • Pinterest Square

© 2015 by AMBER EVANS

 Proudly made by Wix.com

bottom of page