Download presentation
Presentation is loading. Please wait.
1
CS425 OpenGL Materials
2
What Color Is It? green & blue absorbed white light Looks red
3
What Color Is It? red & blue absorbed white light Looks green
4
What Color Is It? blue absorbed white light Looks yellow
5
What Color Is It? red absorbed red light ? cyan
6
What Color Is It? red absorbed red light cyan Looks black
7
What Color Is It? blue absorbed magenta light ?
8
What Color Is It? blue absorbed magenta light Looks red
9
Material Response to Light The material specified in OpenGL can have three different responses to the light hitting it plus one emissive characteristic. You can separately specify the response to: –Ambient –Diffuse –Specular And you can specify that the material “emits light”
10
glMaterial{if}v(face, pname, param) face –GL_FRONT –GL_BACK –GL_FRONT_AND_BACK
11
glMaterial{if}v(face, pname, param) pname –GL_AMBIENT (ambient color of material) –GL_DIFFUSE (diffuse color of material) –GL_AMBIENT_AND_DIFFUSE (both) –GL_SPECULAR (specular color of material) –GL_SHININESS (specular exponent) –GL_EMISSION (emissive color of material) –GL_COLOR_INDEXES (ambient, diffuse, and specular color indices)
12
glMaterial{if}v(face, pname, param ) param The value for the pname’d material property Example GLfloat mat_amb_diff [ ] = {0.1, 0.5, 0.8, 1.0}; glMaterialfv( GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, mat_amb_diff);
13
NO Ambient (.7,.7,.7) Ambient (.8,.8,.2) Ambient Diffuse only (.1,.5,.8. 1.0) diffuse & specular (low shininess) diffuse & specular (high shininess) + (.3,.2,.2,.0) emmissive, no specular specular (1,1,1,1) shininess (5.0) specular (1,1,1,1) shininess (100.0)
14
Nate Robbins Lightmaterial
15
Color Material Mode I didn’t find this previously. Causes the material property specified to track the value of the current color (glColor*) glColorMaterial(face, mode) “face” and “mode” are same as for glMaterial. Must use glEnable (see example)
16
glColorMaterial example glEnable(GL_COLOR_MATERIAL); glColorMaterial(GL_FRONT, GL_DIFFUSE); glColor3f(0.2, 0.5, 0.8); /* draw some objects */ glColorMaterial(GL_FRONT, GL_SPECULAR); /*glColor no longer changes diffuse reflection, it now changes secular reflection */ glColor3f(0.9, 0.0, 0.2); /* draw some other objects */ glDisable(GL_COLOR_MATERIAL);
17
colormat.c
18
Two Sided Materials GLfloat outside = {0.2, 1.0, 1.0, 1.0}; GLfloat inside = {1.0, 0.5, 0.5, 1.0}; … glMaterialfv(GL_FRONT, GL_DIFFUSE, outside); glMaterialfv(GL_BACK, GL_DIFFUSE, inside); … glLightModelf(GL_LIGHT_MODEL_TWO_SIDE, GL_TRUE);
19
Additional Clipping Plane GLdouble eqn[ ] = {0.0, -1.0, 0.07, 0.5}; … glEnable(GL_CLIP_PLANE0); … glClipPlane(GL_CLIP_PLANE0, eqn); ABCD Plane equation See cutting.c (handout)
20
Two Sided Materials with Cutting Plane
21
OpenGL Attenuation Same formula that Denbigh gave. c = constant factor l = linear factor q = quadratic factor d = distance
22
Function Calls You use the glLightf function to select attenuation factors. Default values are kc=1, kl=0, kq=0. –glLightf(GL_LIGHT0, GL_CONSTANT_ATTENUATION, 2.0); –glLightf(GL_LIGHT0, GL_LINEAR_ATTENUATION, 0.0); –glLlightf(GL_LIGHT0, GL_QUADRATIC_ATTENUATION, 0.0);
23
kc=1 kl=0 kq=0 kc=0 kl=1 kq=0 kc=0 kl=0.5 kq=0 kc=0 kl=0.2 kq=0 kc=0 kl=0.1 kq=0 kc=0 kl=0.01 kq=0 kc=0 kl=0 kq=0.1 kc=0 kl=0 kq=0.001 kc=1 kl=0 kq=0.001 + =
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.