Viewport e ritaglioViewports and clipping

Un riquadro di visualizzazione è un rettangolo bidimensionale (2D) nel quale è proiettata una scena 3D.A viewport is a two-dimensional (2D) rectangle into which a 3D scene is projected. In Direct3D, il rettangolo esiste come coordinate all’interno di una superficie Direct3D utilizzata dal sistema come destinazione di rendering.In Direct3D, the rectangle exists as coordinates within a Direct3D surface that the system uses as a rendering target. La trasformazione della proiezione converte i vertici nel sistema di coordinate usato per il riquadro di visualizzazione.The projection transformation converts vertices into the coordinate system used for the viewport. Un riquadro di visualizzazione viene inoltre utilizzato per specificare l’intervallo dei valori di profondità di una superficie di destinazione di rendering in cui verrà eseguito il rendering di una scena (in genere da 0,0 a 1,0).A viewport is also used to specify the range of depth values on a render-target surface into which a scene will be rendered (usually 0.0 to 1.0).

Cono di visualizzazioneThe Viewing Frustum

Un frustum di vista è un volume 3D in una scena posizionato rispetto alla fotocamera del riquadro di visualizzazione.A viewing frustum is 3D volume in a scene positioned relative to the viewport's camera. La forma del volume influisce sul modo in cui i modelli vengono proiettati dallo spazio della fotocamera allo schermo.The shape of the volume affects how models are projected from camera space onto the screen. Il tipo di proiezione più comune, la proiezione prospettica, fa sì che gli oggetti vicino alla fotocamera sembrino più grandi di quelli distanti.The most common type of projection, a perspective projection, is responsible for making objects near the camera appear bigger than objects in the distance. Per la visualizzazione prospettica, il viewing frustum di vista può essere visualizzato come una piramide, in cui la fotocamera è posizionata sulla punta, come mostrato nella figura seguente.For perspective viewing, the viewing frustum can be visualized as a pyramid, with the camera positioned at the tip as shown in the following illustration. Questa piramide viene intersecata da un piano di ritaglio posteriore e anteriore.This pyramid is intersected by a front and back clipping plane. Il volume tra il piano di ritaglio posteriore e quello anteriore all'interno della piramide è il frustum di vista.The volume within the pyramid between the front and back clipping planes is the viewing frustum. Gli oggetti sono visibili solo quando si trovano in questo volume.Objects are visible only when they are in this volume.

illustrazione di un frustum di vista con un piano di ritaglio posteriore e anteriore

Se immagini di stare in piedi in una stanza buia e di guardare attraverso una finestra quadrata, stai visualizzando un frustum di vista.If you imagine that you are standing in a dark room and looking through a square window, you are visualizing a viewing frustum. In questa analogia, il piano di taglio vicino è la finestra e il piano di ritaglio anteriore è ciò che interrompe la tua vista, il grattacielo dall'altra parete della strada, le montagne in lontananza o assolutamente nulla.In this analogy, the near clipping plane is the window, and the back clipping plane is whatever finally interrupts your view - the skyscraper across the street, the mountains in the distance, or nothing at all. Puoi vedere tutto ciò che si trova all'interno del tronco di piramide che inizia in corrispondenza della finestra e termina con ciò che interrompe la tua vista e non ti consente di vedere altro.You can see everything inside the truncated pyramid that starts at the window and ends with whatever interrupts your view, and you can see nothing else.

Il frustum di vista viene definito dal campo visivo e dalle distanze dei piani di ritaglio posteriore e anteriore, specificati nelle coordinate z, come illustrato nel diagramma seguente.The viewing frustum is defined by fov (field of view) and by the distances of the front and back clipping planes, specified in z-coordinates, as shown in the following diagram.

diagramma del frustum di vista

In questo diagramma, la variabile D è la distanza dalla fotocamera all'origine dello spazio che è stata definita nell'ultima parte della pipeline della geometria, la trasformazione della visualizzazione.In this diagram, the variable D is the distance from the camera to the origin of the space that was defined in the last part of the geometry pipeline - the viewing transformation. Si tratta dello spazio intorno al quale disponi i limiti del frustum di vista.This is the space around which you arrange the limits of your viewing frustum. Per informazioni sul modo in cui viene utilizzata questa variabile D per creare la matrice di proiezione, vedi Trasformazione di proiezioneFor information about how this D variable is used to build the projection matrix, see the Projection transform

Rettangolo del riquadro di visualizzazioneViewport Rectangle

Uno struct del riquadro di visualizzazione contiene quattro membri (X, Y, Width, Height) che definiscono l'area della superficie di destinazione di rendering.A viewport struct contains four members (X, Y, Width, Height) that define the area of the render-target surface into which a scene will be rendered. Questi valori corrispondono al rettangolo di destinazione o rettangolo del riquadro di visualizzazione, come illustrato nel diagramma seguente.These values correspond to the destination rectangle, or viewport rectangle, as shown in the following diagram.

diagramma del rettangolo del riquadro di visualizzazione

I valori specificati per i membri X, Y, Width, Height sono coordinate dello schermo relative all'angolo superiore sinistro della superficie di destinazione di rendering.The values you specify for the X, Y, Width, Height members are screen coordinates relative to the upper-left corner of the render-target surface. La struttura definisce due membri aggiuntivi (MinZ e MaxZ) che indicano gli intervalli di profondità nei quali verrà eseguito il rendering della scena.The structure defines two additional members (MinZ and MaxZ) that indicate the depth-ranges into which the scene will be rendered.

Direct3D presuppone che il volume di ritaglio del riquadro di visualizzazione vari nell'intervallo compreso tra -1.0 a 1.0 in X e tra 1.0 e -1.0 in Y. Si tratta delle impostazioni utilizzate più spesso dalle applicazioni in passato.Direct3D assumes that the viewport clipping volume ranges from -1.0 to 1.0 in X, and from 1.0 to -1.0 in Y. These were the settings used most often by applications in the past. Puoi modificare le proporzioni del riquadro di visualizzazione prima di ritagliare utilizzando la trasformazione di proiezione.You can adjust the viewport aspect ratio before clipping using the projection transform.

Nota    MinZ e MaxZ indicare gli intervalli di profondità in cui verrà eseguito il rendering della scena e non vengono usati per il ritaglio.Note   MinZ and MaxZ indicate the depth-ranges into which the scene will be rendered and are not used for clipping. La maggior parte delle applicazioni imposterà questi valori su 0.0 e 1.0, per consentire al sistema il rendering dell'intero intervallo di valori di profondità nel buffer di profondità.Most applications will set these values to 0.0 and 1.0, to enable the system to render to the entire range of depth values in the depth buffer. In alcuni casi, puoi ottenere effetti speciali utilizzando altri intervalli di profondità.In some cases, you can achieve special effects by using other depth ranges. Ad esempio, per eseguire il rendering di una visualizzazione HUD (heads-up) display in un gioco, puoi impostare entrambi i valori su 0.0 per forzare il sistema a eseguire il rendering degli oggetti in una scena in primo piano, oppure potresti impostarli entrambi su 1.0 per eseguire il rendering di un oggetto che deve essere sempre in background.For instance, to render a heads-up display in a game, you can set both values to 0.0 to force the system to render objects in a scene in the foreground, or you might set them both to 1.0 to render an object that should always be in the background.

 

Le dimensioni utilizzate nei membri X, Y, Width, Height dello struct di un riquadro di visualizzazione definiscono la posizione e le dimensioni del riquadro di visualizzazione sulla superficie di destinazione di rendering.The dimensions used in the X, Y, Width, Height members of a viewport struct define the location and dimensions of the viewport on the render-target surface. Questi valori sono espressi in coordinate dello schermo, relativamente all'angolo superiore sinistro della superficie.These values are in screen coordinates, relative to the upper-left corner of the surface.

Direct3D usa la posizione e le dimensioni del riquadro di visualizzazione per ridimensionare i vertici al fine di adattare una scena sottoposta a rendering alla posizione appropriata sulla superficie di destinazione.Direct3D uses the viewport location and dimensions to scale the vertices to fit a rendered scene into the appropriate location on the target surface. Internamente, Direct3D inserisce questi valori nella seguente matrice che viene applicata a ciascun vertice.Internally, Direct3D inserts these values into the following matrix that is applied to each vertex.

equazione della matrice che viene applicata a ciascun vertice

Questa matrice ridimensiona i vertici in base alle dimensioni del riquadro di visualizzazione e all'intervallo di profondità desiderato e li trasla nella posizione appropriata sulla superficie di destinazione di rendering.This matrix scales vertices according to the viewport dimensions and desired depth range and translates them to the appropriate location on the render-target surface. La matrice, inoltre, capovolge la coordinata y in modo da riflettere un'origine schermo nell'angolo in alto a sinistra con un valore y crescente verso il basso.The matrix also flips the y-coordinate to reflect a screen origin at the top-left corner with y increasing downward. Dopo questa matrice viene applicata, vertici sono ancora omogenei, vale a dire, continuano a esistere come [x, y, z, w] vertici - e deve essere convertito in coordinate non omogenei prima di essere inviati per l'unità di rasterizzazione.After this matrix is applied, vertices are still homogeneous - that is, they still exist as [x,y,z,w] vertices - and they must be converted to non-homogeneous coordinates before being sent to the rasterizer.

Nota    applicazioni in genere impostato MinZ e MaxZ su 0,0 e 1,0 rispettivamente per il sistema dovrà eseguire il rendering per l'intervallo di profondità intero.Note   Applications typically set MinZ and MaxZ to 0.0 and 1.0 respectively to cause the system to render to the entire depth range. Tuttavia, puoi usare altri valori per ottenere determinati effetti.However, you can use other values to achieve certain affects. Ad esempio, potresti impostare entrambi i valori su 0.0 per forzare tutti gli oggetti in primo piano oppure entrambi i valori su 1.0 per eseguire il rendering di tutti gli oggetti in background.For example, you might set both values to 0.0 to force all objects into the foreground, or set both to 1.0 to render all objects into the background.

 

La cancellazione di un ViewportClearing a Viewport

Cancellando il riquadro di visualizzazione i contenuti del rettangolo del riquadro di visualizzazione sulla superficie di destinazione di rendering vengono ripristinati.Clearing the viewport resets the contents of the viewport rectangle on the render-target surface. Inoltre, può cancellare il rettangolo nelle superfici buffer di intensità e stencil.It can also clear the rectangle in the depth and stencil buffer surfaces.

Configurare il Viewport per il ritaglioSet Up the Viewport for Clipping

I risultati della matrice di proiezione determinano il volume di ritaglio nello spazio di proiezione come:The results of the projection matrix determine the clipping volume in projection space as:

-wc<= xc<= wc-wc<= xc<= wc

-wc<= yc<= wc-wc<= yc<= wc

0 <= zc<= wc0 <= zc<= wc

Dove: x, y, z e w rappresentano le coordinate dei vertici dopo l'applicazione della trasformazione di proiezione.Where: x, y, z, and w represent the vertex coordinates after the projection transformation is applied. I vertici che hanno un componente x, y o z all'esterno di questi intervalli vengono ritagliati, se è abilitato il ritaglio (comportamento predefinito).Any vertices that have an x-, y-, or z-component outside these ranges are clipped, if clipping is enabled (the default behavior).

Argomenti correlatiRelated topics

Sistemi di coordinate e geometriaCoordinate systems and geometry