Mi carro con Degradados de colores
Mi carro con Degradados de colores
Dibujado de un carro en OpenGL utilizando ????
PDF File
Jose Angel Espinoza Portillo
Tarea 7 • Graficacion • 31 Octubre 2007
Dibujado de un carro en OpenGL utilizando ????
PDF File
Jose Angel Espinoza Portillo
Tarea 7 • Graficacion • 31 Octubre 2007
Bases
Se utilizara el mismo proyecto de la tarea 6 con la modificación que se le agregara el código necesario para que pueda ser mostrado con colores degradados.OpenGL para dibujar una figura, necesita que se le proporcionen los vértices de la misma, y si quieres que la superficie de esta figura tenga algún color antes de escribir el primer vértice se debe especificar el color que tendrá con la función glColor3f especificando los valores de Rojo, Verde y Azul en niveles del 0 al 1.
Pero si se quiere hacer un degradado es tan fácil como asignarle u color diferente a cada nodo antes de cada glVertex3fv poner un glColor3f especificando el color del nodo y al momento de renderizar la aplicación el OpenGL automáticamente dibuja el degradado.
Implementación
Optimizaciones para dar un buen aspecto
Cada nodo es miembro de mas de una sola figura, así que para fines de presentación cada que se dibuje una figura que utilice un nodo compartido, este nodo tendrá el mismo color que tiene en las demás figuras a las que pertenece. Y para que no haya confusiones se hace esto con una matriz, en la cual se le asigna el color del nodo en sus valores de RVA (RGB en ingles) y mandando a dibujar. Esta matriz esta representada en el código de la siguiente manera.
v2[0][0] = 0.0; v2[0][1] = 0.0; v2[0][2] = 0.0;
v2[1][0] = 0.0; v2[1][1] = 0.0; v2[1][2] = 1.0;
v2[2][0] = 0.0; v2[2][1] = 1.0; v2[2][2] = 1.0;
v2[3][0] = 1.0; v2[3][1] = 0.0; v2[3][2] = 0.0;
v2[4][0] = 1.0; v2[4][1] = 0.0; v2[4][2] = 1.0;
v2[5][0] = 1.0; v2[5][1] = 1.0; v2[5][2] = 0.0;
v2[6][0] = 1.0; v2[6][1] = 1.0; v2[6][2] = 1.0;
v2[7][0] = 0.0; v2[7][1] = 0.0; v2[7][2] = 0.5;
v2[8][0] = 0.0; v2[8][1] = 0.5; v2[8][2] = 0.0;
v2[9][0] = 0.0; v2[9][1] = 0.5; v2[9][2] = 0.5;
v2[10][0] = 0.5; v2[10][1] = 0.0; v2[10][2] = 0.0;
v2[11][0] = 0.5; v2[11][1] = 0.0; v2[11][2] = 0.5;
v2[12][0] = 0.5; v2[12][1] = 0.5; v2[12][2] = 0.0;
v2[13][0] = 0.5; v2[13][1] = 0.5; v2[13][2] = 0.5;
v2[14][0] = 0.3; v2[14][1] = 1.0; v2[14][2] = 0.8;
v2[15][0] = 0.0; v2[15][1] = 0.0; v2[15][2] = 1.0;
Así se asigna para v2[n][0] el valore de rojo y para v2[n][1] y v2[n][2] los valores de Verde y Azul respectivamente. Este código se ingresa en el el constructor de la clase junto a v1.
Dibujado
A la hora del dibujado se implementa la explicacion dada en area de Bases, pero referenciando el numero de el nodo que se esta dibujando, como lo veremos a continuacion:
glBegin(GL_QUADS);
glColor3fv( &v1[0][0] );
glVertex3fv( &v1[0][0] );
glColor3fv( &v1[1][0] );
glVertex3fv( &v1[1][0] );
glColor3fv(&v1[2][0] );
glVertex3fv( &v1[2][0] );
glColor3fv( &v1[3][0]);
glVertex3fv( &v1[3][0] );
glColor3fv( &v1[8][0] );
glVertex3fv( &v1[8][0] );
glColor3fv( &v1[9][0] );
glVertex3fv( &v1[9][0] );
glColor3fv( &v1[10][0] );
glVertex3fv( &v1[10][0] );
glColor3fv( &v1[11][0] );
glVertex3fv( &v1[11][0] );
glColor3fv( &v1[12][0] );
glVertex3fv( &v1[12][0] );
glColor3fv( &v1[13][0] );
glVertex3fv( &v1[13][0] );
glColor3fv( &v1[14][0] );
glVertex3fv( &v1[14][0] );
glColor3fv( &v1[15][0] );
glVertex3fv( &v1[15][0] );
glColor3fv( &v1[0][0] );
glVertex3fv( &v1[0][0] );
glColor3fv( &v1[3][0] );
glVertex3fv( &v1[3][0] );
glColor3fv( &v1[15][0] );
glVertex3fv( &v1[15][0] );
glColor3fv( &v1[12][0] );
glVertex3fv( &v1[12][0] );
glColor3fv( &v1[8][0] );
glVertex3fv( &v1[8][0] );
glColor3fv( &v1[4][0] );
glVertex3fv( &v1[4][0] );
glColor3fv( &v1[7][0] );
glVertex3fv( &v1[7][0] );
glColor3fv( &v1[11][0] );
glVertex3fv( &v1[11][0] );
glColor3fv( &v1[0][0] );
glVertex3fv( &v1[0][0] );
glColor3fv( &v1[1][0] );
glVertex3fv( &v1[1][0] );
glColor3fv( &v1[13][0] );
glVertex3fv( &v1[13][0] );
glColor3fv( &v1[12][0] );
glVertex3fv( &v1[12][0] );
glColor3fv( &v1[4][0] );
glVertex3fv( &v1[4][0] );
glColor3fv( &v1[5][0] );
glVertex3fv( &v1[5][0] );
glColor3fv( &v1[9][0] );
glVertex3fv( &v1[9][0] );
glColor3fv( &v1[8][0] );
glVertex3fv( &v1[8][0] );
glColor3fv( &v1[1][0] );
glVertex3fv( &v1[1][0] );
glColor3fv( &v1[2][0] );
glVertex3fv( &v1[2][0] );
glColor3fv( &v1[14][0] );
glVertex3fv( &v1[14][0] );
glColor3fv( &v1[13][0] );
glVertex3fv( &v1[13][0] );
glColor3fv( &v1[5][0] );
glVertex3fv( &v1[5][0] );
glColor3fv( &v1[6][0] );
glVertex3fv( &v1[6][0] );
glColor3fv( &v1[10][0] );
glVertex3fv( &v1[10][0] );
glColor3fv( &v1[9][0] );
glVertex3fv( &v1[9][0] );
glColor3fv( &v1[2][0] );
glVertex3fv( &v1[2][0] );
glColor3fv( &v1[3][0] );
glVertex3fv( &v1[3][0] );
glColor3fv( &v1[15][0] );
glVertex3fv( &v1[15][0] );
glColor3fv( &v1[14][0] );
glVertex3fv( &v1[14][0] );
glColor3fv( &v1[10][0] );
glVertex3fv( &v1[10][0] );
glColor3fv( &v1[11][0] );
glVertex3fv( &v1[11][0] );
glColor3fv( &v1[7][0] );
glVertex3fv( &v1[7][0] );
glColor3fv( &v1[6][0] );
glVertex3fv( &v1[6][0] );
glEnd();
0 Comments:
Post a Comment
Subscribe to Post Comments [Atom]
<< Home