|
|
(16 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
− | {{:Usuario:ManuelRomero/grafica/nav}} | + | {{:Usuario:ManuelRomero/grafica/escena1/nav}} |
| <br> | | <br> |
| + | |
| + | {{#widget:Slides}} |
| + | |
| + | <div class="slides layout-regular template-default"> |
| + | |
| + | <div class="slide"> |
| + | ===TRANSFORMACIÓN EN EL PIPELINE GRÁFICO=== |
| + | *Basado en un sistema de visualizacion |
| + | Objeto 3d ====>>> represntación en pantalla bidimensional |
| + | 1.- '''''Coordenadas del objeto''''' (x,y,z,w) |
| + | Transformación ModelView |
| + | 2.-'''''Coordenadas del ojo''''' |
| + | Proyección |
| + | </div> |
| + | <div class="slide"> |
| + | ===TRANSFORMACIÓN EN EL PIPELINE GRÁFICO=== |
| + | 3.- '''''Cooredenadas de recorte''''' |
| + | Perspectiva |
| + | 4.-'''''Coordenadas del dispositivo''''' |
| + | Viewport |
| + | 5.-'''''Coordenadas de la ventana (x,y)''''' |
| + | </div> |
| + | <div class="slide"> |
| + | ===Trabajo a realizar=== |
| + | {{Objetivo| |
| + | #Realizaremos una escena de una '''''tetera''''' |
| + | #en el proceso de visualización iremos viendo todo el proceso de transforación que se va produciendo con OpenGL. |
| + | #Realizaremos un seguimiento de '''''la pipeline gráfica'''''}} |
| + | </div> |
| + | <div class="slide"> |
| + | {{Recursos de la Web| |
| + | *http://www.oocities.org/valcoey/escena.html |
| + | }} |
| + | </div> |
| + | <!-- |
| + | |
| + | |
| + | |
| + | |
| + | |
| + | |
| ===Esqueleto de un programa openGL=== | | ===Esqueleto de un programa openGL=== |
| <source lang=cpp> | | <source lang=cpp> |
Línea 75: |
Línea 116: |
| } | | } |
| </source> | | </source> |
− | | + | --> |
− | ===TRANSFORMACIÓN EN EL PIPELINE GRÁFICO===
| + | |
− | #Coordenadas del objeto (x,y,z,w)
| + | |
− | Transformación ModelView
| + | |
− | #Coordenadas del ojo
| + | |
− | Proyección
| + | |
− | #Cooredenadas de recorte
| + | |
− | Perspectiva
| + | |
− | #Coordenadas del dispositivo
| + | |
− | Viewport
| + | |
− | #Coordenadas de la ventana (x,y)
| + | |
− | ===Coordenadas globales - cooredenadas locales===
| + | |
− | *Dibujamos un eje de coordenadas x,y,z
| + | |
− | <source lang=cpp>
| + | |
− | void dibujaCoordenadas(void){
| + | |
− | porFlechitas();
| + | |
− | glLineWidth(2);
| + | |
− | glBegin(GL_LINES);
| + | |
− | glLineWidth(3);
| + | |
− | glColor3f(1,0,0);//Eje X
| + | |
− | glVertex3f(0,0,0);
| + | |
− | glVertex3f(15,0,0);
| + | |
− |
| + | |
− | glColor3f(0,1,0);//Eje X
| + | |
− | glVertex3f(0,0,0);
| + | |
− | glVertex3f(0,15,0);
| + | |
− | glColor3f(0,0,1);//Eje z
| + | |
− | glVertex3f(0,0,0);
| + | |
− | glVertex3f(0,0,15);
| + | |
− | glLineWidth(1);
| + | |
− | glEnd();
| + | |
− | glPushMatrix();
| + | |
− | glFlush();
| + | |
− | }
| + | |
− | </source>
| + | |
− | *Así quedaría
| + | |
− | [[Imagen:CoordenadasOpenGLBásico.png|200px]]
| + | |
− | *Lo giramos para ver la coordenada z
| + | |
− | [[Imagen:CoordenadasOpenGL.png|200px]]
| + | |
− | *Este eje de coordenadas que hemos dibujado representaría el eje de coordenadas del objeto
| + | |
− | *Ahora dibujamos un objeto en él, por ejemplo una tetera
| + | |
− | *con la barra espaciadora podemos cambiar su representación, sólida o de alambres
| + | |
− | *Representación sólida
| + | |
− | [[Imagen:tetera1.png]]
| + | |
− | *Represetnación en alambres
| + | |
− | [[Imagen:tetera2.png]]
| + | |
− | *Representación girada
| + | |
− | [[Imagen:tetera3.png]]
| + | |
− | *Ahora hemos dibujado la tetera respecto al eje de coordenadas del mundo
| + | |
− | ===Eje de coordenadas del objeto===
| + | |
− | *Planteamos un nuevo eje de coordenadas
| + | |
− | *Podemos ver que respecto al eje de coordenadas del mundo (0,0,0), tiene los siguientes vectores
| + | |
− | (10,10,10)- (15,15,10)
| + | |
− | (10,10,10)- (5,15,10)
| + | |
− | (10,10,10)- (10,10,15)
| + | |
− | *Gráficamente lo podemos ver en la imagen (siempre respecto al eje de coordenadas de nuestro mundo (0,0,0) como centro
| + | |
− | [[Image:coordenadasObjeto1.png]]
| + | |
− | *Lo giramos para ver el componente z (Se observa en diferente posición pues lo he rotado respecto a X e Y de las coordenadas del mundo no de ella misma
| + | |
− | [[Image:coordenadasObjeto2.png]]
| + | |
− | *Vemos los dos ejes de coordenadas
| + | |
− | [[Image:coordenadasObjeto3.png]]
| + | |
− | *Lo giramos para verlo un poco mejor
| + | |
− | *Vemos el objeto en el eje de coordenadas del mundo global y lo queremos pasar al eje de coordenadas del mundo local o del objeto
| + | |
− | [[Image:coordenadasObjeto4.png]]
| + | |
− | ===Vamos a ver como pasar el objeto a las coordenadas locales
| + | |
− | *Para ello vamos a multiplicar cada vétice del objeto por una matriz de escena
| + | |
− | *Esta matriz permite realizar operaciones de rotación traslación y escalado
| + | |
− | *En nuestro caso queremos coger la tetera y
| + | |
− | #Trasladarla al punto 10,10,10.
| + | |
− | ##trasladar 10 unidades en X
| + | |
− | ##trasladar 10 unidades en Y
| + | |
− | ##trasladar 10 unidades en Z
| + | |
− | #Rotar 15 grados
| + | |
− | Son en total 4 operaciones
| + | |