If you review the first glass globs page, you'll notice that the black, featureless shadows look quite unnatural. The problem is that the glass should be focussing distorted images of the light sources onto the surface underneath -- "caustics".
The RenderMan standard does not specify a direct way of generating caustics, but the raytracer I'm using has a non-standard extension for doing them: You specify a bogus light with a "caustic" shader, and for the glass object(s) intended to focus the caustics, you specify specular and refraction colors together with a refraction index. Not fantastically elegant, but fun all the same.
The .rib file tweaks I used to get caustics look so:
# This part goes right after the WorldBegin: Attribute "caustic" "maxpixeldist" [10] Attribute "light" "integer nphotons" 45000 LightSource "caustic" 7 ... # This part goes at the top of the glass glob object definition: Declare "specularcolor" "color" Declare "refractioncolor" "color" Declare "refractionindex" "float" Attribute "caustic" "specularcolor" [1. 1. 1.] Attribute "caustic" "refractioncolor" [1. 1. 1.] Attribute "caustic" "refractionindex" 2.2
A refraction index of 2.2 is more like diamond than glass, but this is just for giggles, so why not?
(This renderer's caustic hack didn't work for me using area lights -- I had to switch to a spotlight. I'm not sure why -- Larry's dresser.rib demo does caustics fine with an area light source.)
Here is a sequence matching the first glass glob sequence, but this time with caustics.
The most noticable remaining problem (to me at least) is the lack of rainbows -- we're using a very simple, unrealistic refraction model in which all colors refract equally.
I think the results are still quite pretty!
As usual, click on the thumbnails to see the full resolution images.
Image 1: The caustics make particularly clear how poor is my
initial approximation to a sphere, based on 16 bicubic patches.
One could tune them to do a lot better, but that's not my
current interest. Anyhow, the X-shaped caustics look cool! :)
.
(./glob --lumpy=0.00 --glass --caustics.)
Image 2: As with the first glass globs sequence, we step from
lumpy=0.0 to lumpy=0.95 in steps of 0.05 -- so this image is lumpy=0.05:
.
(./glob --lumpy=0.05 --glass --caustics.)
Image 3:
.
(./glob --lumpy=0.10 --glass --caustics.)
Image 4:
.
(./glob --lumpy=0.15 --glass --caustics.)
Image 5:
.
(./glob --lumpy=0.20 --glass --caustics.)
Image 6:
.
(./glob --lumpy=0.25 --glass --caustics.)
Image 7:
.
(./glob --lumpy=0.30 --glass --caustics.)
Image 8:
.
(./glob --lumpy=0.35 --glass --caustics.)
Image 9:
.
(./glob --lumpy=0.40 --glass --caustics.)
Image 10:
.
(./glob --lumpy=0.45 --glass --caustics.)
Image 11:
.
(./glob --lumpy=0.50 --glass --caustics.)
Image 12:
.
(./glob --lumpy=0.55 --glass --caustics.)
Image 13:
.
(./glob --lumpy=0.60 --glass --caustics.)
Image 14:
.
(./glob --lumpy=0.65 --glass --caustics.)
Image 15:
.
(./glob --lumpy=0.70 --glass --caustics.)
Image 16:
.
(./glob --lumpy=0.75 --glass --caustics.)
Image 17:
.
(./glob --lumpy=0.80 --glass --caustics.)
Image 18:
.
(./glob --lumpy=0.85 --glass --caustics.)
Image 19:
.
(./glob --lumpy=0.90 --glass --caustics.)
Image 20:
.
(./glob --lumpy=0.95 --glass --caustics.)
Image 21: Just for giggles, here is one bonus image with
lumpy=1.5. At this setting, the surface is becoming wildly
self-intersecting, resulting in thin sheets which focus
intense caustics. Not very physically realistic, but spectacular:
.
(./glob --lumpy=1.5 --glass --caustics.)
I just can't resist: Here is
image 21 at 1280x1024 resolution.
Source used is here.
Back to Cynbe's "Silly RenderMan Tricks" Page.