In Search of the Perfect Grape:
Modeling Translucent Objects Using Subsurface Scattering
Philip Beatty and Joong Ho (Johann) Won
CS348b Final Project
Introduction
Holding a grape up to a bright light, you will see that light travels completely through the grape, illuminating some of the internal structure of the grape. We wanted to capture this translucency as well as study how light scatters inside material. See our initial proposal.
Here are a couple of grape pictures we used as reference, obtained from http://www.neilblevins.com/cg_education/translucency/translucency.htm
|
Our Approach
We modeled the grape as an algebraic surface, taking advantage of our code from Assignment #1. We modeled light transport within the grape using the hierarchical dipole BSSRDF technique described in [6]. Because the surface of the grape curves around on itself, making all surface points relatively close together, we ended up having to delve fairly deep into the octree to get decent pictures. Thus the hierarchical technique did not give us the kind of speed increase suggested by the paper. We used a surface texture to account for the surface blemishes of the grape. The internal structure which is visible when light shines through a grape consists of veins located 1-2 mm below the surface (compared to the overall dimensions of our grapes 20x20x30 mm). Since these veins are 'lit up' by light traveling through the grape, we cannot capture this effect through a single-scattering term. As an approximation, we assumed that the veins were on the surface but were only seen by light entering the grape from the 'far side'. Thus, we used a vein texture and the angle from the single-scatter direction to weight the radiance integral. We used a photon map to allow us to capture indirect lighting. As in [6], we treated the grapes as diffuse reflectors when making the photon map.
Difficulties
Consider the following properties of a grape
It is the sum of these properties, rather than one in particular that make grapes so difficult. The first property suggests that a volume rendering/participating media approach is necessary ([2], [3]). However, since a grape is highly scattering (a photon will bounce on average about 600 times before being absorbed) using a volume photon map is prohibitive. Below is a ball of milk which we tried to render using volume photon mapping. Even after 5 million photons in our photon map, we couldn't get rid of the noise. This is indicative of highly scattering materials and is the reason, we believe, why Jensen does not use volume photon mapping to render milk [5] and [6]. A highly scattering material like milk can be rendered using a dipole approximation and the BSSRDF, however this model assumes a homogeneous medium. This works for milk because milk does not have any internal structure. Our problem was: how do we use an approximation like the BSSRDF in [5] and [6] while still capturing the visible structure of the grape?
Volume
Rendering of Ketchup and Milk Balls
Ketchup is less scattering and
more absorptive, so it looks smooth at 100K photons. Milk still looks
noisy at 5M photons.
Ketchup 100 K Photons | Milk 100 K Photons | Milk 3 M Photons | Milk 5 M Photons |
We also had some difficulty due to the geometry of the grape. The dipole approximation is developed using the approximation of a flat semi-infinite medium. A grape, where the surface curves back, behind itself, is not even close to a semi-infinite medium.
Another difficulty was choosing the decay coefficients. In [5], Jensen gives decay coefficients for some materials, but sadly not for grapes. We used the parameters for milk while developing our system. We then had to use trial and error to get good parameters for a grape.
Results
References