ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

Iluminacion En Opengl


Enviado por   •  20 de Septiembre de 2011  •  483 Palabras (2 Páginas)  •  1.130 Visitas

Página 1 de 2

Iluminación en OpenGL

Introducción 3

Análisis 4

Código 5

Imágenes 13

Compilación y ejecución del programa. 13

Resultado. 13

Introducción

En el presente informe desarrollaremos la creación de un casa utilizando las funciones necesaria para darle luz a la casa obteniendo una diferencia de tonalidad al momento de girar la casa por un lado la casa se vera mas clara y por el otro lado se vera mas oscuro.

Análisis

Se analizaran las partes más importante del código, donde explicaremos el comportamiento de cada parte de él.

Para definir las variables utilizaremos la matriz generada por la función GLfloat de este modo podremos genera las luces para la casa.

//Colores

GLfloat color_amarillo [] = {1.0,1.0,0.0};

GLfloat color_rojo [] = {1.0,0.0,0.0};

GLfloat color_blanco [] = {1.0,1.0,1.0};

GLfloat color_piso [] = {0.25,0.69,0.32};

//El color difuso y especular de la luz:

GLfloat light_color [] = {1.0,1.0,1.0,1.0};

//El color ambiental de la luz (si algo está fuera de la luz, no es iluminado):

GLfloat ambiental [] = {0.0,0.0,0.0,1.0};

//valor de la direccion de la luz.

GLfloat direccion [] = {2.5,2.5,2.5,0.0};

Creamos una esfera que simulara el foco de luz el cual indica posición de donde proviene la luz.

//Esfera que da la referencia de foco de luz.

void foco(){

glPushMatrix();

glTranslatef(2.5,2.5,2.5);

glutSolidSphere(0.1f,50,50);

glPopMatrix();

}

Creamos la luz de un color. primero activamos la luz con glEnable, después utilizamos la función glLightfv para definir la luz ambiental como la luz del color amarillo y ademas de la dirección de la luz.

utilizamos la función glMaterialfv para definir el color del material donde se reflejara la luz.

void luzAmarilla(){

glEnable(GL_LIGHT0); //Activamos la Luz 0

glLightfv(GL_LIGHT0,GL_AMBIENT,ambiental);

glLightfv(GL_LIGHT0,GL_DIFFUSE,color_amarillo);

glLightfv(GL_LIGHT0,GL_SPECULAR,color_amarillo);//**

//Seleccionamos el color del material:

glMaterialfv(GL_FRONT_AND_BACK,GL_AMBIENT_AND_DIFFUSE,color_amarillo);

//Establecemos la dirección de la luz:

glLightfv(GL_LIGHT0,GL_POSITION,direccion);

}

Código

#include <GL/gl.h>

#include <GL/glu.h>

#include <GL/glut.h>

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

float alpha, beta,i=0.0;//variables que capturan el angulo en el eje X e Y, para la rotacion.

int X1;

int Y1;//Variables que capturan el click del mouse.

GLint ancho=900;

GLint alto=700;

//Colores

GLfloat color_amarillo [] = {1.0,1.0,0.0};

GLfloat color_rojo [] = {1.0,0.0,0.0};

GLfloat color_blanco [] = {1.0,1.0,1.0};

GLfloat color_piso [] = {0.25,0.69,0.32};

//El color difuso y especular de la luz:

GLfloat light_color [] = {1.0,1.0,1.0,1.0};

//El color ambiental de la luz (si algo está fuera de la luz, no es iluminado):

GLfloat ambiental [] = {0.0,0.0,0.0,1.0};

//valor de la direccion de la luz.

GLfloat direccion [] = {2.5,2.5,2.5,0.0};

//Esfera que da la referencia de foco de luz.

void foco(){

glPushMatrix();

glTranslatef(2.5,2.5,2.5);

glutSolidSphere(0.1f,50,50);

glPopMatrix();

}

void vistas(int width, int height){

GLfloat aspecto;

glViewport(0,0,width,height);

aspecto = (GLfloat)ancho/(GLfloat)alto;

glMatrixMode(GL_PROJECTION);

glLoadIdentity();

gluPerspective(35.0f,(GLfloat)width/(GLfloat)height,1.0f,20.0f);

gluLookAt(-10,3,5,0,0,0,0,1,0);

glMatrixMode(GL_MODELVIEW);

ancho=width;

alto=height;

}

void ejes(){

//eje coordenadas z

glBegin(GL_LINES);

glColor3f(1,0,0);//rojo

glVertex3f(0,0,0);

glVertex3f(0,0,3);

glEnd();

//eje coordenadas y

glBegin(GL_LINES);

glColor3f(0,1,0);//verde

glVertex3f(0,0,0);

glVertex3f(0,3,0);

glEnd();

//eje coordenadas x

glBegin(GL_LINES);

glColor3f(0,0,1);//azul

glVertex3f(0,0,0);

glVertex3f(3,0,0);

glEnd();

}

void piso(){

glBegin(GL_QUADS);

glColor3f(0.5,0.5,0.5);

glVertex3f(4,-1.5,4);

glVertex3f(4,-1.5,-4);

glVertex3f(-4,-1.5,-4);

glVertex3f(-4,-1.5,4);

glEnd();

}

void cubo_base(){

glColor3f(1.0,0,0);

glPushMatrix();

glScalef(1.5,1.0,1.0);

glTranslatef(0.0,-0.2,0.0);

glutSolidCube(2.5);

glPopMatrix();

//ladrillos frontal

while(i<1.8){

glPushMatrix();

glScalef(2.0,1.0,1.0);

glTranslatef(-0.85+i,-1.3,1.2);

glutSolidCube(0.2);

glPopMatrix();

i=i+0.243;

}

glPushMatrix();

glScalef(0.7,1.0,1.0);

glTranslatef(-2.62,-1.05,1.2);

glutSolidCube(0.2);

glPopMatrix();

glPushMatrix();

glScalef(0.9,1.0,1.0);

glTranslatef(2.0,-1.05,1.2);

glutSolidCube(0.2);

glPopMatrix();

i=0;

while(i<1.7){

glPushMatrix();

glScalef(2.0,1.0,1.0);

glTranslatef(-0.75+i,-1.05,1.2);

glutSolidCube(0.2);

glPopMatrix();

i=i+0.243;

}

i=0;

while(i<1.8){

glPushMatrix();

glScalef(2.0,1.0,1.0);

glTranslatef(-0.85+i,-0.8,1.2);

glutSolidCube(0.2);

glPopMatrix();

i=i+0.243;

}

//ladrillos back

i=0;

while(i<1.8){

glPushMatrix();

glScalef(2.0,1.0,1.0);

glTranslatef(-0.85+i,-1.3,-1.2);

glutSolidCube(0.2);

glPopMatrix();

i=i+0.243;

}

glPushMatrix();

glScalef(0.7,1.0,1.0);

glTranslatef(-2.62,-1.05,-1.2);

glutSolidCube(0.2);

glPopMatrix();

glPushMatrix();

glScalef(0.9,1.0,1.0);

...

Descargar como (para miembros actualizados) txt (12 Kb)
Leer 1 página más »
Disponible sólo en Clubensayos.com