Opengl Android
1
Introducción a OpenGL ES: ¿qué es OepnGL?
¿Qué es? Variante simplificada de la API OpenGL para dispositivos integrados La promueve y define el grupo Khronos, consorcio de empresas dedicadas a hardware y software gráfico OpenGL es una API multilenguaje y multiplataforma para realizar gráficos 2D y 3D. Permite desarrollar escenas a partir de primitivas gráficas(puntos, líneas, triángulos…)
2
Modelo OpenGL
Utilidad:
Uso de OpenGL ES: API para gráficos 3D en Symbian OS y Android OpenGL ES 2.0 para Nokia N900 con SO Maemo (basado Linux) SDK de Iphone PlayStation 3
3
Modelo OpenGL
Modelo OpenGL Antes de visualizar objetos por pantallas se debe realizar un modelado. Los objetos del mundo real se pueden trasladar al mundo virtual utilizandovértices, caras, aristas… El modelado no es trivial: cómo se modela una esfera? OpenGL utiliza su propio modelo 3D y su pipeline para visualizar los objetos por pantalla. Los vértices, caras y demás tienen una posición conocida en el espacio 3dimensional, ahora falta saber cómo se visualizan los objetos.
4
Modelo OpenGL
Visualización de un objeto: la cámara
Tenemos almacenado un objeto en 3Den nuestro modelo: ¿qué se necesita saber para visualizarlo? ¿Desde donde lo observamos.? ¿Con qué orientación lo observamos? ¿A qué distancia estamos del objeto? ¿Cual es nuestro ángulo de apertura? En OpenGL estas preguntas se traducen utilizando la pirámide de visión (frustrum)
5
Modelo OpenGL
6
Modelo OpenGL
Visualización de un objeto
Ajustando los parámetros de la pirámide devisión se pueden simular muchos de los aspectos de una cámara real. Parámetros relevantes: Aspect ratio: relación ancho / alto Ángulo de altura (FOV): ángulo de apertura superior de la cámara Znear y Zfar: planos respecto a la cámara que recortan la escena. Posición de la cámara: ¿en que posición del SC global está? Up (view-up vector): vector orientación de la cámara
7
Modelo OpenGLÁngulo de visión
Cambiar el ángulo de visión afecta a cómo vem os la escena. Un ángulo de visión mayor implica ver los objetos más pequeños En OpenGL daremos el fovy (ángulo superior) y el aspect ratio. Con el AR OpenGL sabe cómo calcular el fovx.
8
Modelo OpenGL
View-up vector
Define la orientación de la cámara Se da en tres coordenadas: (x,y,z) Es el vector orientación: (0,1,0) indica quela cámara está orientada como en la imagen 1 Un (1,0,0) indicaría que la cámara está girada 90 grados
9
Modelo OpenGL
Planos de corte
En OpenGL la pirámide de visión no es perfecta: se le pueden aplicar dos planos de corte. La escena captada será la que esté DENTRO de esos dos planos de corte Se representan como Znear y Zfar, con dos número que representan la distancia a la cámara. Lo quequede fuera de ese Volumen de Visión no aparecerá.
10
Modelo OpenGL
Definición de la cámara
Para crear nuestra cámara perspectiva, utilizaremos: gluPerspective(fvy, aspectratio, znear, zfar); Para decirle a OpenGL donde está nuestra cámara y a donde mirar, se utilizará: gluLookAt( camx, camy, camz, //posición de la cámara lookx, looky, lookz, //a donde apunta la cámara upx, upy, upz); //orientación de la cámara (view-up vector) No confundir el SC absoluto con el SC de la cámara
11
Modelo OpenGL
Movimiento de la cámara
Para cambiar la ubicación y orientación de la cámara se aplican transformaciones geométricas. Virtualmente, desde el punto de vista de la imagen, es lo mismo acercar la cámara a un objeto que acercar el objeto a la cámara. Implicaciones: lastransformaciones se realizarán a nivel de modelo, es decir, la cámara se puede interpretar como algo fijo y lo que se mueve son los objetos. Al mover los objetos, todo lo que entre dentro del frustrum de visión dela cámara aparecerá en la pantalla. La función gluLookAt(..) posiciona la cámara respecto al mundo.
12
Transformaciones geométricas
Sistema de coordenadas Al iniciar OpenGL tiene el...
Regístrate para leer el documento completo.