Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En esta sección se presentan los conceptos básicos de la transformación de vista y se proporcionan detalles sobre cómo configurar una matriz de transformación de vista en una aplicación Direct3D.
La transformación de vista localiza al visor en el espacio del mundo, transformando los vértices en el espacio de la cámara. En el espacio de la cámara, la cámara o el visor están en el origen, mirando en la dirección z positiva. Recuerde que Direct3D usa un sistema de coordenadas izquierdo, por lo que z es positivo en una escena. La matriz de vistas reubica los objetos del mundo alrededor de la posición de una cámara , el origen del espacio de la cámara y la orientación.
Hay muchas maneras de crear una matriz de vistas. En todos los casos, la cámara tiene alguna posición lógica y orientación en el espacio mundial que se usa como punto de partida para crear una matriz de vista que se aplicará a los modelos de una escena. La matriz de vista traduce y gira los objetos para colocarlos en el espacio de la cámara, donde la cámara está en el origen. Una manera de crear una matriz de vista es combinar una matriz de traducción con matrices de rotación para cada eje. En este enfoque, se aplica la siguiente ecuación de matriz general.
En esta fórmula, V es la matriz de vista que se va a crear, T es una matriz de traducción que cambia la posición de los objetos del mundo y Rₓ a través de Rz son matrices de rotación que giran objetos a lo largo del eje x, y-y-z. Las matrices de traducción y rotación se basan en la posición lógica y la orientación de la cámara en el espacio mundial. Por lo tanto, si la posición lógica de la cámara en el mundo es <10 20 100 100>, el objetivo de la matriz de traducción es mover objetos -10 unidades a lo largo del eje X, -20 unidades a lo largo del eje Y y -100 unidades a lo largo del eje Z. Las matrices de rotación de la fórmula se basan en la orientación de la cámara, en términos de cuánto se giran los ejes del espacio de la cámara fuera de la alineación con el espacio mundial. Por ejemplo, si la cámara mencionada anteriormente apunta directamente hacia abajo, su eje Z es de 90 grados (pi/2 radianes) fuera de la alineación con el eje Z del espacio mundial, como se muestra en la ilustración siguiente.
Las matrices de rotación aplican rotaciones de igual, pero opuestas, magnitud a los modelos de la escena. La matriz de vista de esta cámara incluye un giro de -90 grados alrededor del eje X. La matriz de rotación se combina con la matriz de traducción para crear una matriz de vista que ajuste la posición y la orientación de los objetos de la escena para que su parte superior esté orientada a la cámara, lo que da la apariencia de que la cámara está por encima del modelo.
Configuración de una matriz de vistas
LasD3DXMatrixLookAtLH y D3DXMatrixLookAtRH funciones auxiliares crean una matriz de vistas basada en la ubicación de la cámara y un punto de vista.
En el ejemplo siguiente se crea una matriz de vista para las coordenadas izquierdas.
D3DXMATRIX out;
D3DXVECTOR3 eye(2,3,3);
D3DXVECTOR3 at(0,0,0);
D3DXVECTOR3 up(0,1,0);
D3DXMatrixLookAtLH(&out, &eye, &at, &up);
Direct3D usa las matrices de mundo y vista para configurar varias estructuras de datos internas. Cada vez que se establece una nueva matriz de mundo o vista, el sistema vuelve a calcular las estructuras internas asociadas. El establecimiento de estas matrices con frecuencia consume mucho tiempo de cálculo. Puede minimizar el número de cálculos necesarios mediante la concatenación de las matrices de mundo y vista en una matriz de vista mundial que establezca como matriz de mundo y, a continuación, establezca la matriz de vista en la identidad. Mantenga copias almacenadas en caché de matrices individuales de mundo y vista que puede modificar, concatenar y restablecer la matriz mundial según sea necesario. Para mayor claridad, los ejemplos rara vez emplean esta optimización.
Temas relacionados