|
|
(12 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> |
| | | |
Línea 14: |
Línea 14: |
| 2.-'''''Coordenadas del ojo''''' | | 2.-'''''Coordenadas del ojo''''' |
| Proyección | | Proyección |
| + | </div> |
| + | <div class="slide"> |
| + | ===TRANSFORMACIÓN EN EL PIPELINE GRÁFICO=== |
| 3.- '''''Cooredenadas de recorte''''' | | 3.- '''''Cooredenadas de recorte''''' |
| Perspectiva | | Perspectiva |
Línea 20: |
Línea 23: |
| 5.-'''''Coordenadas de la ventana (x,y)''''' | | 5.-'''''Coordenadas de la ventana (x,y)''''' |
| </div> | | </div> |
− | ===Coordenadas globales - cooredenadas locales=== | + | <div class="slide"> |
− | *Dibujamos un eje de coordenadas x,y,z
| + | ===Trabajo a realizar=== |
− | <source lang=cpp>
| + | {{Objetivo| |
− | void dibujaCoordenadas(void){
| + | #Realizaremos una escena de una '''''tetera''''' |
− | porFlechitas();
| + | #en el proceso de visualización iremos viendo todo el proceso de transforación que se va produciendo con OpenGL. |
− | glLineWidth(2);
| + | #Realizaremos un seguimiento de '''''la pipeline gráfica'''''}} |
− | glBegin(GL_LINES);
| + | </div> |
− | glLineWidth(3);
| + | <div class="slide"> |
− | 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>
| + | |
− | *A OpenGL le especificamos bien por puntos o por vectores estos valores
| + | |
− | *OpenGL rederiza en la pantalla y visuzliza dichos puntos según le especifiquemos
| + | |
− | *Así quedaría
| + | |
− | [[Imagen:CoordenadasOpenGLBásico.png|200px]]
| + | |
− | *Lo giramos para ver la coordenada z. Esta parte luego la veremos
| + | |
− | *PAra conseguirlo he girado 40º en el eje de x y 40º en el eje de y
| + | |
− | <source lang=cpp>
| + | |
− | .. .. ..
| + | |
− | glMatrixMode(GL_MODELVIEW);
| + | |
− | glLoadIdentity();
| + | |
− | glRotatef(40.0f,1,0,0);
| + | |
− | glRotatef(40.0f,0,1,0);
| + | |
− | glutPostRedisplay();
| + | |
− | .. .. ..
| + | |
− | </source>
| + | |
− | [[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
| + | |
− | | + | |
| {{Recursos de la Web| | | {{Recursos de la Web| |
− | http://asanchez.cs.buap.mx/arreglos_vertices.pdf | + | *http://www.oocities.org/valcoey/escena.html |
| }} | | }} |
− | | + | </div> |
| + | <!-- |
| | | |
| | | |
Línea 181: |
Línea 116: |
| } | | } |
| </source> | | </source> |
| + | --> |