About the making of my bunnies

The final scene is primarily geometry-dependent with relatively few lrt-specific modifications. This is an unfortunate side-effect of the problems I ran into dealing with such an enormous data set. The final scene is composed of nearly 2.8 million Shape objects and took approximately 3 hours to render with only 4 samples per pixel. Antialiasing is very important as can be seen by comparing the Keychain Bunny image to the Evil Space Bunny image. The Evil Space Bunny took nearly 6.5 hours to render with 256 samples per pixel! The result is that it is one of my favorite images.

So, the overall process looks something like this:

  1. Using a trial version of a conversion program called Deep Exploration, I converted the publicly avaiable Stanford Bunny model into a Lightwave object.
  2. After looking around for hair-modeling packages and found the Sasqatch Lightwave plugin. I didn't want to spend time trying to generate the hairs myself, but ironically I spent an enormous amount of time with the modeling package tweaking parameters so that the resulting hairs looked good. I ended up having to partition the bunny into separate hair zones of different length. For example, the inside of the ears have very short hair. There are 6 different types of hair zones in the final bunny: Ears, eyes (no hair), nose, head, body, and tail. I also texture mapped the base bunny model so that any areas that show through are appropriately colored.
  3. Using a special version of the Sasquatch plugin that can dump the generated hair spline knots, I parsed this text file (over 400 MB!) and condensed this into a binary file (~15 MB) for future use.
  4. I then designed a program that will take both the (already fairly large) Stanford Bunny model and this enormous hair dataset and exported it to RIB files for use with lrt.
  5. Unfortunately, the hair exporting did not use the same coordinate system as the model or even the lightwave scene it was generated from. Worse, none of the modeling programs I had available to me could load both datasets at once. So, in order to line the two up, I had to manually adjust the position and rotation and re-render in lrt. That took forever.
  6. Once the two were finally aligned, I could start working on my algorithms. Unfortunately, at this point the project was almost due and I didn't have time to implement both a Spline shape for each of the hairs and then the subsurface hair scattering. Instead, I concentrated on making what I had look nice. For the bunny's eyes, I wanted to have the effect of a red pupil within a glass sphere to get the nice highlights. However, simply using the glass material didn't work -- because the outer glass sphere was still casting shadows! Furthermore, modifying this required that I actually modify the shape class itself to accept a parameter as to whether or not it casts shadows. Aside from numerous bug fixes to the code, this is the primary modification that I made to lrt.
  7. Tweaking the color and materials used to render the bunny and the hairs took a long time.
  8. Setting up the final scene:
    1. The key was hand-made in Lightwave and then ported to lrt. Then manually positioned.
    2. The chains were individually and manually modeled and positionied in lrt.

The final set of RIB files for the final scene requires about 214 MB, so I'm not going to include it here.

Jump to: [ "Keychain Bunny" ] [ "Evil Space Bunny" ] [ "XBunny" ] [ About the bunnies ] [ bunny progress ]