<- previous index next ->
Chapter 6 of our Textbook: Interactive Computer Graphics, gives the definitions and equations for doing lighting in any language on any graphics platform. Programming these yourself is often a project in CMSC 435, Computer Graphics. Many graphics toolkits implement the lighting models for reasonably convenient use. The physics: Light is electro magnetic radiation. Each color has a wavelength. We are interested in the visible spectrum between infrared and ultraviolet. From long ago, Roy G Biv, Red, orange, yellow, Green, Blue, indigo, violet. RGB are the electronic primary colors. The human eye can detect the intensity and wavelength of light. White light is all colors, black is no colors. In ambient white light, an object looks red because the object is reflecting light with wavelengths near red and absorbing light at other wavelengths Graphics definitions: Ambient light: comes from no specific source, exists in all directions. Diffuse light: has a point source, strikes the surface of an object at some angle, reflects or is absorbed by an object, the amount of reflected light depends on the incident angle and the normal to the surface. Specular reflection: comes from point source light reflected to a pixel based on the angle of incidence and angle of reflection, and takes into account the shininess of an object. This produces a highlight or bright spot. An object is said to have a surface material and that material can have Ambient, Diffuse and Specular properties (for each primary color). Example programs covered: (execute and observe lighting) planets.c SphereMotion.java teapots.c teapots.jpg The lighting environment is the physical objects in the truncated tetrahedron plus the light(s) that may be outside this volume. (shown in class on board, see book 5.5)The components of light that the user sees is intensity, I, of the primary colors RGB. Irgb = Iambient + Idiffuse + Ispecular [clamped to 1.0 maximum each color] (shown in class on board, see book 6.1-6.5) The intensity of a pixel on the display is computed independently for each primary color. Each intensity is the result of light on the material of the object being reflected to the pixel on the display screen. For the following we assume the material on the object has been defined to provide the reflectivity of each primary color for ambient reflection, diffuse reflection, specular reflection and shininess. We assume that ambient light has been defined with the amount of light for each primary color. We assume that one or more point lights have been defined at some position with the amount of light for each primary color. All lights and reflectivities are assumed converted to the range 0.0 to 1.0. Any undefined value is considered to be 0.0. The intensity for each color is computer by the formulas: Iambient = Kambient * Lambient Kambient is the materials reflectivity to each color Lambient is the amount of ambient light for each color Idiffuse = Kdiffuse (Lvector dot Nvector) Ldiffuse Kdiffuse is the materials reflectivity to each color Ldiffuse is the amount of one point light for each color Lvector is the vector from the point light to the surface Nvector is the normal vector at the surface the dot product computes the cosine of the angle between vectors Ispectral = Kspecular (Rvector dot Vvector)^alpha Lspecular Kspecular is the materials reflectivity to each color Lspecular is the amount of one point light for each color alpha is the exponent of the dot product, typically 20 to 100 alpha can be derived from the amount of shininess of the object Rvector is the reflection vector Vvector is the vector to the eye (actual computation uses a transformation, Hvector) A few examples: red light amount red reflectivity result intensity 0.0 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 1.0 1.0 1.0 0.5 0.5 0.25 1.00^50 = 1.0 0.99^20 = 0.8 alpha = 20 at angle T, 0.99 = cos(T) 0.95^20 = 0.35 0.99^50 = 0.6 alpha = 50 0.95^50 = 0.076 teapots includes both lighting and texturing, which are both closely related to how people interpret, visualize, the display of graphical objects. Texturing is covered more in the next lecture. light_dat.c datread.c datread.h drop.dat Utah .dat or .det formats skull.dat example skull.jpg rendered as brass bull.dat example bull.jpg rendered as brass There are many 3D graphical images available from the Utah project(s). The .det format uses binary IEEE floating point and binary "C" integers for fast input. The .dat format is exactly the same numeric values encoded as ASCII text readable by "C" fscanf or equivalent. planets.c Lighted extension of planet.c This demonstrates putting a light inside an object to give somewhat an illusion of a glowing object. Compare above to planet.c
<- previous index next ->