Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 48 di 51
  • livello principiante
Indice lezioni

Esaminare un oggetto

Un'interazione che è possibile offrire agli utenti è quella di spostare la telecamera all'interno del nostro ambiente 3d o intorno all'oggetto per esaminarlo
Un'interazione che è possibile offrire agli utenti è quella di spostare la telecamera all'interno del nostro ambiente 3d o intorno all'oggetto per esaminarlo
Link copiato negli appunti

Un'interazione che spesso si offre all'utente è la possibilità di muovere la telecamera all'interno del nostro mondo 3D in modo da poterlo esplorare; per esempio, se abbiamo degli oggetti ben realizzati sulla scena che vogliamo siano visibili da diverse angolazioni, oppure quando vogliamo che l'utente si trovi "immerso" nel nostro scenario e possa camminare dentro a esso.

Se vogliamo presentare un oggetto, in modo che l'utente possa guardarlo da tutte le posizioni possibili, possiamo utilizzare una rotazione come abbiamo visto finora o, in alternativa, muovere la telecamera, assicurandoci comunque che punti sempre verso il nostro oggetto.

Possiamo offrire all'utente anche la possibilità di zoomare sull'oggetto.

Questo comportamento viene chiamato "examine" nei player VRML. Proviamo a crearne uno!

Sfruttiamo il cubo, usato come esempio all'interno nelle precedenti lezioni, che presenta delle immagini sulle proprie facce.

Rendiamo possibile visionare il cubo da diverse angolazioni e diamo all'utente la possibilità di zoomare, il tutto tramite tastiera.

Nella funzione init() inseriamo l'evento onRenderEVENT, così:

world.addEventListener( World3D.onRenderEVENT,this, camMove );

Con questo codice, per ogni fotogramma, richiamiamo la funzione camMove:

Listato 76. Imposta i movimenti della telecamera in base ai tasti premutI

function camMove():Void{
    var cam:Camera3D = World3D.getInstance ().getCamera ();
    
    // Muoviamo la camera lungo assi X ed Y
    if (Key.isDown (Key.UP)){cam.moveUpwards(5);}
    if (Key.isDown (Key.DOWN)){cam.moveUpwards(-5);}
    if (Key.isDown (Key.LEFT)){cam.moveSideways(5);}
    if (Key.isDown (Key.RIGHT)){cam.moveSideways(-5);}
    // Muoviamo la camera lungo l'asse Z per lo zoom
    if (Key.isDown (Key.HOME)){cam.moveForward(5);}
    if (Key.isDown (Key.END)){cam.moveForward(-5);}
    cam.lookAt( 0, 0, 0 );
}

Il risultato sarà il seguente

Movimento delle telecamera tramite tastiera

Con le frecce direzionali ruotiamo la telecamera intorno all'oggetto, sfruttando i comandi moveUpwards e moveSideways della camera.

Per ogni movimento impostiamo anche la telecamera in modo che punti al centro (dove è il cubo).

I tasti "Home" (inizio) e "End" (fine) vengono utilzizati per lo zoom, effettuato spostando la telecamera sull'asse Z.

Nota: in certe situazioni il valore di rotazione della camera potrebbe risultare non definito e causare un movimento instabile. È un problema conosciuto che può capitare all'interno dei sistemi 3D.

"© Petit Publications 2006" - diritti riservati


Ti consigliamo anche