In questa lezione esaminiamo gli oggetti Scene
e Camera3D
, vediamo come istanziarli e come usare le caratteristiche più importanti.
Scene
Il package Scene
presenta una sola classe scene3D()
che eredita metodi e proprietà da SceneObject3D
che a sua volta eredita da DisplayObjectContainer3D
. Per semplificare al massimo, possiamo immaginare Scene3D
come un contenitore vuoto in cui vengono posti i vari oggetti 3D.
I due metodi più importanti che possiede sono quindi addChild() e removeChild() che com'è facile capire aggiungono o tolgono oggetti dalla scena.
Si possono creare quante scene si vuole, tuttavia in una Viewport3D
può essere renderizzata una sola scena per volta per cui se vogliamo più visuali avremo bisogno di più Sprite
su cui disegnarle.
Camera3D
Il package cameras
contiene tre classi: Camera3D
, CameraType
e DebugCamera3D
. Per i nostri esempi utilizzeremo sempre Camera3D
. Per default il costruttore importa i seguenti parametri:
Prototipo del costruttore di Camera3D
public function Camera3D( fov:Number, near:Number, far:Number, useCulling:Boolean, useProjection:Boolean)
Parametro | Tipo | Val. default | Descrizione |
---|---|---|---|
fov | Number |
60 | L'angolo (in gradi) di apertura del campo visivo (Field of View) |
near | Number |
10 | Posizione sull'asse z del piano di clipping "vicino" |
far | Number |
100 | Posizione sull'asse z del piano di clipping "lontano" |
useCulling | Boolean |
false | Definisce se disegnare gli oggetti al di fuori del range dei due piani oppure no. Nelle scene complesse è preferibile impostarlo in true per evitare calcoli troppo onerosi alla macchina |
useProjection | Boolean |
false | Definisce se usare una matrice di proiezione per la prospettiva |
Tra le proprietà più importanti della camera3D troviamo:
Proprietà | Descrizione |
---|---|
x, y e z | Per modificare la posizione nello spazio |
rotationX, rotationY e rotationZ | Per ruotare l'angolazione di ripresa |
target | Permette di definire un oggetto su cui far puntare automaticamente la telecamera |
In linea di massima è molto comodo utilizzare un target per riuscire a gestire con facilità i movimenti di camera senza che questa perda di vista gli oggetti della scena. Un metodo molto simile che abbiamo a disposizione è lookAt(DisplayObject3D
) che vincola la rotazione della camera all'oggetto scelto.