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:
- Using a trial version of a conversion program called Deep Exploration,
I converted the publicly avaiable Stanford Bunny model into a Lightwave object.
- 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.
- 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.
- 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.
- 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.
- 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.
- Tweaking the color and materials used to render the bunny and the hairs
took a long time.
- Setting up the final scene:
- The key was hand-made in Lightwave and then ported to lrt. Then manually
positioned.
- 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 ]