Normales y Materiales -...

41

Transcript of Normales y Materiales -...

Page 1: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales y Materiales

Facultad de Cs. de la Computación

Juan Carlos Conde Ramírez

Computer Graphics

Page 2: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Contenido

1 Normales

2 Tipos de Iluminación

3 Materiales

4 Luces

1 / 40

Page 3: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Contenido

1 Normales

2 Tipos de Iluminación

3 Materiales

4 Luces

2 / 40

Page 4: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Iluminación

1. PRIMERO. Se trabaja con imágenes planas donde cada una de las carasde los objetos geométricos tiene un mismo color.

2. SEGUNDO. Pueden modelarse efectos de iluminación pintando las carascon distintas tonalidades de un mismo color.

3. TERCERO. El efecto no es muy realista, pero el objetivo es mejorarlo.

3 / 40

Page 5: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Vectores normales a la super�cie I

Para iluminar una super�cie (plano) necesitamos información sobre su vectornormal asociado.

En OpenGL es necesario la de�nición de un vector normal para cada uno de losvértices de nuestra geometría.

Ejemplo:

Supongamos un objeto 3D. Vamos a situarnos en su cara superior, la formadapor los vértices A, B, C y D. Queremos encontrar la normal de esta cara, que esla asociada a cada uno de los vértices que la forman.

4 / 40

Page 6: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Vectores normales a la super�cie II

SOLUCIÓN:

Sólo tenemos que calcular dos vectores pertenecientes a la cara y hacer suproducto vectorial (el resultado será un vector perpendicular a ambos y por lotanto una normal del plano).

I Una vez calculada la normal, tenemos que normalizar, es decir, dividir esevector por su propio modulo1 para que sea unitario.

I Ya que queremos que las normales apunten hacia fuera de la cara visible,es importante el orden en que multiplicamos. De esto depende que elvector normal apunte hacia fuera o hacia dentro de la cara.

1El módulo de un vector es un número que coincide con la �longitud� del vector en larepresentación grá�ca.

5 / 40

Page 7: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Vectores normales a la super�cie III

I OpenGL utilizará la normal asociada a cada vértice para evaluar la luz queincide sobre éste.

I Si un vértice pertenece a más de una cara, podemos promediar paraobtener unos cálculos correctos o bien repetir los vértices cada uno con lanormal que le corresponde.

6 / 40

Page 8: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Vectores normales a la super�cie IV

El siguiente código de�ne un polígono de N vértices que comparten la mismanormal:

glBegin(GL_POLYGON);

glNormal3f(coordx, coordy, coordz);

glVertex3f(...);

glVertex3f(...);

...

glEnd();

7 / 40

Page 9: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Vectores normales a la super�cie V

Si cada vértice tuviera su propia normal asociada entonces:

glBegin(GL_POLYGON);

glNormal3f(coordx1, coordy1, coordz1);

glVertex3f(...);

glNormal3f(coordx2, coordy2, coordz2);

glVertex3f(...);

glNormal3f(coordx3, coordy3, coordz3);

...

glEnd();

8 / 40

Page 10: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Vectores normales a la super�cie VI

En el caso de no normalizar los vectores normales es posible utilizar las siguientesfunciones:

glEnable(GL_NORMALIZE); // para activar la normalización automáticaglDisable(GL_NORMALIZE); // para desactivar la normalización automática

Sin embargo, hay que tener en cuenta las siguientes consideraciones:

I Es recomendable normalizar para evitar cálculos innecesarios que pueden�afectar� el desempeño.

I Sabemos que es necesaria la especi�cación de una normal por vértice.

9 / 40

Page 11: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Contenido

1 Normales

2 Tipos de Iluminación

3 Materiales

4 Luces

10 / 40

Page 12: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Tipos de Iluminación en OpenGL

Veremos a continuación que tipos de iluminación soporta OpenGL. Básicamenteson tres tipos:

I Iluminación plana (FLAT)

I Iluminación suave (SMOOTH/GOURAUD)

I Iluminación PHONG

11 / 40

Page 13: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Iluminación Plana (FLAT)

La iluminación plana es la más simple e ine�ciente. En ella todo el polígonopresenta el mismo color, ya que OpenGL evalúa sólo un color para todos suspuntos. Se activa con la función:

glShadeModel(GL_FLAT);

No es muy recomendable para aplicaciones donde el realismo sea importante. Ese�ciente dado que los cálculos son mínimos.

12 / 40

Page 14: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

luminación suave (SMOOTH/GOURAUD)

En cuanto a calidad, es mejor Gouraud.

glShadeModel(GL_SMOOTH);

En este caso si se efectúan cálculos de color para cada uno de los puntos delpolígono. Se asocian las normales a los vértices.

OpenGL calcula los colores que éstos deben tener e implementa una interpolaciónde colores para el resto de puntos. La calidad es mas notable.

13 / 40

Page 15: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Iluminación PHONG

En el modelo de Phong se utiliza una interpolación bilineal para calcular lanormal de cada punto del polígono.

No se evalúan las normales sólo en los vértices y luego se interpolan colores, sinoque a cada punto del polígono se le asocia una normal distinta (se interpolan lasnormales) con lo cual su color asociado será muy cercano a la realidad.

OpenGL no implementa este modelo directamente.

14 / 40

Page 16: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Contenido

1 Normales

2 Tipos de Iluminación

3 Materiales

4 Luces

15 / 40

Page 17: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Introducción

En OpenGL, antes de empezar a activar luces, tenemos que de�nir los materiales.

Para cada polígono de la escena, hay que de�nir un material de forma que surespuesta a la incidencia de luz varíe según sea el caso.

Tenemos que decirle a OpenGL de qué forma tendrá que tratar a cada trozo degeometría.

16 / 40

Page 18: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Caracterísiticas

Se de�nen 5 características fundamentales para un material:

1. Re�exión difusa (di�use) o color base que re�ejaría el objeto si incidierasobre él una luz pura blanca.

2. Re�exión especular (specular), que se re�ere a los �puntitos brillantes� delos objetos iluminados.

3. Re�exión ambiental (ambient), de�ne como un objeto determinado re�ejala luz que no viene directamente de una fuente luminosa sino de la escenaen sí.

4. Coe�ciente de brillo (shininess), de�ne la cantidad de puntos luminosos ysu concentración. Variando este parámetro podemos conseguir un objetomas o menos cercano al metal.

5. Coe�ciente de emisión (emission) o color de la luz que emite el objeto.

17 / 40

Page 19: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Caracterísiticas

Observaciones:

Las componentes ambiental y difusa son típicamente iguales o semejantes.

La componente especular suele ser gris o blanca.

El brillo determinará el tamaño del punto de máxima re�exión de luz.

Se pueden especi�car diferentes parámetros en cuanto a material para cada polí-gono. Es una tarea ardua pero lógicamente a más variedad de comportamientosmás real será la escena.

18 / 40

Page 20: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Caracterísiticas

El funcionamiento es el normal, cada vez que se llama a la correspondientefunción se activan esos valores que no cambiarán hasta llamarla de nuevo conotros.

La función de OpenGL para con�gurar los materiales es:

glMaterialfv(GLenum face, GLenum pname, const Glfloat *params);

19 / 40

Page 21: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Caracterísiticas

En la tabla se observan los valores que pueden adoptar los parámetros de lafunción

Glenum face Glenum pname const Gl�oat *params

GL_FRONT GL_DIFFUSE (R, G, B, 1.0)GL_BACK GL_AMBIENT (R, G, B, 1.0)

GL_FRONT_AND_BACK GL_EMISSION (R, G, B, 1.0)GL_SPECULAR (R, G, B, 1.0)GL_SHININESS [0, 128]

Hay una excepción en el caso de GL_SHININESS. Si usamos esta cte comosegundo parámetro, el tercero tendrá que ser un número entre 0 y 128. Pordefecto este valor vale 0.

20 / 40

Page 22: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Caracterísiticas

La misma función tiene también las formas glMaterialf, glMaterialy yglMaterialiv. No suelen usarse las versiones enteras, sólo son útiles para de�nirGL_SHININESS.

Los valores típicos usados por defecto, son de 0.8 para las tres componentesen GL_DIFUSSE, de 0.2 para GL_AMBIENT y de 0.0 en GL_EMISSION yGL_SPECULAR.

21 / 40

Page 23: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Contenido

1 Normales

2 Tipos de Iluminación

3 Materiales

4 Luces

22 / 40

Page 24: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Luces en OpenGL

OpenGL soporta en principio hasta 8 luces simultáneas en un escena. Las lucescuentan con nombre propio del estilo GL_LIGHT0, GL_LIGHT1, ...

Para activar/desactivar una de ellas, se usa la función:

glEnable(GL_LIGHT3);

glDisable(GL_LIGHT3);

También podemos activar/desactivar todo el cálculo de iluminación con:

glEnable(GL_LIGHTING);

glDisable(GL_LIGHTING);

23 / 40

Page 25: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Fuente de Luz

Para colocar una fuente de luz, utilizamos la función:

glLightfv(Glenum light, Glenum pname, const Glfloat *params);

El valor de light será siempre la luz a la que nos estemos re�riendo, GL_LIGHT0,GL_LIGHT1, etc. En cuanto a *params, le pasamos un arreglo de valores RGBAreales que de�nen la característica en concreto.

Estos valores RGBA de�nen el porcentaje de intensidad de cada color que tienela luz. Si los tres valores RGB valen 1.0 la luz es sumamente brillante; si valen0.5 la luz es aún brillante pero empieza a aparecer oscura, gris.

24 / 40

Page 26: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

De�nición de luz Ambiental

Para la característica ambiental, se usa la función:

glLightfv(GLenum light, GL_AMBIENT, const GLfloat *params);

De�ne la contribución de esta fuente de luz a la luz ambiental de la escena. Pordefecto la contribución es nula.

25 / 40

Page 27: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

De�nición de luz Difusa

Para la característica difusa:

glLightfv(GLenum light, GL_DIFFUSE, const GLfloat *params);

La componente difusa de la fuente es lo que entendemos como el color que tienela luz. Para GL_LIGHT0 los valores RGBA por defecto valen 1.0. Para el restode luces los valores por defecto son 0.0.

26 / 40

Page 28: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

De�nición de luz Especular

Para la característica especular:

glLightfv(GLenum light, GL_SPECULAR, const GLfloat *params);

Se trata de la luz que viene de una dirección particular y rebota sobre un objetosiguiendo una determinada dirección. Es la componente responsable de las zonasmás brillantes en la geometría.

27 / 40

Page 29: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

De�nición de luz Especular

Observaciones

Para conseguir un efecto su�cientemente realista deberíamos dar a esteparámetro el mismo valor que a la componente difusa. Al igual que en el casoanterior, en la primera luz los valores RGBA valen 1.0 mientras que en el resto0.0

28 / 40

Page 30: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Posición de la luz

También se tiene que especi�car dónde queremos colocar cada una de las fuentesde luz. Se usa la función:

glLightfv(GLenum light, GL_POSITION, const GLfloat *params);

En este caso *params se corresponde con el valor de la coordenada homogénea(x, y, z, w) dónde se coloca la luz.

29 / 40

Page 31: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Posición de la luz

Si w = 0.0 se considera que la luz se encuentra in�nitamente lejos de nosotros.

En ese caso su dirección se deduce del vector que pasa por el origen y por elpunto (x,y,z).

Si w = 1.0 se considera su posición con toda normalidad.

Por defecto la luz se encuentra en (0.0, 0.0, 0.0, 1.0) iluminando en la direcciónnegativa de las z ′s. Los rayos de luz se asumen paralelos.

30 / 40

Page 32: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Posición de la luz

Podemos mover una luz por la escena. Incluso podemos movernos con ella comosi fuera una linterna.

Para ello solo tenemos que considerarla como un objeto 3D más que se ve afec-tado por cambios en la matriz de transformación.

Podemos rotarla, trasladarla, escalar su posición como si se tratara de un polí-gono.

31 / 40

Page 33: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Otras propiedades de la luz

Otras propiedades más de las luces son:

I La atenuación con la distancia, yI El área de cobertura.

En la primer propiedad, nos referimos a la atenuación que sufre la luz a medidaque se desplaza.

32 / 40

Page 34: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Desplazamiento de la luz

Es claro que si un objeto esta más lejos de una fuente luminosa, menos iluminadoresultará.

Para modelar esto, contamos con tres parámetros a de�nir:

GL_CONSTANT_ATTENUATION (por defecto es igual 1.0). Es decir a.

GL_LINEAR_ATTENUATION (por defecto es igual 1.0). Es decir b.

GL_QUADRATIC_ATTENUATION (por defecto es 0.0). Es decir c.

33 / 40

Page 35: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Desplazamiento usando glLightfv

Los valores los pasamos a OpenGL usando la función glLightfv().

glLightfv(GL_LIGHT5, GL_CONSTANT_ATTENUATION, 0.8);

glLightfv(GL_LIGHT5, GL_LINEAR_ATTENUATION, 0.5);

glLightfv(GL_LIGHT5, GL_QUADRATIC_ATTENUATION, 0.1);

En este caso hemos dado más importancia a los coe�cientes a y b de la función.Se han aplicado a luz 6.

34 / 40

Page 36: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Área de luminosidad

En la segunda propiedad, nos referimos al área que abarca el haz de luz quesurge de la fuente. Podemos de�nir los siguientes parámetros:

35 / 40

Page 37: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Parámetros de área de luminosidad

I GL_SPOT_CUTOFF para de�nir un �cono� de luz. Podemos especi�carel ángulo de abertura del cono con un valor de 0.0 a 90.0 grados. Sioptamos por el valor 180.0 grados estaremos desactivando esta opción.

I GL_SPOT_DIRECTION para restringir la dirección de la luz emitida. Esun vector de 3 valores reales RGB. Por defecto la dirección es la de las z ′snegativas.

I GL_SPOT_EXPONENT que regula la pérdida de intensidad de la luz amedida que nos alejamos del centro del cono. Valores entre 0.0 y 128.0.

36 / 40

Page 38: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

Ejemplos

37 / 40

Page 39: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

ACTIVIDAD 1

INSTRUCCIONES: Lee cuidadosamente e implementa las modi�caciones en el programaindicado.

1. Realiza una copia del código de tu Práctica 5 o en su defecto retoma el código04_Iluminacion3D.cpp.

2. Ejecuta, selecciona una �gura GLUT para mostrar y realiza una impresión de pantalla.

3. A la función de inicialización (init), agrega las funciones glEnable(GL_NORMALIZE); yglDepthFunc(GL_LEQUAL);

4. *Investiga cuál es la funcionalidad de glDepthFunc(GL_LEQUAL); y cuales son losparámetros aceptados.

5. Asegúrate que la función glutInitDisplayMode esté con�gurada con (GLUT_DOUBLE |GLUT_RGB | GLUT_DEPTH).

6. Agrega las siguientes líneas a la función que determina la función ambiental,colocándolas en el lugar correspondiente:

GLfloat l_ambiente[]={1.0f, 1.0f, 1.0f, 1.0f};

glLightModelfv(GL_LIGHT_MODEL_AMBIENT,l_ambiente);

glLightfv(GL_LIGHT0, GL_AMBIENT, l_ambiente);

7. Ejecuta nuevamente, realiza una impresión de pantalla y compara con la anterior.

38 / 40

Page 40: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

ACTIVIDAD 2

INSTRUCCIONES: Implementa las siguientes funciones.

I Prototipo de la función: void redPlastic()

I Cuerpo de la función:

GLfloat l_ambiente[]={0.0f, 0.0f, 0.0f, 1.0f};GLfloat l_difusa[]={0.5f, 0.0f, 0.0f, 1.0f};GLfloat l_especular[]={0.7f, 0.6f, 0.6f, 1.0f};GLfloat brillo[]={32.0};glMaterialfv(GL_FRONT, GL_AMBIENT, l_ambiente);glMaterialfv(GL_FRONT, GL_DIFFUSE, l_difusa);glMaterialfv(GL_FRONT, GL_SPECULAR, l_especular);glMaterialfv(GL_FRONT, GL_SHININESS, brillo);

I Prototipo de la función: void blackPlastic()

I Cuerpo de la función:

GLfloat l_ambiente[]={0.02f, 0.02f, 0.02f, 1.0f};GLfloat l_difusa[]={0.01f, 0.01f, 0.01f, 1.0f};GLfloat l_especular[]={0.4f, 0.4f, 0.4f, 1.0f};GLfloat brillo[]={10.0};glMaterialfv(GL_FRONT, GL_AMBIENT, l_ambiente);glMaterialfv(GL_FRONT, GL_DIFFUSE, l_difusa);glMaterialfv(GL_FRONT, GL_SPECULAR, l_especular);glMaterialfv(GL_FRONT, GL_SHININESS, brillo);

I PRUEBA estos materiales invocando las funciones antes de pintar alguna �gura 3D.

I IMPLEMENTA 3 materiales más utilizando el catálogo de materiales adjunto a estasnotas.

39 / 40

Page 41: Normales y Materiales - climate.cs.buap.mxclimate.cs.buap.mx/CondeJC/cursos/Material/Graficacion_/Notas/07... · vector por su propio modulo 1 para que sea ... Las componentes ambiental

Normales Tipos de Iluminación Materiales Luces

�La dicha de la vida consiste en tener siempre algoque hacer, alguien a quien amar y algo que esperar�

[Tomas Chalmers]

Juan Carlos Conde Ramí[email protected]

40 / 40