Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Animare la Telecamera

Riprodurre i più comuni movimenti di camera con Papervision3D
Riprodurre i più comuni movimenti di camera con Papervision3D
Link copiato negli appunti

La telecamera può essere animata come qualsiasi altro oggetto. Tuttavia, vista la sua fondamentale importanza, possiede alcune proprietà e funzioni dedicate al movimento.

Orbita intorno ad un oggetto

Ad esempio se desideriamo girare intorno ad un oggetto possiamo usare la funzione orbit:

orbit( pitch:Number, yaw:Number, useDegrees:Boolean = true, 
       target:DisplayObject3D = null):void

oppure scrivere la funzione di rotazione tramite la trigonometria:

camera.x = distanza * Math.cos(t) * Math.sin(p);
camera.y = distanza * Math.cos(p);
camera.z = distanza * Math.sin(t) * Math.sin(p);

dove t sono i gradi dell'ascissa, p dell'ordinata e distanza il raggio della sfera. In questo modo eliminiamo ad esempio il fastidioso errore dell'orbit di ribaltare la scena ogni volta che compie un giro completo della circonferenza.

Soggettiva

Oltre a ruotare la camera intorno ad un oggetto così da poterlo esaminare, ci capiterà di volerci muovere in soggettiva per esplorare l'ambiente virtuale.

Prima di tutto scopriamo che ogni volta che importiamo una scena esterna questa avrà un sistema di riferimento proprio. Questo fatto potrebbe crearci non pochi problemi, ma possiamo risolverli trasformando il sistema di riferimento della nostra camera tramite

transformView(transform:Matrix3D = null):void

Una volta ottenuto un sistema di riferimento unico, DisplayObject3D ci mette a disposizione 6 metodi per muoverci comodamente al suo interno:

  • moveBackward(distance:Number)
  • moveDown(distance:Number)
  • moveForward(distance:Number)
  • moveLeft(distance:Number)
  • moveRight(distance:Number)
  • moveUp(distance:Number)

Infine per ruotare rispetto all'asse verticale esiste un apposito metodo

public function yaw(angle:Number):void

Ora abbiamo tutti gli strumenti per poterci muovere all'interno della nostra scena. Ci basterà assegnare le nostre funzioni agli eventi della tastiera così da poter muovere liberamente la nostra camera. Nell'esempio sottostante abbiamo assegnato alle frecce la possibilità di muoverci paralleli al piano come nei giochi 3D in soggettiva.

var tasto ="";
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);

function keyDownHandler(event:KeyboardEvent):void 
{
  if (event.keyCode==37) tasto= "sinistra";
  if (event.keyCode==39) tasto= "destra";
  if (event.keyCode==38) tasto= "avanti";
  if (event.keyCode==40) tasto= "indietro";
}
        
function onEnterFrame(e:Event):void
{
  if (tasto=="avanti")   { camera.moveForward(50); }
  if (tasto=="indietro") { camera.moveBackward(50); }
  if (tasto=="sinistra") { camera.yaw(-5); }
  if (tasto=="destra")   { camera.yaw(5); }
  
  tasto = "";
  renderer.renderScene(scena, camera, viewport);
}

Ti consigliamo anche