Practise Skin Sub Surface Scattering (SSS) Effect In RenderMan Production
The referred graphs have been announced.
We’d better view some principle about BSSRDF and human skin. Repeat, this is not a math hell. BSSRDF is not used for completely remove the BRDFs (include Phong, Blinn, Cook-Torrance etc.) from the earth. It’s only for correctly representing translucent material in computer graphics. If you want to learn something deepter, you’d better ask your solid physics or applied optics teacher. They will explain to you that all the problem is about the reaction between light energy and atom at quantum level. Oh, it sounds terrible, not easy at all. So, we will show something much easier than you dive into papers all by your self.
In computer graphics, we want to “correctly” illuminate the appearances of objects in scene, whatever from psychology, like Phong shading, or physical, just like the Monte Carlo method. So we have used some classic BRDF model in computer graphics. In fact, the BRDF is a approximation of BSSRDF, it is assumed that light enters and leaves at the same point [A Practical Model for Subsurface Light Transport]. But if we investigate the translucent objects near us, such as grape, marble, milk, skin, we will know that every lighten points we saw on them were effected by nearby point even inner of them when the light was traveling through them. The origin formula is:
If we want to solve equation is quite stupid. In reality, artist likes to face to many linear parameters, modifies them by simple arithmetic, or just in a compositing software such as Shake, After Effect, not these mathematics devils. So we have to separate something important parts from the origin formula. Let’s continue now.
The radiant exitance is our final wanted result, because we can use it as diffuse radiance data directly.
Ep is irradiance at the location p, calculated like this:
It means that Ep is the sum of ambient and diffuse components multiply with Kdt surface color, also the radiance diffusely transmitted through the surface. Ap is the area of the location. From simple to difficult, the last part can be expressed like this:
Oh, we attract more unknown variable quantities, before we can solve this, we have to get something ready:
And more:
Solving Rd is just for get α'. Because:
But this function is not easily to invertible, otherwise we can directly get everything. But we first should see its graph:
It has a simple monotonic shape in the valid region α' is in [0,1], we can use a secant root finder to compute α'.
Now, do not feel complicated about so many symbol. The most important parameters which dominate skin appearance are sigma_s' and sigma_a, luckily, these two parameters can be measured from experiment. So this is the plot from [Analysis of Human Faces using a Measurement-Based Skin Refectance Model]:
This plot gives us a very valuable reference to our deciding approximate parameters for different human skins. The circle shape encodes male the other is female. Mark size encodes age, the bigger the older. Color encodes skin appearance, from black, dark brown, to brown, white to olive, until white, very white.
In Pixar RenderMan Pro Server there is a tool names ptfilter. We can use this command line tool to do sub-surface diffusion in a point cloud. Then we can make a brick file and use the illumination data in surface shader by texture3d() OP. We will touch 4 parameters if we want to get correct SSS effect manually. They are :
Unit Length, important physical-based parameter, depend on size of your 3D model, if you miss it and your scece unit is not mm, you will get wrong result.
Diffuse Mean Free Path, we use "DMFP" for short. This is a also physical-based parameter. This parameter is a attribute of translucency material surface. This parameter will be convert to Mean Free Path (MFP), means the average distance at which light scatters. This parameters will multiply with unit length above, so it’s physical preparation of material, even it’s spatially-varying.
Scattering Coefficient, just the σs', main parameters in controlling SSS effect, should be fixed before modify others.
Absorption Coefficient, the σa, as the same as σs'.
Albedo, for simple, it’s the diffuse color, to represent different degree of light scattering.
We have to know that this tool is based on dipole diffusion approximation algorithm in [A Practical Model for Subsurface Light Transport]. So it can't represent the effect such as refraction of light at the boundary casing internal caustics, translucent inter-scattering. For that we can use more advance method such as photon diffusion, but it have not been supplied public tool.
The next stage is about choosing which BRDF model used to fit the data. In [Analysis of Human Faces using a Measurement-Based Skin Reflectance Model], they have discussed enough about the BRDF model. The Torrance-Sparrow BRDF is physically-based, so it is quite suitable to represent the bump skin surface. There is nobody's face is perfect flat. This BRDF must be used spatially-varying, not uniform. So we have to reconstruct all the needed render data.
Refer to [Analysis of Human Faces using a Measurement-Based Skin Reflectance Model], artists should divide the whole face texture map into different part so that each region will be painted with correct BRDF parameters. And each region owns its distribution.
First, we should make sure what kind of human skin we want to simulate, male or female, how old, black or white. From these conditions we have had the bound of scattering parameter σa and absorption parameter σs'. General speaking, dark brown and black skin have higher absorption and lower scattering coefficients than white skin. It's natural that the absorption coefficient σa is highest for the blue and green channels, this is caused by blood in deep level of skin. From the function graph we know σa decreases with higher scattering coefficient σs'.
Then we can along the path showed by Christophe Hery in [Implementing a Skin BSSRDF]. When we have fixed the σs' , then we modify the σa, even the diffuse mean free path. But these parameters are quite unfriendly to artist. The origin data is measured in laboratory, is not intuitive. The less key parameters the artist will control, the more easier to handle. The index of refraction is fixed to 1.3 about many materials, such as skin, ketchup, skimmilk. We suggest that all of physical parameter such as DMPF, σs' and σa should be fixed by Technical Director (TD), then artist can convert approximate parameters into textures, combined with shading program, here are the channels baked by RenderMan shaders. Even TD manually write little C++ program to calculate these numbers by Pixar RenderMan SDK after discussing with artist or some specialist about material.
The perfect effect must be handed by artist. SSS is not the everything, a compellent cinematic effect comes from heavy compositing, high quality texture maps, accurate displacement, good lighting design, the SSS is just a good way to illuminate translucent materials. Good luck.