Adsense Banner

Global vs local

Spazio globale contro spazio locale

logoPV3D

Nel momento in cui si aggiunge childSphere a parentSphere, le coordinate di childSphere sono relative al suo nuovo genitore. Esse non sono relative al sistema di coordinate globali della scena, ma ad un sistema di coordinate locali. Noi chiamiamo il sistema globale di coordinate (il sistema di coordinate rispetto alla nostra scena), lo spazio globale  e un sistema di coordinate locali spazio locale. Pertanto, ogni volta che si aggiunge un'istanza di DisplayObject3D a un altro oggetto, questo ha il proprio spazio locale di riferimento.


Confrontando ciò con Flash 2D, si nota che anche qui è possibile aggiungere oggetti ad altri oggetti. per esempio, è possibile nidificare un clip filmato all'interno di un altro clip filmato. Supponiamo che si aggiunga un clip filmato (figlio) di un altro clip filmato (genitore). Le coordinate x e y del figlio sono ora relative alla posizione del genitore. Spostamento e rotazione del genitore determinano lo spostamento e la ruotazione del figlio. Allo stesso modo, il ridimensionamento del genitore scalerà il figlio in modo proporzionale.
Continuiamo con la nostra classe NestingExample e prendiamo parentSphere e la ruotiamo intorno al suo asse y incrementando la rotazione y nel solito onRenderTick ():

override protected function onRenderTick(e:Event=null):void{   
     parentSphere.localRotationY++;
     super.onRenderTick();
}

Pubblicando questo esempio si dovrebbe vedere la sfera genitore ruotare attorno al suo asse y proprio come previsto. La sfera figlio si muove a sua volta anche se non gli abbiamo detto di muoversi. Si muove nello spazio globale, non nello spazio locale. Si muove solidale con il padre perché il suo sistema di coordinate è relativo parentSphere. Se si visualizza la coordinata x di childSphere nel metodo di rendering, resterebbe 400 perché la sfera figlio non si muove nello suo spazio locale. Questo è un principio importante da tenere a mente quando si lavora con la nidificazione.
Se volete sapere la coordinata x della sfera figlio relativa al sistema di coordinate della scena (spazio globale), è possibile utilizzare la proprietà sceneX. tracciato childSphere.sceneX nel metodo Render risulterebbero in output i valori da 400 a -400. DisplayObject3D naturalmente ha anche un sceneY e una proprietà sceneZ.
La seguente sequenza di immagini mostra la sfera rotante genitore. Si noti che il valore x della sfera bambino rimane 400, mentre cambia il valore della sceneX.

nidificazione

Nidificare oggetti 3D all'interno di altri oggetti 3D è chiaramente un vantaggio importante. Potete aggiungere più oggetti ad un oggetto padre e poi dire a questi di fare qualcosa, per esempio spostarsi da un punto all'altro. Poiché le coordinate di ogni oggetto figlio sono relative all'oggetto padre, si muoveranno solidakmente all'oggetto genitore. Pertanto, invece di dire a ogni oggetto figlio separatamente di andare da un punto ad un altro, si può semplicemente dire l'oggetto genitore di spostarsi e tutti i suoi figli lo seguiranno.




Filippo Porcari
Author: Filippo PorcariWebsite: http://filippo.porcari.oranjuice.org/Email: Questo indirizzo email è protetto dagli spambots. E' necessario abilitare JavaScript per vederlo.
designer freelance
Sono un graphic designer e mi occupo di pubblicità. Da più di 10 anni dedico le mie energie alla realizzazioni d'immagine aziendale e comunicazione visiva con un'attenzione alle nuove tecnologie del web. Da qualche anno ho scoperto il software open source e mi sono dedicato alla sua introduzione nel mio workflow produttivo ottenendo ottimi risultati.