Compartir a través de


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 los 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).

El 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 con 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 visual. Los objetos solo son visibles cuando están en este volumen.

Ilustración de un frustrum de visualización con un plan de recorte frontal y trasero

Si se imagina que está de pie en una habitación oscura y mirando a través de una ventana cuadrada, está visualizando un frustum de visualización. En esta analogía, el plano de recorte cercano es la ventana, y el plano de recorte trasero es lo que finalmente interrumpe su vista - el rascacielos a través de la calle, las montañas a 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.

diagrama del frustum de visualización

En este diagrama, la variable D es la distancia entre la cámara y 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 se organizan los límites de su frustum de visualización. Para obtener información sobre cómo se usa esta variable D para compilar la matriz de proyección, vea 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.

diagrama del rectángulo de ventanilla

Los valores que especifique 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. Estos eran los valores usados 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, puedes lograr efectos especiales usando otros rangos de profundidad. Por ejemplo, para representar una presentación de encabezado en un juego, puedes establecer ambos valores en 0,0 para forzar que el sistema represente 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 ajustarse a una escena representada en 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.

ecuación de la 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. Una vez aplicada 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 la 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.

Configuración de 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

Donde: x, y, z y w representan las coordenadas de 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).

Sistemas de coordenadas y geometría