¿Qué es una cámara OpenGL?

“Cámara OpenGL®” es el nombre que se le da a la posición virtual de un espectador dentro de una escena de Open Graphics Library® (OpenGL®). Se define por la posición del espectador dentro de la escena, y luego la ubicación o dirección en la que mira el espectador. La posición de la cámara en una escena OpenGL® determinará qué parte de una escena se renderizará en el dispositivo de visualización y en qué ángulo. Se utilizan dos matrices para describir una cámara OpenGL®: la matriz modelview y la matriz de proyección, que describen la posición de la cámara y la forma en que se renderizan los objetos a los que está mirando, respectivamente. Una cámara puede moverse dentro de una escena para mostrar diferentes áreas o para simular movimiento, aunque en muchos casos es más fácil o más eficiente mover los objetos en una escena en lugar de la cámara.

Al aprender OpenGL®, algunos programadores tienen dificultades para comprender las propiedades relativamente abstractas de una cámara OpenGL®. Esto se debe en gran parte a que algunas transformaciones y otras funciones no operan de la misma manera en una cámara que en un objeto OpenGL® estándar. Además, las operaciones complejas con una cámara OpenGL® generalmente requieren dominio de las matemáticas matriciales y comprensión del proceso de transformación de OpenGL®. Existen algunas funciones convenientes para admitir bibliotecas OpenGL®, aunque puede ser difícil confiar únicamente en los kits de herramientas de soporte en aplicaciones más interactivas.

La posición de una cámara OpenGL® se define utilizando la matriz modelview. La cámara puede colocarse en cualquier lugar dentro de una escena y trasladarse o girarse a lo largo de cualquier eje. En muchas aplicaciones, especialmente las aplicaciones que contienen solo un puñado de objetos, puede ser más fácil aplicar transformaciones inversas a los objetos dentro de una escena para dar la apariencia de movimiento. En esencia, toda la escena se mueve alrededor de una cámara estática en este caso. Para escenas más grandes, puede ser más fácil lidiar con las complejidades de la tubería y las matemáticas matriciales para mover la cámara libremente, dejando la escena estática.

Los atributos de una cámara OpenGL® están controlados por la matriz de proyección. Para usar la analogía de la cámara, la matriz de proyección se puede considerar como el tipo de lente que se está usando. La matriz de proyección se modifica con frecuencia para realizar proyecciones ortográficas, que no tienen ajuste de perspectiva, y proyecciones de perspectiva que tienen en cuenta la distancia para determinar el tamaño de los objetos. Otros efectos, como una lente de ojo de pez, distancia focal o diferentes relaciones de aspecto, se pueden configurar mediante el uso de la matriz de proyección.