Ventanillas y recortes
Una ventanilla es un rectángulo bidimensional (2D) en el que se proyecta una escena 3D. En Direct3D, el rectángulo existe como coordenadas dentro de una superficie de Direct3D que el sistema usa como destino de representación. La transformación de proyección convierte vértices en el sistema de coordenadas utilizado para la ventanilla. También se usa una ventanilla para especificar el intervalo de valores de profundidad en una superficie de destino de representación en la que se representará una escena (normalmente de 0,0 a 1,0).
Frustum de visualización
Un frustum de visualización es un volumen 3D en una escena situada en relación con la cámara de la ventanilla. La forma del volumen afecta a cómo se proyectan los modelos desde el espacio de la cámara en la pantalla. El tipo de proyección más común, una proyección de perspectiva, es responsable de hacer que los objetos cerca de la cámara aparezcan más grandes que los objetos a distancia. Para ver la perspectiva, el frustum de visualización se puede visualizar como una pirámide, con la cámara situada en la punta, como se muestra en la ilustración siguiente. Esta pirámide se interseca mediante un plano de recorte frontal y trasero. El volumen dentro de la pirámide entre los planos de recorte frontal y trasero es el frustum de visualización. Los objetos solo son visibles cuando están en este volumen.
Si imaginas que estás de pie en una habitación oscura y mirando a través de una ventana cuadrada, estás visualizando un frustum de visualización. En esta analogía, el plano de recorte cercano es la ventana, y el plano de recorte posterior es lo que finalmente interrumpe su vista - el rascacielos a través de la calle, las montañas a la distancia, o nada en absoluto. Puede ver todo lo que hay dentro de la pirámide truncada que comienza en la ventana y termina con cualquier interrupción de la vista, y no puede ver nada más.
El frustum de visualización se define mediante fov (campo de vista) y por las distancias de los planos de recorte frontal y trasero, especificados en coordenadas z, como se muestra en el diagrama siguiente.
En este diagrama, la variable D es la distancia desde la cámara hasta el origen del espacio definido en la última parte de la canalización de geometría: la transformación de visualización. Este es el espacio alrededor del cual organizas los límites de tu frustum de visualización. Para obtener información sobre cómo se usa esta variable D para crear la matriz de proyección, consulte transformación de proyección.
Rectángulo de ventanilla
Una estructura de ventanilla contiene cuatro miembros (X, Y, Width, Height) que definen el área de la superficie de destino de representación en la que se representará una escena. Estos valores corresponden al rectángulo de destino o al rectángulo de ventanilla, como se muestra en el diagrama siguiente.
Los valores especificados para los miembros X, Y, Width, Height son coordenadas de pantalla relativas a la esquina superior izquierda de la superficie de destino de representación. La estructura define dos miembros adicionales (MinZ y MaxZ) que indican los intervalos de profundidad en los que se representará la escena.
Direct3D supone que el volumen de recorte de ventanilla oscila entre -1.0 y 1.0 en X y de 1,0 a -1,0 en Y. Estas fueron las opciones de configuración usadas con más frecuencia por las aplicaciones en el pasado. Puede ajustar la relación de aspecto de la ventanilla antes de recortar mediante la transformación de proyección.
Nota MinZ y MaxZ indican los intervalos de profundidad en los que se representará la escena y no se usan para el recorte. La mayoría de las aplicaciones establecerán estos valores en 0,0 y 1,0 para permitir que el sistema se represente en todo el intervalo de valores de profundidad en el búfer de profundidad. En algunos casos, puede lograr efectos especiales mediante otros rangos de profundidad. Por ejemplo, para representar una pantalla de encabezado en un juego, puedes establecer ambos valores en 0,0 para forzar al sistema a representar objetos en una escena en primer plano, o puedes establecerlos en 1,0 para representar un objeto que siempre debe estar en segundo plano.
Las dimensiones usadas en los miembros X, Y, Width, Height de una estructura de ventanilla definen la ubicación y las dimensiones de la ventanilla en la superficie de destino de representación. Estos valores están en coordenadas de pantalla, en relación con la esquina superior izquierda de la superficie.
Direct3D usa la ubicación de la ventanilla y las dimensiones para escalar los vértices para ajustar una escena representada a la ubicación adecuada en la superficie de destino. Internamente, Direct3D inserta estos valores en la siguiente matriz que se aplica a cada vértice.
Esta matriz escala los vértices según las dimensiones de la ventanilla y el intervalo de profundidad deseado y los traduce a la ubicación adecuada en la superficie de destino de representación. La matriz también voltea la coordenada y para reflejar un origen de pantalla en la esquina superior izquierda con y aumentando hacia abajo. Después de aplicar esta matriz, los vértices siguen siendo homogéneos, es decir, siguen existiendo como vértices [x,y,z,w] y deben convertirse en coordenadas no homogéneas antes de enviarse al rasterizador.
Nota Las aplicaciones suelen establecer MinZ y MaxZ en 0.0 y 1.0 respectivamente para hacer que el sistema se represente en todo el intervalo de profundidad. Sin embargo, puede usar otros valores para lograr ciertos efectos. Por ejemplo, puede establecer ambos valores en 0,0 para forzar todos los objetos en primer plano o establecer ambos en 1,0 para representar todos los objetos en segundo plano.
Borrar una ventanilla
Al borrar la ventanilla se restablece el contenido del rectángulo de ventanilla en la superficie de destino de representación. También puede borrar el rectángulo en las superficies de búfer de profundidad y galería de símbolos.
Configurar la ventanilla para el recorte
Los resultados de la matriz de proyección determinan el volumen de recorte en el espacio de proyección como:
-wc<= xc<= wc
-wc<= yc<= wc
0 <= zc<= wc
Where: x, y, z y w representan las coordenadas del vértice después de aplicar la transformación de proyección. Los vértices que tienen un componente x, y-o z fuera de estos intervalos se recortan, si el recorte está habilitado (el comportamiento predeterminado).
Temas relacionados
Sistemas de coordenadas y geometría