Subdivision Surfaces & Subsurface ScatteringPradeep Shenoy & Ian Simon |
For our final project, we implemented Catmull-Clark subdivision surfaces and subsurface scattering. In some sense, our project consisted of two unrelated subprojects, but the two techniques can be combined to create images with smooth, nicely shaded surfaces.
Starting with the code framework given for a previous instance of CSE 557, we implemented Catmull-Clark subdivision surfaces. This technique works on meshes with faces with any number of edges and vertices with any valence. The steps go something like this:
In addition, after any number of subdivisions we can evaluate each point and normal vector at the limit surface. This is achieved by looking at the eigendecomposition of the subdivision matrix. We only allow this after at least one subdivision step, since at this point all faces must be quadrilaterals, and this simplifies the computation.
After implementing Catmull-Clark subdivision, we added subdivision surface support to our raytracer. This required only a simple modification to the scene file format. We can read meshes in the Alias-Wavefront ".obj" format.
Our original intent was to include some sort of optimization to avoid storing a deeply subdivided mesh. Two possibilities were:
We're still working on that first technique.
|
|
|
|
This part of the project involves simulation of subsurface scattering phenomena in order to better model the appearance of highly scattering materials such as marble and skin.
As observed in [1], traditional BRDFs do not
faithfully capture certain effects of lighting on such materials,
including color bleeding within materials, and diffusion of light across
shadow boundaries. The authors in [1] propose an extended local-coloring
model involving the use of a BSSRDF, that computes lighting as
generated by an approximation of diffuse scattering.
The proposed shading model is based on a physical description of the light scattering phenomenon but uses a clever approximation in order to efficiently compute the actual lighting at a point on the surface. |
The computed function is as follows:
where the two components shown are due to single scattering events, and the dipole approximation respectively. These two components are shown in figure 3. Intuitively speaking, the single-scattering event models the way incident light is distributed over an area of the surface, and can create effects such as diffusion of light across shadow boundaries. The dipole approximation smoothly blends color across an area.
The single scattering effect is calculated as shown by the formula below.
The implementation involves a modified distribution ray tracer that performs separate monte-carlo integrations to compute the two components of the BSSRDF. The single-scattering event is modeled by following a probabilistically determined path taken by the shadow ray into the surface and out towards the light source. The contribution of the dipole approximation is computed by adding in the lighting from a point that is perturbed probabilistically from the point of incidence.
Here are a pair of images that show the effect of the BSSRDF in computing the lighting on marble. The first image shows a block of marble that is top-lit and shaded by conventional techniques. Clearly the surface has a uniform plastic-like look to it, and the sides of the block are not at all visible since they are in the shadow. In contrast, the second image shows how (a) the surface has a "softer" feel to it, and (b) the light is diffused across the shadow boundaries, to show the edges and part of the sides of the block. The lighting of the sides naturally falls off as a function of distance from the illuminated surface.
[1] A Practical Model for Subsurface Light Transport. H. Jensen, S. Marschner, M. Levoy, P. Hanrahan. In proceedings of SIGGRAPH 2001