|
|
| (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> |
| | + | --> |