Questa guida è la traduzione di un tutorial scritto dalla Petit Publications che ha concesso ad HTML.it i diritti per pubblicarlo in versione italiana su queste pagine. La traduzione è stata curata da Davide Beltrame.
Questa guida illusterà alcune delle caratteristiche offerte dalla libreria Sandy3D realizzata da Thomas Pfeiffer.
Sandy è una libreria orientata agli oggetti, realizzata interamente in Actionscript e che permette di programmare scene 3D all'interno del Flash Player. È tuttora in sviluppo, nel momento in cui scriviamo la versione disponibile è la 1.1 (realizzata in Actionscript 2) e una versione 1.2 è in fase di sviluppo. È previsto un aggiornamento realizzato Actionscript 3, che probabilmente semplificherà alcuni aspetti e quasi sicuramente sarà più veloce grazie alle nuove caratteristiche del player.
Per lavorare con Sandy è necessario scaricare la libreria dal sito ufficiale; è consigliata anche la lettura della documentazione e l'aggiornamento tramite il forum.
Per visionare gli esempi di questo tutorial è necessaria la versione 8 (o successiva) del Flash Player. È consigliato avere uno strumento di sviluppo per provare a ricreare gli esempi e visionare il codice sorgente (è consigliato Flash Mx 2004, o superiore, ma è possibile utilizzare anche MTASC).
All'interno dell'articolo si trovano link ad archivi ZIP contenenti il codice AS degli esempi. Gli esempi sono disponibili come file .as, basterà poi utilizzare un solo file fla includendo di volta in volta il file appropriato tramite il comando #include.
Per iniziare diamo un'occhiata alla struttura di una scena realizzata con questa libreria.
Struttura di una scena in Sandy
Per comprendere la struttura di una scena (o di un "mondo" 3D, come andremo a definirlo spesso nella guida) è necessario descriverlo in qualche modo. Utilizzeremo una rappresentazione grafica ad albero per mostrare le relazioni tra le differenti componenti che vanno a comporre la scena. L'oggetto principale è proprio il "mondo", che a sua volta comprende altre parti: all'interno della nostra rappresentazione ad albero questi altri oggetti saranno i rami e le foglie.
Il primo ramo parte dal gruppo principale (root Node) del mondo di Sandy, e contiene altri rami (gruppi) con diverse proprietà e diversi scopi. Ci sono principalmente tre tipi di nodi in Sandy: gruppi (Group), gruppi di trasformazione (Transformgroup) e oggetti (Object3D). Group e TransformGroup hanno a loro volta dei "figli": Group generalmente contiene uno o più oggetti "di base", mentre TransformGroup viene utilizzato per applicare delle trasformazioni (spostamenti, rotazioni o ridimensionamenti) agli elementi che contiene. Object3D invece rappresenta semplicemente un elemento visibile all'intero del mondo.
Uno schema più comprensibile di questa struttura è illustrato di seguito: passando sugli elementi è possibile vederne una breve descrizione.
Struttura di un mondo 3D realizzato con Sandy
Come possiamo a vedere, il "ramo" di sinistra contiene un TransformGroup
che include a sua volta un Group
. Questo gruppo si conclude con un nodo Object3D
, che ha due proprietà: Geometry
(geometria) e Appearance
(aspetto): la prima contiene tutte le informazioni sulla forma geometrica dell'oggetto, mentre la seconda memorizza gli aspetti relativi a colori e texture dell'oggetto stesso.
A destra nella grafica invece abbiamo rappresentato la "View Platform
", responsabile del modo in cui l'utente visualizza la scena. Gli oggetti di questo gruppo non sono realmente parti della scena visibile, quanto oggetti più "astratti" che servono comunque per stabilire la visuale, le proprietà fisiche della scena e l'interazione con l'utente. Tale interazione si basa su un sistema a eventi, dove quasi ogni oggetto è in grado al tempo stesso sia di ricevere che di scatenare eventi.
Nella View Platform
i gruppi sono parti dell'oggetto Camera3D. L'oggetto View non esiste "fisicamente", però rappresenta i dati necessari a calcolare la visuale, include l'oggetto Camera3D e lo associa a un oggetto "Screen" su cui verranno disegnati i vari elementi della scena. È possibile associare più telecamere a uno stesso Screen.
"© Petit Publications 2006" - diritti riservati