Light and Color

advertisement
Color and Texture
Electromagnetic Spectrum
Candelas / sq meter
Computer
Screen
1.8 - 150
~2 orders of magnitude
Physiology: Receptors
• Rods
– active at low light levels (night vision)
– only one wavelength sensitivity function
– 100 million rod receptors
• Cones
– active at normal light levels
– three types: sensitivity functions peaks at different
wavelengths (“red”, “green”, “blue”)
– 6 million cone receptors
– Focused in the center of vision (fovea)
The basis of color vision
and measurement
Cone Sensitivity Functions
Sharp Aquos pixels
Gamma
g
• There is a non linear relationship between the
signal given to a monitor and the Luminance
that results.
L = Vg
Acquos Curves
Important points
3 Cone types -> Trichromacy.
Need only three colors in monitor
Saturation is the vividness of a color. We cannot get
full saturation
Luminance range is limited on a monitor
In the real world real world light is additive and
linear.
Monitors are non-linear – must be corrected for
accurate simulation
Basic CG lighting (for each vertex)
Diffuse = N.L
Specular = R.Vk
Ambient = Const
Specular has color of
illumination
Ambient and diffuse are
influenced by the
pigment in the surface
Lighting with cast shadows
Specular has the color of the
illumination
Lambertian reflection
Amount of light
Falling per unit area is
smaller as a function
Of the angle with the surface
cos(q)
q
Rendering approaches
•
•
•
•
Light Field
Ray Tracing
Radiosity
Direct polygon (simplification)
• + Combinations of above
Illumination in openGL
glLight, glLightModel
float light_position[] = {-10.0,20.0,20.0,1.0};
glLightfv(GL_LIGHT0,GL_POSITION, light_position);
float ambient[] = { 0.4f, 0.4f, 0.4f, 1.0f };
glLightfv(GL_LIGHT0, GL_AMBIENT, ambient);
float diffuse[] = {0.8f, 0.8f, 0.8f , 1.0f};
glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse);
For a light at infinity
• Ir = lar*mar + ldr*mdr*(L·N) +
lsr*msr*max(0,V·R)a
• To get specular use V·Ra
• with similar equations for the green and blue
components.
• gLlighting disables glColor, unless
• glEnable(GL_COLOR_MATERIAL); is set
glMaterialfv(GL_FRONT, GL_SPECULAR, specReflection);
glMateriali(GL_FRONT, GL_SHININESS, 20); // note exponent
glColorMaterial(GL_FRONT,GL_AMBIENT_AND_DIFFUSE);
28 parameters
glMaterialfv(GL_FRONT, GL_AMBIENT, M_ambient);
glMaterialfv(GL_FRONT, GL_DIFFUSE, M_diffuse);
glMaterialfv(GL_FRONT, GL_SPECULAR, M_spec);
glLightfv(GL_LIGHT0, GL_AMBIENT, L_ambient);
glLightfv(GL_LIGHT0, GL_DIFFUSE, L_diffuse);
glLightfv(GL_LIGHT0, GL_SPECULAR, L_spec);
glMateriali(GL_FRONT, GL_SHININESS, k);
+Lighting direction
• Attentuation
More Lighting
–
–
–
–
float light_position[] = {-10.0,20.0,20.0,0.0};
glLightfv(GL_LIGHT0,GL_POSITION, light_position);
If last number is zero, light is at infinity.
If non-zero Light is positioned.
–
–
–
–
flLightf*GL_LIGHT0,GL_CONSTANT_ATTENUATION, const);
flLightf*GL_LIGHT0,GL_LINEAR_ATTENUATION, linear.);
flLightf*GL_LIGHT0,GL_QUADRATIC_ATTENUATION, quad);
attenuation = 1/(const+(linear*dist)+(quad*(dist*dist)))
• Spotlights
– glLight(GL_LIGHT0,GL_SPOT_CUTOFF, 45.0); // a 45 deg cone
– glLight(GL_LIGHT0,GL_SPOT_EXPONENT, 2.0); // light concentration
• Can have multiple lights
Lets Simplify, A two component model
of lighting
• Lighting from a source at infinity.
• + Ambient light (the rest of our surroundings)
• (Note that these can be turned into one)
• The surface reflects in two ways
• Diffusely, and Specularly
OpenGL Lighting
• Separate ambient diffuse and specular
components of both the light and the surface
color. (12)
• + Light direction (3)
• + shininess (1)
• Total 60 parameters.
• Easy to end up with summed components
>1.0 for r,g,b.
Phong Shading
• Interpolate surface normals
Then apply lighting pixel by pixel
Gouraud Shading
Calculate lighting at vertices, then interpolate
Textures and texture mapping
Used for 1) Images (a picture in a 3D scene)
2) For surface properties (wood, stone)
3) Lighting effects.
Techniques include procedural textures and
texture mapping
OpenGL supports texture mapping.
Perlin Noise (procedural textures)
Cube earth
Properties of textures in OpenGL
• 1D, 2D, 3D
• Must have dimensions defined by a power of
two. E.g. 512/256 for a 2D texture.
• Have a coordinate system (s,t) from 0-1.
glGenTextures(4,texts); // texts is an unsigned int
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texts[1]); // make this the current texture
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT); // wrap in S | GL_CLAMP
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT); // wrap in T
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexEnvi(GL_TEXTURE_ENV,GL_TEXTURE_ENV_MODE,GL_MODULATE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 513,512,0, GL_RGB, GL_UNSIGNED_BYTE, stripes);
glDisable(GL_TEXTURE_2D);
MipMaps
• A hierarchy of textures
• Helps with aliasing
Aliasing and anti-aliasing
Short wavelength sensitive cones
Blue text on a dark background
is to be avoided. We have very few
short-wavelength sensitive cones in
the retina and they are not very sensitive
Blue text on dark background
is to be avoided. We have very few
short-wavelength sensitive cones in
the retina and they are not very sensitive
Blue text on a dark background
is to be avoided. We have very few
short-wavelength sensitive cones in
the retina and they are not very sensitive.
Chromatic aberration in the eye is also a
problem
Blue text on a dark background
is to be avoided. We have very few
short-wavelength sensitive cones in
the retina and they are not very sensitive
Opponent Process Theory
• Cone signals transformed into new channels
Color Channel Theory
• Luminance contrast
needed to see detail
3:1 recommended
10:1 idea for small text
Comparing the Channels
• Spatial Sensitivity
– Red/Green and Yellow/Blue each about 1/3 detail of
Black/White
• Stereoscopic Depth
– Pretty much can’t do it with hue alone
• Temporal Sensitivity
Some natural philosophers
Suppose that these colors
arise from the accidental
vapours diffused in the air,
which communicates their
own hues to the shadow
Some natural philosophers
– Moving hue-change patterns seem to move
slowly
Suppose
that these colors arise
• Form
– Shape-from shading works well
– Shape-from-hue doesn’t
• Information Labeling: Hue works well!
from the accidental vapours
diffused in the air, which
communicates their own hues
to the shadow
Some natural philosophers
Suppose that these colors
arise from the accidental
vapours diffused in the air,
which communicates their
own hues to the shadow
Download