Condividi tramite


Mapping dell'ambiente sferico (Direct3D 9)

Le mappe dell'ambiente sferico, o mappe a sfera, sono trame speciali che contengono un'immagine della scena che circonda un oggetto o gli effetti di illuminazione intorno all'oggetto. A differenza delle mappe dell'ambiente cubico, le mappe a sfera non rappresentano direttamente l'ambiente circostante di un oggetto. L'immagine della teiera nell'argomento Mapping dell'ambiente (Direct3D 9) mostra gli effetti di reflection che è possibile ottenere con il mapping della sfera. Una mappa a sfera è una rappresentazione 2D della visualizzazione completa a 360 gradi della scena che circonda un oggetto, come se fosse scattata attraverso una lente a occhio di pesce, come illustrato nella figura seguente.

illustrazione di una mappa a sfera dell'interno di un edificio

Coordinate delle trame per mappe dell'ambiente sferico

Le coordinate della trama specificate per ogni vertice che riceve un mapping dell'ambiente devono indirizzare la trama come funzione della distorsione riflettente creata dalla curvatura della superficie. Le applicazioni devono calcolare queste coordinate di trama per ogni vertice per ottenere l'effetto desiderato. Un modo semplice ed efficace per generare coordinate di trama usa la normale vertice come input. Sebbene esistano diversi metodi, l'equazione seguente è comune tra le applicazioni che eseguono il mapping dell'ambiente con mappe sphere.

equazione delle coordinate della trama di calcolo per una mappa a sfera

In queste formule, tu e v sono le coordinate della trama calcolate e NX e NY sono i componenti x e y della normale normale del vertice dello spazio della fotocamera. La formula è semplice ma efficace. Se la normale ha un componente x positivo, il normale punta a destra e la coordinata u viene adattata per risolvere la trama in modo appropriato. Analogamente per la coordinata v: y positivo indica che la normale punta su. L'opposto è vero per i valori negativi in ogni componente.

Se la normale punta direttamente alla fotocamera, le coordinate risultanti non dovrebbero ricevere alcuna distorsione. La distorsione +0,5 per entrambe le coordinate posiziona il punto di distorsione zero al centro della mappa della sfera e una normale vertice di (0, 0, z) punta a questo punto. Questa formula non tiene conto del componente z della normale, ma le applicazioni che usano la formula possono ottimizzare i calcoli ignorando i vertici con una normale con un elemento z positivo. Questo funziona per gli oggetti ombreggiati flat perché, nello spazio della fotocamera, se il normale si allontana dalla fotocamera (z positivo), il vertice viene generato quando viene eseguito il rendering dell'oggetto. Per gli oggetti gouraud ombreggiati, una normale può puntare lontano dalla fotocamera (x positivo) e il triangolo contenente il vertice può comunque essere visibile. Se non si calcola l'utente e v per questo vertice, il viso potrebbe comunque essere usato, causando un comportamento imprevisto.

Applicazione di mappe dell'ambiente sferico

Si applica una mappa dell'ambiente agli oggetti nello stesso modo di qualsiasi altra trama, impostando la trama sulla fase di trama appropriata con il metodo IDirect3DDevice9::SetTexture . Impostare il primo parametro sull'indice per la fase di trama desiderata e impostare il secondo parametro sull'indirizzo dell'interfaccia IDirect3DDevice9 restituito quando è stata creata la trama per la mappa dell'ambiente. È possibile impostare le operazioni di fusione dei colori e alfa e gli argomenti in base alle esigenze per ottenere gli effetti di fusione delle trame desiderati.

Mapping dell'ambiente