Está en la página 1de 25

UNIDAD 3.

GRAFICACION 3D

GRAFICACION 3D.
El trmino grficos 3D por computadora (o por ordenador) se refiere trabajos de arte grfico que son creados con ayuda de computadoras programas especiales. En general, el trmino puede referirse tambin proceso de crear dichos grficos, o el campo de estudio de tcnicas tecnologa relacionadas con los grficos tridimensionales. a y al y

Un grfico 3D difiere de uno bidimensional principalmente por la forma en que ha sido generado. Este tipo de grficos se originan mediante un proceso de clculos matemticos sobre entidades geomtricas tridimensionales producidas en un ordenador, y cuyo propsito es conseguir una proyeccin visual en dos dimensiones para ser mostrada en una pantalla o impresa en papel. En general, el arte de los grficos tridimensionales es similar a la escultura o la fotografa, mientras que el arte de los grficos 2D es anlogo a la pintura. En los programas de grficos por computadora esta distincin es a veces difusa: algunas aplicaciones 2D utilizan tcnicas 3D para alcanzar ciertos efectos como iluminacin, mientras que algunas aplicaciones 3D primarias hacen uso de tcnicas 2D.

-----------------------------------------------------------------------------------------------------------

3.1 REPRESENTACION DE OBJETOS EN TRES DIMENSIONES.

La representacin de los objetos en tres dimensiones sobre una superficie plana, de manera que ofrezcan una sensacin de volumen se llama Perspectiva. Se representan los objetos sobre tres ejes XYZ. En el eje Z, se representa la altura. En el eje Y, se representa la anchura y en el eje X, se representa la longitud. Los distintos tipos de perspectivas dependen de la inclinacin de los planos Los sistema ms utilizados son la isomtrica, la caballera y la cnica. Estudiaremos en este curso las dos primeras. Perspectiva Isomtrica. En ella los ejes quedan separados por un mismo ngulo (120). Las medidas siempre se refieren a los tres ejes que tienen su origen en un nico punto. Perspectiva Caballera. En ella los ejes X y Z tienen un ngulo de 90 y el eje Y con respecto a Z tiene una inclinacin de 135. En es te caso las medidas en los ejes X y Z son las reales y las del eje Y tiene un coeficiente de reduccin de 0.5.

DIBUJAR EN PERSPECTIVA.........
En ambas perspectivas, el sistema ms sencillo es llevar las tres vistas principales sobre los planos formados por los ejes: Alzado en el plano XZ. Planta en el plano XY. Perfil en el plano YZ. Cada una de las aristas que forman las vistas se prolonga paralelamente al eje que corresponda: Horizontal paralelo al eje de las X. Vertical paralelo al eje de las Z. Profundidad paralelo al eje de las Y.

Transformaciones en OpenGL....
En algunos tutoriales anteriores de OpenGL se han mencionado de manera fragmentaria los conceptos de transformaciones: En los Hola Mundo 3d en OpenGL y Hola Complicado Mundo OpenGLwin32 se utilizaron algunas transformaciones de proyeccin y viewport para ajustar la inicializacin de la ventana, pero sin entrar mucho en detalle acerca de su funcionamiento. Proyeccin: Trasforman una escena 3d abstracta, en una imagen plana que puede ser visualizada en una pantalla. Viewport: Ajustan el producto de la proyeccin a las dimensiones de un rectngulo contenedor (ventana). De vista: Que definen y afectan la posicin desde la cual se visualizan las escenas tridimensionales. Modelado: Sirven para manipular los objetos en la escena, permitiendo trasladarlos, rotarlos y deformarlos (escalarlos). Modelo-Vista: Son la combinacin de las dos transformaciones anteriores, que desde un punto de vista prctico son semejantes. void glMatrixMode( enum mode ); Permite seleccionar la matriz sobre la cual se realizaran las operaciones, los posibles valores de mode son TEXTURE, MODELVIEW, COLOR o PROJECTION . Por ahora las ms interesantes son MODELVIEW y PROJECTION, las otras se vern en su momento.

Void glLoadMatrix{fd} (T m[16]); Recibe una matriz de 44 que reemplaza la actual seleccionada. El arreglo es ordenado en forma de una matriz que tiene

orden Y, a diferencia de las matrices convencionales que tienen orden X, lo que quiere decir que tiene la forma. void glMultMatrix{fd}( T m[16] ); Multiplica la matriz actual por la matriz m[16] y reemplaza la matriz actual con el resultado de la operacin. La operacin resultante sera algo as como A = A M , donde A es la matriz actual, M es la matriz suministrada y A es la nueva matriz que resulta de la operacin y que reemplaza a A. void glLoadTransposeMatrix{fd}( T m[16] ); Realiza una funcin similar a LoadMatrix(), con la diferencia que trabaja sobre una matriz en orden X as.

void glMultTransposeMatrix{fd}( T m[16] ); Misma funcionalidad que MultMatrix() , solo que acta en base al la matriz en orden X, o sea la transpuesta. void glLoadIdentity( void ); Remplaza la matriz actual por la matriz identidad de tamao 44. Estas operaciones afectan directamente las matrices mencionadas anteriormente, debido a que las operaciones de alto nivel (trasladar, rotar, escalar) que existen mas adelante se concatenan, es decir su efecto se acumula sobre matriz actual, existen dos operaciones que permiten guardar la matriz actual en una pila y restaurarla cuando sea necesario, estas son: void glPushMatrix( void ); Coloca una copia de la matriz actual en la parte superior de la pila correspondiente. void glPopMatrix( void ); Saca el elemento superior de la pila, que pasa a reemplazar a la matriz actual. Estas dos operaciones son muy utilizadas, debido a que permiten realizar transformaciones sobre objetos diferentes, manteniendo algunas de las anteriores sin modificar.

Proyeccin........
Como ya se ha visto en tutoriales anteriores, OpenGL maneja 2 tipos de proyeccin, en perspectiva y ortogrfica, donde la primera corresponde a la visin realista de la escena, mientras que la segunda es una plana que no deforma las dimensiones de los objetos dependiendo de su distancia a la cmara.

Ortogrfica: Para ajustar la proyeccin ortogrfica se utiliza el siguiente grupo de funciones: glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far); gluOrtho2D(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top); Perspectiva: Existen dos manera de manejar la proyeccin en perspectiva, a travs de de una funcin gl o mediante la librera glu (una tercera puede ser realizar los clculos de la matriz manualmente. En el primer caso: glFrustrum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near, GLdouble far).

Transformaciones ModelView........
Una tarea muy comn en la creacin de grficos 2d, 3d y videojuegos es la de mover objetos par crear cierta animacin. La primera idea que se nos viene a la cabeza en el caso de OpeGL es que todo modelo est formado por primitivas, toda primitiva por puntos y finalmente todo punto por una tripleta de coordenadas XYZ, as que si se cambian las coordenadas todo de ah hacia arriba se mueve. void glRotate[fd](GLfloat angle, GLfloat x, GLfloat y, GLfloat z);

Hay que tener en cuenta las siguientes caractersticas a la hora de utilizar estas funciones: Estas tres operaciones afectan la matriz actual seleccionada, bien sea MODELVIEW o PROJECTION, generalmente para propsitos de rotar objetos dentro de la escena se utiliza la matriz MODELVIEW. El eje coordenado de referencia para las operaciones tanto en MODELVIEW como en PROJECTION se denomina eye coordinates, que traduce coordenadas de ojo o mejor vista. Este es un sistema inamovible y en ausencia de cualquier transformacin, la cmara est situada en (0,0,0) apuntando hacia la direccin Z negativa, con el vector arriba en el sentido Y positivo. Cada operacin que afecta la matriz MODELVIEW crea otro sistema coordenado para los objetos que se dibujen despus de realizada la trasformacin, dicho sistema difiere del bsico, es decir de las llamadas coordenadas de vista (eye coordinates) dependiendo de todo el conjunto de transformaciones realizadas desde el momento en que la matriz MODELVIEW dejo de ser la identidad. Una consecuencia de lo anterior es que las operaciones no son conmutativas, es decir que un llamado de glRotatef(), seguido de uno de glTranslatef() produce un efecto diferente a llamar las operaciones en orden inverso. Esto se ve mejor ilustrado en el grfico: Es importante aprender a utilizar correctamente glPushMatrix(), glPopMatrix() y otras operaciones que permitan salvar y restaurar estados de matriz, debido a que permiten realizar translaciones y rotaciones especificas para un cierto objeto, sin alterar los otros.

Hardware....
En realidad, el API de ogl est pensado para trabajar bajo el respaldo de un hardware capaz de realizar las operaciones necesarias para el renderizado, pero si no se dispone de ese hardware, estas operaciones se calcularan por medio de un software contra la CPU del sistema. As que los requerimientos hardware son escasos, aunque cuanto mayor sea las capacidades de la maquina, mayor ser el rendimiento de las aplicaciones ogl.

Windows.....
En principio, cualquier versin de windows viene con las libreras necesarias para ejecutar cualquier aplicacin que utilice OpenGL. Para el desarrollo de las mismas, el Microsoft Visual Studio, y en particular Visual C++ trae tambin todo lo necesario. Puedes consegir, adems, la ltima versin de la GLUT en la web de Nate Robins.

Coordenadas oculares......
Las coordenadas oculares se sitan en el punto de vista del observador, sin importar las transformaciones que tengan lugar. Por tanto, estas coordenadas representan un sistema virtual de coordenadas fijo usado como marco de referencia comn. Transformaciones Las transformaciones son las que hacen posible la proyeccin de coordenadas 3D sobre superficies 2D. Tambin son las encargadas de mover, rotar y escalar objetos. El modelador En esta seccin se recogen las transformaciones del observador y del modelado puesto que, como se ver en el apartado, constituyen, al fin y al cabo, la misma transformacin.

Transformaciones del observador.....


La transformacin del observador es la primera que se aplica a la escena, y se usa para determinar el punto ms ventajoso de la escena. Por defecto, el punto de vista est en el origen (0,0,0) mirando en direccin negativa del eje z. La transformacin del observador permite colocar y apuntar la cmara donde y hacia donde se quiera. Transformaciones del modelo Estas transformaciones se usan para situar, rotar y escalar los objetos de la escena. La apariencia final de los objetos depende en gran medida del orden con el que se hayan aplicado las transformaciones. Transformaciones de la proyeccin

La transformacin de proyeccin se aplica a la orientacin final del modelador. Esta proyeccin define el volumen de visualizacin y establece los planos de trabajo Los dos tipos de proyeccin ms utilizados son la ortogrfica y la perspectiva, que veremos ms adelante. Transformaciones de la vista En el momento en que se ha terminado todo el proceso de transformaciones, solo queda un ltimo paso: proyectar lo que hemos dibujado en 3D al 2D de la pantalla, en la ventana en la que estamos trabajando. Matrices Las matemticas que hay tras estas transformaciones se simplifican gracias a las matrices. Cada una de las transformaciones de las que se acaba de hablar puede conseguirse multiplicando una matriz que contenga los vrtices por una matriz que describa la transformacin. El canal de transformaciones Para poder llevar a cabo todas las transformaciones de las que se acaba de hablar, deben modificarse dos matrices: la matriz del Modelador y la matriz de Proyeccin. La matriz del modelador La matriz del modelador es una matriz 4x4 que representa el sistema de coordenadas transformado que se est usando para colocar y orientar los objetos. ---------------------------------------------------------------------------------------------------------------------------------

3.2 VISUALIZACION DE OBJETOS........

No cabe duda de que la representacin tridimensional del territorio abre nuevas posibilidades en el mbito geogrfico. Pero el 3D por s solo no est justificado. Las acciones para la navegacin por una escena tridimensional son ms complejas que las necesarias para la navegacin en un plano. Cada aplicacin de software ha resuelto de manera distinta, la manera de controlar la elevacin, rotacin y cabeceo del punto de vista, lo que requiere un

aprendizaje por parte del usuario. Adems, el tiempo real de las escenas exige ms cantidad de recursos, tanto de clculo como de datos. La representacin tridimensional es conveniente cuando la visualizacin de una tercera magnitud, tpicamente la elevacin del terreno, resulta til para la interpretacin de los datos que se quieren mostrar. Se presentan a continuacin algunos de los usos ms comunes. GRAFICACION 2D.

GRAFICACION

3D.

PROYECCIONES.....
Existen dos mtodos bsicos para proyectar objetos tridimensionales sobre una superficie de visin bidimensional. Todos los puntos del objeto pueden proyectarse sobre la superficie a lo largo de lneas paralelas o bien los puntos

pueden proyectarse a lo largo de las lneas que convergen hacia una posicin denominada centro de proyeccin. Los dos mtodos llamados proyeccin en paralelo y proyeccin en perspectiva, respectivamente, se ilustran. En ambos casos, la interseccin de una lnea de proyeccin con la superficie de visin determinada las coordenadas del punto proyectado sobre este plano de proyeccin. Por ahora, se supone que el plano de proyeccin de visin es el plano z = 0 de un sistema de coordenadas del izquierdo.

PROYECCIN EN PARALELO.....
Una proyeccin en paralelo preserva dimensionar relativas de los objetos y esta es la tcnica que se utiliza en dibujo mecnico para producir trazos a escala de los objetos en las dimensiones. Este mtodo sirve para obtener vistas exactas de varios lados de un objeto, pero una proyeccin en paralelo no ofrece una presentacin realista del aspecto de un objeto tridimensional.

Las vistas formadas con proyecciones en paralelo se pueden caracterizar acuerdo con el angulo que la direccin de proyeccin forma con el plano proyeccin. Cuando la direccin de proyeccin es perpendicular al plano proyeccin, se tiene una proyeccin ortogonal.Una proyeccin que no perpendicular al plano se denomina proyeccin oblicua.

de de de es

PROYECCIN ORTOGONAL......
La Proyeccin ortogonal es aquella cuyas rectas proyectantes auxiliares son perpendiculares al plano de proyeccin (o a la recta de proyeccin), establecindose una relacin entre todos los puntos del elemento proyectante con los proyectados. Existen diferentes tipos: Vista A: Vista frontal o alzado Vista B: Vista superior o planta Vista C: Vista derecha o lateral derecha Vista D: Vista izquierda o lateral izquierda Vista E: Vista inferior Vista F: Vista posterior

Las ecuaciones de transformacin parea efectuar una proyeccin paralela ortogonal son directas.Para cualquier punto (x, y, z), el punto de proyeccin (Xp, Yp, Zp) sobre la superficie de visin se obtiene como Xp=X, Yp=y, Xp=0.

PROYECCIN OBLICUA. .....

Es aquella cuyas rectas proyectantes auxiliares son oblicuas al plano de proyeccin, establecindose una relacin entre todos los puntos del elemento proyectante con los proyectados.

Una proyeccin Oblicua se obtiene proyectando puntos a lo largo de lneas paralelas que no son perpendiculares al plano de proyeccin. La figura muestra una proyeccin oblicua de un punto (x, y, z) por una lnea de proyeccin a la posicin (xp, Yp).

------------------------------------------------------------------------------------------------------------

3.3 TRANSFORMACIONES TRIDIMENSIONALES.....


MTODO DE TRASLACIN...
En una representacin coordenada homognea tridimensional, un punto es trasladado (fig.11.1) de la posicin (x,y,z) a la posicin (x,y,z) con la Operacin matricial. [x,y,z,1]=[x, y, z, 1]

Los parmetros Tx, Ty, Tz, que especifican distancias de traslacin para las coordenadas, reciben la asignacin de cualquier valor real. La representacin matricial de la ecuacin 11.1 es equivalente a las tres ecuaciones x =x + Tx, y = y + Ty, z =z + Tz Un objetivo se traslada en tres dimensiones transformando cada punto definidor del objeto. La traslacin de un objeto representada como un conjunto de superficies poligonales se efecta trasladando los valores coordenados para cada vrtice de cada superficie. El conjunto de posiciones coordenadas trasladadas de los vrtices define entonces la nueva posicin del objeto.

MTODO DE ESCALACIN....

Operacin matricial. [x,y,z,1]=[x, y, z, 1]

Los parmetros de escalacin Sx, Sy, Sz, se les asigna asignacin cualquier valor positivo. Cuando la transformacin 11-3 se aplica para definir puntos en un objeto, el objeto se escala y se desplaza en relacin con el origen coordenado.

MTODO DE ROTACIN.
Para especificar una transformacin de rotacin de un objeto, se debe designar un eje de rotacin (en torno al cual se har girar el objeto) y la cantidad de rotacin angular. En aplicaciones bidimensionales, el eje de rotacin siempre es perpendicular al plano xy. En tres dimensiones, un eje de rotacin puede tener cualquier orientacin espacial.los ejes de rotacin ms fciles de manejar son aquellos que son paralelos a los ejes coordenados. Asimismo, podemos valernos de las rotaciones en torno a los tres ejes coordenados con el fin de producir una rotacin en torno a cualquier eje de rotacin especificado en forma arbitraria. Las direcciones de rotacin positivas en torno a los ejes coordenados son en sentido contrario al del reloj, como se observa a lo largo de la posicin positiva de cada eje en direccin del origen. Operacin matricial de rotacin en el eje Z El parmetro especifica el ngulo de rotacin. [x,y,z,1]=[x, y, z, 1]

Imagen que muestra la rotacin de un objeto en torno al eje Z.

Operacin matricial de rotacin en el eje X [x,y,z,1]=[x, y, z, 1]

Operacin matricial de rotacin en el eje y [x,y,z,1]=[x, y, z, 1]

REPRESENTACIN EN UN GRFICA 3D DE LOS TRES MTODOS ANTERIORES:

-----------------------------------------------------------------------------------------------------------

3.4 LINEAS Y SUPERFICIES CURVAS......


LINEAS..

La recta es una sucesin infinita o continua de puntos a lineados en una sola direccin. Es una de las primitivas grficas en computacin grfica viene dada por la ecuacin y= m.x+b, donde m es la pendiente de la recta y v es el corte con el eje y. Como los pixeles se grafican en posiciones enteras, la linea trazada solo puede aproximar posiciones de lineas reales entre los puntos extremos especificados. Una linea recta debe dibujarse como una sucesin de pixeles. Efecto de escalera que se produce cuando se genera una linea como una serie de pixeles .

TRASFORMAR PRIMITIVAS EN PIXELES Las coordenadas de los pixeles deben estar lo mas cerca posible de una linea recta real. Un algoritmo debe cumplir con: *La secuencia de pixeles debe ser lo mas recta que se pueda. *Las lineas deben tener el mismo grosor e intensidad sin importar el grado de inclinacin. *Las lineas deben dibujarse lo mas rpido posible. ALGORITMOS PARA TRAZO DE LINEAS...... ALGORITMO DDA.

El analizador diferencial digital(DDA) es un algoritmo que sirve para calcular posiciones de pixeles a lo largo de una linea, mediante el uso de la ecuacin. y=m.x Ecuacin bsica de la recta y=m.x+b m es la pendiente y v es la interseccin con el eje y. ALGORITMO DE BRESENHAM. Calcula cual de dos pixeles es el mas cercano a la trayectoria de una linea. El pixel x(i),y(i) se divide en (xi+1,yi)(xi+1,yi+1) hay que decidir cual pintar calculando la distancia vertical entre el centro de cada pixel y la linea real. Las posiciones de los pixeles se representan por las reas rectangulares numeradas.

Seccin de una retcula de la pantalla donde se desplegara una linea que pasara por: (Xi,Yi)

De aqu se tiene y=m(xi+1)+b Definimos: d1=y-yi =m(xi+1)+b-yi d2=(y1+1)-y =y1+1-m(xi+1)-b la diferencia es :

definimos pi como: donde c es:

obtenemos pi+1 de pi como:

ATRIBUTOS DE LAS PRIMITIVAS DE SALIDA..... Estilo de lineas *Los atributos de estilo de linea determinan la forma en que se desplegara una linea por medio de una rutina de trazo de lineas. Los atributos de linea son su tipo,su anchura y su color. Tipo de linea Los atributos de linea incluye las lineas solidas,lineas punteadas con lineas y punteadas. El mtodo setStrokeStyle permite cambiar el estilo de linea.

Este mtodo acepta los siguientes valores: a) Graphics.SOLID - linea solida b) Graphics.DOTTED- linea de puntos

GRAPHICS 2D SETSTROKE......
Un objeto basicstroke contiene informacin sobre la anchura de la linea, estilo de uniones, estilos finales, y estilo de punteado.Esta informacin se usa cuando se dibuja una Shape con el mtodo DRAW. La anchura de linea es la longitud de la linea medida perpendicularmente a su trayectoria. La anchura de la linea se especifica como un valor float en las unidades de coordenadas de usuario, que es equivalente 1/72 pulgadas cuando se utiliza la tranformacion por defecto. Nota: Para rellenar o puntear un grfico primitivo,necesitamos hacer dos llamadas separadas a mtodos fill o drawString para rellenar el interior y draw para dibujar el exterior. Los 3 estilos de linea usados en este ejemplo ancho, estrecho y punteado son ejemplares de: BasicStroke: // Sets the Stroke. ... case 0 : g2.setStroke(new BasicStroke(3.0f)); break; case 1 : g2.setStroke(new BasicStroke(8.0f)); break; case 2 : float dash[] = {10.0f}; g2.setStroke(new BasicStroke(3.0f, BasicStroke.CAP_BUTT, BasicStroke.JOIN_MITER, 10.0f, dash, 0.0f)); break;

BASICSTROKE SOPORTA 3 ESTILOS DE UNIN: *JOIN_BEVEL *JOIN_MITER *JOIN_ROUND El estilo de finales es la decoracin que se aplica cuando un segmento de

linea termina. BASICSTROKE soporta 3 estilos de finalizacin:*CAP_BUTT *CAP_ROUND *CAP_SQUARE El elemento 0 representa el primer punteado , el elemento 1 el primer espacio , etc. La fase de punteado es un desplazamiento en el patrn de punteado, tambin especificado en unidades de coordenadas de usuario. La fase de punteado indica que parte del patrn de punteado se aplica al principio de la linea. PATRN DE RELLENO. Los patrones de relleno estn definidos por el atributo Paint en el contexto Graphics2d. Para seleccionar el atributo paint, se crea un ejemplar de un objecto que implemente el interface paint y eso pasa dentro del mtodo Graphics2d setPaint. ANCHURA DE LINEA. La implementacion de las opciones de anchura de lineas dependen del tipo de dispositivo de salida que se utilice Una linea ancha en un monitor de vdeo podra trazarse como lneas paralelas adyacentes, mientras que una grafica dora de pluma podra requerir cambios de pluma. Como sucede con otros atributos puede usarse como comando de anchura de lnea para fijar la anchura regular de la lnea. Color de lnea. Cuando un sistema ofrece sistemas de color (o bien de intensidad) un parmetro que da el ndice de color regular se incluye en la lista de valores de atributos del sistema. Mtodo para cambiar color. *setColor(int color) *setColor(int rojo,int verde,int azul)

CONCLUSIN............
Graficos 3D
Se llaman grficos 3D a todos los objetos que se pueden dibujar en un espacio R3: puntos, segmentos, curvas, superficies y varios cuerpos formados por caras poligonales, as como textos y macros.

En una palabra, son grficos que tienen profundidad y adems aportan mucha sensacin de realismo. En los juegos en 3d el personaje que manejamos o cualquier bot se puede mover en los tres ejes cartesianos: x, y, z. Comparamos por ejemplo el conocido juego Counterstrike con el Mario de antao, en el primero te puedes mover izquierda, derecha y arriba; en cambio, si lo comparamos con el segundo ves que no te puedes mover en los tres puntos, solo se mueve en lateral (izquierda y derecha). Por eso llegamos a la conclusin que Counterstrike est en tres dimensiones y el juego de Mario en 2d. La mayora de juegos 3d han sido modelados mediante polgonos formando una malla y a continuacin han sido renderizados. En la primera imagen se puede apreciar la sensacin de profundidad, de este modo llegamos a la conclusin que el grfico est en 3d como se puede apreciar fcilmente. Si lo comparamos con la segunda imagen observaremos muchas diferencia, para empezar el foto realismo, no tiene el mismo realismo la primera que la segunda; tambin podemos ver que el personaje de la segunda solo se puede mover de lado. De esta manera llegamos a la conclusin que es una imagen en 2 dimensiones. (x, y)

3D: