Skin Shader

Description:

This plugin offers Maya artists a Skin Shader that can be used to produce photorealistic human skin tones. It is based on the natural behavior of light interacting with skin. Attributes of the Skin Shader

The Skin shader has the following attributes:

Epidermis: transparency values of the epidermis (the thin layer that determines the race of someone or amount of tanning). Values are between 0 and 1 for the three r, g and b channels

Dermis: "albedo" of the thicker dermis layer under the epidermis. The albedo determines the amount of scattering in the dermis. 0 = no scattering, 1 = only scattering (no absorbtion of light). There are three values for each color channel.

Anisotropy: determines if the scattering in the dermis is uniform (0) or strongly forward scattering (1).

Roughness: roughness of the skin's surface (values between 0 and 0.9), 0 = no roughness (mirror), 0.9 = very rough.

Ambient: between 0 and 1. Contributions due to ambient lights (requires an ambient light in the scene to have any effect at all).

SubSurface: range between 0 and 1000, can be used to scale the contribution due to the dermis.

Surface: can be used to scale the contribution from the surface itself (range 0 - 1)

Normal Camera: can be used to bump map the skin shader. Simply assign a texture to it.

Known Limitation: "hardware shading" does not properly represent the final rendered result.

About the Skin Shader

This plugin places a Skin Shader in Maya's Hypershade.

The light coming off of human skin is composed of light directly reflected from the skin's surface and light which has been scattered and absorbed in the two layers beneath the skin's surface - the epidermis and the dermis.

The epidermis layer determines the "race", which depends on the amount of melanin. The dermis layer is composed mainly of blood vessels, collagen fibers, fat, etc... The optical properties of each skin layer are assumed to be constant and are modelled by the albedo W, anisotropy factor g and transparency T.

The albedo is a number between 0 and 1 which gives the fraction of light that is scattered at each interaction of a photon with the material of the layer.

The anisotropy factor models the directionality of the scattering: g=0 means isotropic scattering, while g>0 models predominently forward scattering (g<1).

The transparency is a number between 0 and 1 which determines the fraction of light which traverses the layers that is not scattered or absorbed by that layer.

Each of these parameters depends on the wavelength of the incoming light: red ~ 670nm, green ~ 550nm and blue ~ 430nm. Typical values for these parameters are:


 albedo W  anisotropy g  transparency T
 epidermis   0.84 - 0.96   0.72 - 0.79   0.14 - 0.33
 dermis   0.89 - 0.98   0.72 - 0.82   0.00 - 0.00

Typical values for the optical parameters for wavelengths: 337nm - 633nm

As is evident from the table, the scattering is highly anisotropic and important in both layers for the range of visible wavelengths. This is what makes the problem of computing the intensity coming out of skin so difficult. The problem is further complicated by the fact that the light is refracted and internally reflected at the skin's boundary and that the interface is highly irregular

In order to simplify the model slightly, we do not model the scattering in the epidermis. The epidermis is modelled by a its transparency alone. The epidermis therefore acts as a thin translucent coating just beneath the skin's surface. Also from the table we observe that the dermis is completely opaque and therefore the transparency of this layer is equal to zero (T=0).

The shader handles ambient light sources by integrating a uniform distribution of light incident on the skin surface. The following figure illustrates the effect of an ambient source and a spotlight on the skin's appearance.