
Title:
Specular Material  Interactive 3D Graphics

Description:

There are quite a few materials that are nearly diffuse reflectors such as rough

wood, newspaper, concrete, and mouse pad. However, a considerable number of

surfaces are shiny or glossy. We call these specular materials. Examples include

polish metals, plastics, polish wood, glass, glazed ceramics, and enamel paint.

These materials look different when you view them different angles, so we need

to take into account the direction from the surface to the eye. One standard way

of simulating specular materials is called the BlinnPhong Reflection Model

named after its inventors, Jim Blinn and Bui Tuong Phong. The full model has a

number of terms in it for selfshadowing and for a shininess factor called the

Fresnel coefficent. But the simplest and most common form is this. Specular

equals the maximum of N dot H or 0, whichever is larger, raised to a power. N is

the surface normal, same as with diffuse material. H is called the half angle

vector. Say, you're given a surface, a light source direction, and a viewer

direction. How would you point a mirror so that the light reflected directly

toward the viewer? The answer is the half angle vector, which is the vector

halfway between these two directions, so that these two angles are equal. If the

surface normal and the half angle are identical, then the surface is perfectly

aligned to reflect light to the eye. So, N dot H would be 1, and all light is

reflective. As the normal and the half angle diversion direction, N dot H

becomes smaller. Once the angle between these vectors is 90 degrees, the

contribution goes to 0. The maximum function here limits the inputs so that this

value is never negative. We want to avoid it being negative because we're about

to raise it to a power. The S factor here is the shininess or specular power,

and has a range from 1 to infinity, though anything above 100 is not too much

different. When you raise a fraction to a power, the result is smaller, and

smaller still the higher the power. For example, 0.5 squared is 0.25, cubed, is

0.125, and so on. By raising this term to a higher power, the object appears

shinier. We can see this in the graph of N dot H versus the specular intensity.

As the cosine power rises, the slope becomes tighter and tighter and gets

sharper. What the half angle represents is the distribution of microfacets on a

surface. A microfacet is a way of thinking how a material reflects light. For

example, a fairly smooth surface may look like this. Light coming in from one

direction will bounce off the surface mostly in the reflection direction. A

rougher surface will a lower shininess has a distribution of facets more like

this and the light will still go in the reflection direction, but with a much

wider dispersal. At this point, it's best for you to try out the specular power

function and see how it responds. An example program that follows, you control

the ambient, diffuse, and specular contributions. Try playing with the shininess

and other controls to see their effects.