Utilizzare scene 3D in Windows Presentation Foundation

5 pagine in totale: <<Indietro 1 [2] 3 4 5 Avanti >>

Camera

Contrariamente a quanto accade sviluppando per il sistema bidimensionale di WPF, dove il rendering degli oggetti è effettuato in corrispondenza della loro posizione, quello che mostra il Viewport3D è la proiezione della scena tridimensionale ripresa da un punto al suo interno. Questo fa si che gli oggetti, pur non cambiando la loro posizione, siano visualizzati da diverse angolazioni.
In WPF la classe Camera e derivate (System.Windows.Media.Media3D.Camera) forniscono il punto di vista e determinano la proiezione:

  • PerspectiveCamera: proietta sulla superficie della Viewport3D una vista prospettica della scena, dove i lati dell'oggetti convergono nei punti di fuga;
  • Orthographic: determina la proiezione ortogonale della scena, dove i lati sono paralleli tra loro.

Proezioni sulla superficie

La telecamera viene posizionata nella scena impostando la proprietà Position di tipo Point3D, ma la presenza della sola telecamera non garantisce che il Viewport3D visualizzi qualcosa, poiché è necessario puntarla nella direzione degli oggetti presenti nella scena. La telecamera entra così nello spazio tridimensionale della scena e trattandosi di un oggetto reale è possibile che il suo campo visivo o cono visuale sia in parte o del tutto compromesso da oggetti troppo vicini.
Per eliminare questo problema, tramite la proprietà NearPlaneDistance è possibile specificare la distanza minima dalla telecamera entro la quale gli oggetti vengono renderizzati; analogamente FarPlanDistance imposta la distanza massima oltre la quale nessun oggetto presente nella scena viene renderizzato. Queste proprietà hanno lo scopo di limitare i calcoli e di conseguenza il tempo necessario a renderizzare oggetti che risulterebbero talmente lontani dalla telecamera e molto piccoli, da non essere più distinguibili.

Cono visuale

Infine anche se non strettamente necessaria, è possibile impostare, tramite la proprietà UpDirection, un vettore per definire il "sopra" della scena.
Il codice seguente mostra come impostare una PerspectiveCamera utilizzando il linguaggio dichiarativo XAML.

<Viewport3D.Camera> 
    <PerspectiveCamera Position="0,0,2" 
        LookDirection="0,0,-1" 
        FieldOfView="60" 
        UpDirection="0,1,0"/> 
</Viewport3D.Camera>

E l'alternativa procedurale:

PerspectiveCamera myCamera = new PerspectiveCamera(); 
myCamera.Position = new Point3D(0, 0, 2); 
myCamera.LookDirection = new Vector3D(0, 0, -1); 
myCamera.UpDirection = new Vector3D(0, 1, 0); 
myCamera.FieldOfView = 60; 
 
Viewport3D myViewPort = new Viewport3D(); 
myViewPort.Camera = myCamera;

5 pagine in totale: <<Indietro 1 [2] 3 4 5 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

TUTORIALS


IN EVIDENZA
MISC