Nik Baltatzis
CS 447 - Image Synthesis
Final Project
Introduction:
The goal of this project was to render bubbles with the effects of thin
lens interference. My plan was to do this procedurally by simply using
spheres and evaluating a noise function on the sphere to determine the
thickness at that point. This thickness was to be used to determine the phase
difference for different wavelengths and subsequently the color created by the
interference. To try to make the rendering look cool I used image based
lighting.
Thin Film Interference:
A bubble is actually a spherical film or membrane with varying thickness.
When white light intersects a bubble, some of the light is reflected off
the outer surface of the membrane and some is transmitted through. Then
some of the transmitted light reflects off of the inner surface of the membrane
and some passes through. The ray reflected off of the inner membrane can
interfere with the ray reflected off of the outer membrane when the bubble
film is thin enough. Depending on the thickness, and the lights angle of
entry and wavelength, certain colored light can be removed by the interference
making the complimentary color visible.
Similar interference can occur with other films such as oil on water.
My Implementation:
I decided to use the sphere object with a new material called thin_film to
render bubbles procedurally rather then modeling a bubble membrane in a modeling package.
The new material I created was based off the glass material but with a few
changes. Instead of using a SpecularReflection BRDF like the glass material,
I created my own BRDF called ThinFilmReflection. The Thin_film material uses
the angle of ray entry and thickness of the bubble to determine the phase
difference for red, green, and blue light.
The equation for phase differences is as follows:
The three phase differences
are passed to the ThinFilmReflection BRDF where the resulting color is determined.
This color is a function of the incoming light and phase difference and is
determined by a three sums that yield an CIE XYZ value using the following equations:
S is the relative spectral irradiance, R is the reflectance, and x,y,z bar are the CIE tristimulus values.
This value is then
converted to a RGB value using a matrix multiplication. Clipping is needed to
make sure the RGB values are in the appropriate range because certain CIE values
cannot actually be represented in RGB.
I originally intended to vary the thickness of the bubble slightly by
using a Perlin noise function but my attempts yielded unfavorable results.
Results:
My resulting images were by no means complete or correct. What I obtained was
what appears to be two reflections both on top of the sphere. I believe this
occurred because I did not properly modify the glass material in order to
produce a bubble which obviously does not invert an image like a solid glass
sphere does. The one goal I did accomplish was to produce interference colors,
and furthermore they are in bands like they should be for a fixed width.
The use of a varying width, if implemented successfully, should have made the
color patterns much more interesting.
My rendering shows three bubbles rendered with the uffizi light probe using Image Bases Lighting:
Sources:
Dias, Maria Lurdes. "Ray Tracing Interference Color" IEEE Computer Graphics & Applications. 1991.
Jay Gondek, Gary Meyer, Jonathan Newman. "Wavelength Dependent Reflectance Functions"
Department of Computer and Information Science. 1994.