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

Introduzione a Papervision3D

Oltre a Sandy, un altra libreria per creare 3d tramite Flash è Papervision3D. Introduzione e interviste all'autore della libreria e all'autore di alcune esempi pratici con Papervision
Oltre a Sandy, un altra libreria per creare 3d tramite Flash è Papervision3D. Introduzione e interviste all'autore della libreria e all'autore di alcune esempi pratici con Papervision
Link copiato negli appunti

Papervision3D non rappresenta una novità per quanto riguarda il suo scopo (ovvero portare il 3D in Flash) ma è la prima che permette risultati notevoli sia a livello di prestazioni che a livello visivo, specialmente grazie alla capacità di importare scene realizzate con software di modellazione tridimensionale come 3D Studio Max, Maya, Blender (e molti altri) e controllarle nel Flash Player.

Papervision3D è una libreria Actionscript creata da Carlos Ulloa, sviluppatore spagnolo che ringraziamo per l'intervista esclusiva in cui ci ha rivelato alcune novità e curiosità.

La prima versione risale a fine 2005, si chiamava Papervision, fatto in Actionscript1 e, inizialmente, era un progetto privato divenuto poi Open Source nell'Ottobre 2006 (quando è giunto alla sua quarta versione); Carlos ci rivela una piccola curiosità:

«non era previsto che Papervision3D diventasse un progetto pubblico e open source, ma vedevo molte richieste degli utenti per rilasciare il codice sorgente di questo motore e alla fine mi sono convinto che potesse essere una buona idea anche per l'evoluzione stessa del progetto. Alla luce dei risultati, è stata sicuramente una buona idea.»

La versione quattro era inizialmente disponibile in Actionscript 2 e grazie al Flash Player 8 si poteva creare del 3D piuttosto realistico (quindi il nome divenne Papervision3D); dopo il primo rilascio pubblico, la libreria è stata rapidamente tradotta anche in Actionscript 3 (versione attuale) da John Grdner (anche lui intervistato in questo articolo) e Ralph Hauwert.

Carlos ci dice che:

«dai test fatti la versione in Actionscript 3 di Papervision3D è mediamente dalle 5 alle 10 volte più veloce della corrispondente in Actionscript 2; quest'ultima viene comunque sviluppata in maniera quasi parallela, con ritardi solitamente inferiori alla settimana nell'aggiornamento delle caratteristiche che prima vengono sviluppate nella versione Actionscript 3»

Un confronto sulla velocità delle due versioni è reperibile nel blog di John Grden.

Attualmente John Grden e Ralph Hauwert formano insieme a Carlos Ulloa il team di sviluppo principale del progetto.

Perché non è una rivoluzione

Papervision3D non è una rivoluzione a livello di "idea", poiché nel tempo diversi sviluppatori hanno creato soluzioni più o meno avanzate per la simulazione di oggetti tridimensionali in Flash. Una soluzione spesso adottata, per esempio, è l'esportazione da un programma 3D di una sequenza di immagini raffiguranti le varie visuali dell'oggetto, immagini che vengono poi importate su vari fotogrammi in Flash e usate per simulare un controllo in tempo reale; chiaramente questo comporta, come primo difetto, un peso piuttosto elevato (dato il numero di figure necessarie per creare un buon effetto) e in secondo luogo una libertà per l'utente pressoché nulla dato che movimenti e rotazioni saranno limitati in base alle immagini esportate dal software di modellazione 3D.

Con Director è possibile, già da diverse versioni, gestire modelli tridimensionali usando il formato w3d (supportato nativamente o tramite plugin dalla maggior parte dei programmi di modellazione) e Lingo (il linguaggio di programmazione interno di Director); anche per questo motivo diversi sviluppatori Actionscript si sono dati da fare per creare dei motori pseudo-3D più o meno sofisticati, nessuno dei quali ha comunque mai avuto un grandissimo seguito poiché si trattava prevalentemente di codici, peraltro piuttosto complessi e quindi di difficile gestione o modifica, in grado di creare e ruotare un cubo o altre primitive, ma nulla di paragonabile ai modelli 3d importabili in Director, che tuttavia sul web non ha mai preso piede in quanto il plugin necessario per riprodurne i contenuti, lo Shockwave Player, ha un peso di circa 10 MB e non è installato di default in alcun browser, fattori che ne limitano notevolmente la diffusione.

Attualmente Papervision3D non è l'unica libreria a permettere la creazione e la gestione di scene tridimensionali in Flash: vi è infatti anche Sandy (di cui è disponibile una guida su questo sito) e vi era in sviluppo SWFZ Engine, motore prevalentemente pensato per i giochi ma che pare in fase di stallo perché l'autore preferisce non creare un "doppione" proprio di Papervision3D.

Possiamo quindi dire che Papervision3D non è una rivoluzione perché non porta un'idea mai sperimentata prima.

Perché è una rivoluzione

Papervision3D è una rivoluzione principalmente per le sue caratteristiche tecniche e le conseguenti performance. Se l'idea non è "nuova", lo sono molte delle opzioni offerte da questa libreria.

Innanzitutto è la prima libreria 3D a sfruttare Actionscript 3 (anche di Sandy è in sviluppo una versione in AS3, ma Papervision3D risulta già stabile). Grazie al Flash Player 9 e all'ultima versione del linguaggio di programmazione di Flash le performance risultano di altissimo livello, specialmente se si utilizza il player standalone sul PC e non quello sul browser, generalmente meno performante.

A rendere molto performante Papervision3D è anche un eccellente supporto per il formato Collada (ideato dalla Sony e supportato nativamente, o tramite plugin, dalla maggior parte dei software di modellazione) versatile e leggero e di cui è possibile controllare ogni singolo oggetto (e relativi materiali) una volta importato in Papervision3D.

Supportato anche il formato ASE (ASCII Scene Export), a tal proposito Carlos ci rivela che:

«probabilmente verranno supportati anche altri formati, ma principalmente il team di sviluppo si concentrerà su Collada, infatti, questa è la soluzione migliore come performance ed esistono plugin gratuiti per la maggior parte dei software 3D, per cui lo reputiamo il più versatile e comodo da utilizzare. Stiamo lavorando con Adobe e Sony per garantire un processo di lavoro più fluido possibile.»

Particolarmente interessante è la possibilità di importare (sempre grazie a Collada) animazioni create direttamente nel software 3D. Non dovremo quindi accontentarci di modelli statici con cui interagire, ma potremo sfruttare degli oggetti animati e interagire con essi.

Vi è anche la possibilità di cambiare texture e materiali dinamicamente, così da poter realizzare, per esempio, oggetti che in base alle azioni dell'utente cambiano aspetto.

Come materiali sono supportati immagini (anche caricate dinamicamente), movieclip e video FLV; ogni faccia di un oggetto può avere la propria texture.

Possiamo dire che per la prima volta Flash si avvicina a Director nell'ambito del tridimensionale e per quanto il player Shockwave offra molte possibilità in più (specialmente a livello di rendering), se paragoniamo nel complesso i vantaggi del Flash Player rispetto allo Shockwave Player e aggiungiamo Papervision3D, Flash diventa la soluzione migliore per la diffusione di contenuti 3D sul web.

Alcuni esempi creati dagli utenti

Dopo aver citato alcune delle feature di Papervision3D, vediamo come gli utenti le hanno messe in pratica.

Da Dicembre 2006 (mese di rilascio della prima versione "pubblica") diversi sviluppatori hanno creato esempi di ogni tipo, sfruttando Papervision3D in diversi ambiti: come visualizzatore grafico di spettri sonori, come esempio di interazione tra Flash e WiiMote, come motore di gioco, come semplice elemento grafico e molto altro.

Uno dei punti di forza di PaperVision è il fatto che:

«circa 1400 persone si sono iscritte al programma di pre-release, ma sicuramente, dal momento del rilascio pubblico dell'indirizzo SVN, da cui scaricare il software, gli sviluppatori sono ancora aumentati.
La community è uno dei nostri componenti più importanti: senza di essa saremmo solo un gruppo di persone che crea demo in 3D; unendo le esperienze e condividendo le conoscenze invece gli sviluppatori stanno importando la terza dimensione nel web.»

Vediamo allora alcuni di questi esempi:

Rhino: questo è un pezzo di storia per Papervision3D, si tratta, infatti, del modello con cui la versione Open Source è stata presentata nell'Ottobre 2006. Il rinoceronte è stato scelto tra una selezione di modelli con un alto numero di poligoni, poiché si volevano mostrare le capacità di rendering di figure e materiali della libreria. Alcune informazioni tecniche sul modello si possono trovare sul blog.

Sound spectrum: esempio dove vengono create e manipolate (in base alla musica), interamente in Papervision3D, delle piramidi.

Sound spectrum con filtri: analogo all'esempio precedente, ma con maggiore manipolazione e utilizzo di alcuni filtri

Infinite Level: l'astronave si muove in un tunnel "infinito", ottenuto utilizzando due parti del tunnel che vengono spostate in base alla posizione della navicella. In questo modo l'astronave continua a essere all'interno del tunnel e l'utilizzo di memoria è minimo (come si può notare dall'indicatore in alto nello schermo, la frequenza di fotogrammi al secondo è più che accettabile).

Happy 2007: esempio di utilizzo di piani (creati direttamente in Papervision3D) per mostrare in maniera piuttosto "bizzarra" il calendario del 2007. Cliccando su un piano la visuale si muoverà fino a inquadrarlo più da vicino.

Esplorazione di una stanza: un altro esempio notevole delle capacità di Papervision3D, un intera stanza navigabile, creata tramite l'applicazione di texture a un cubo creato in Papervision3D.

Altri esempi si possono trovare sul blog di Papervision3D, inoltre all'interno della mailing list si possono trovare demo interessanti e le risposte a molti problemi e dubbi.

L'esempio volutamente lasciato per ultimo è quello più rilevante: si tratta di ObstacleCourse, il primo gioco realizzato con l'ausilio di Papervision3D. La qualità grafica è notevole e le performance sono di ottimo livello sulla maggior parte dei computer nonostante la complessità del gioco.

Abbiamo intervistato brevemente l'autore, John Grden, facendoci svelare qualche piccola curiosità sul gioco e su Papervision3D.

John, avevi provato altri motori per il 3D in Flash prima di Papervision3D?

«Sono sempre stato interessato al 3D in Flash e ho seguito diversi progetti, ma generalmente sembrava che tutti fossero capaci solo a far ruotare un oggetto intorno ai suoi assi senza offrire una reale interazione con esso o con la telecamera. Papervision3D ha illuminato la scena per me, specialmente grazie al supporto per i formati ASE e Collada con il caricamento dinamico di modelli e materiali.»

Quale feature di Papervision3D ti ha entusiasmato maggiormente?

«Mi è piaciuto molto il supporto per i materiali: è possibile variare in tempo reale e in maniera dinamica la texture di un oggetto. Ma ciò che più mi ha entusiasmato è sicuramente il supporto per Collada, che è stato fondamentale per la creazione dei livelli di ObstacleCourse: ora posso creare nuovi stage in 3D Studio Max e ottenere un file Collada che il gioco sarà in grado di interpretare, senza alcuna necessità di ricompilare il gioco.»

Come è nata l'idea di ObstacleCourse?

«L'idea di ObstacleCourse nasce Dal gioco Xwing della LucasArts, del 1993. All'inizio del gioco per imparare a manovrare la navicella era necessario volare attraverso degli ostacoli: ho tentato di ricreare il gioco, per come lo ricordavo.»

Quanto tempo hai impiegato per creare il gioco e quali strumenti hai usato?

«Per creare il gioco ho impiegato circa 4 settimane tra scrittura del motore di gioco e realizzazione di modelli e texture. È stato molto divertente e soprattutto interessante imparare come creare i modelli e i file Collada per i livelli. Per realizzarlo ho utilizzato il Flex Builder 2, 3D Studio Max , Fireworks, Poly Cruncher (per ridurre il numero di poligoni dell'Xwing in modo da renderlo più leggero) e Red5 per la tabella dei tempi.»

Vedremo una versione multiplayer di ObstacleCourse?

«Probabilmente sì, anche se c'è molto lavoro da fare e già stiamo lavorando a Paperworld3D. Paperworld3D sarà un gioco multiplayer realizzato sfruttando Red5 come tecnologia lato server. L'idea è di consentire agli utenti di creare la loro galassia, le loro astronavi, armi, scudi eccetera. Potranno anche ospitare un proprio server e aggiungerlo alla mappa dell'universo di Paperworld3D e potranno viaggiare da un luogo all'altro.»

Cosa suggeriresti agli altri utenti che volessero sviluppare giochi in Papervision3D?

«La prima cosa a cui stare attenti è il numero di poligoni. Il Flash Player non supporta il rendering tramite hardware come Director ma fa tutto via software, quindi bisogna contenere la complessità degli oggetti: ci sono moltissime tecniche che venivano usate sulla Playstation 1 che si possono prendere come riferimento per lo sviluppo in Papervision3D inerenti la modellazione a basso numero di poligoni e il risparmio della memoria. Inoltre, consiglio di approfondire come il proprio programma 3D gestisca le texture: spesso con delle immagini di qualità si riesce a migliorare moltissimo l'aspetto di un modello senza doverne aumentare i poligoni e questo è un enorme vantaggio in termini di risparmio della CPU.»

Installare Papervision3D

Dopo aver visto cosa sia possibile realizzare con Papervision3D, vediamo come scaricarlo e installarlo sul nostro computer.

Il progetto è disponibile solo all'interno di un repository SVN. Carlos ci spiega che la scelta è ricaduta sul repository SVN perché: «è la soluzione migliore per un progetto in fase di sviluppo che viene aggiornato spesso e a cui collaborano più utenti, poiché permette di essere sempre aggiornati all'ultima versione».

Poiché si tratta di un metodo non molto conosciuto per gli "utenti comuni", non abituati a utilizzare i repository SVN, vediamo passo a passo come procedere.

Scaricare i file

Per prima cosa è necessario procurarsi un client SVN, come per esempio Tortoise SVN (per Windows) o SVNX (per MacOS) e installarlo.

A questo punto il procedimento può cambiare a seconda del client SVN scelto: con Tortoise SVN sarà sufficiente avviare il classico Esplora risorse e quindi, dal menu da tasto destro, scegliere la voce Tortoise SVN -> Repo Browser

Figura 1. Avvio di TortoiseSVN
Selezione opzione Repo-Browser

Inseriamo come URL http://svn1.cvsdude.com/osflash/papervision3d

Figura 2. Inserimento dell'URL nel programma
Inserimento url

Ci troveremo così all'interno del repository di Papervision; possiamo copiarlo interamente facendo un click destro sulla cartella principale e selezionando la voce Export, dal pannello che apparirà scegliamo la nostra directory sull'hard disk, quindi clicchiamo sul pulsante "Ok" e aspettiamo che il programma scarichi i file sul nostro pc.

Figura 3. Esportazione delle cartelle dal repository
Selezione voce Export
Figura 4. Selezione della cartella di destinazione
Selezione della destinazione

All'interno delle Risorse del Computer le cartelle scaricate dal Repository appariranno contrassegnate da icone che ne indicheranno la corrispondenza con la versione disponibile tramite SVN. Periodicamente conviene eseguire un SVN Update (sempre tramite click da tasto destro) per essere sicuri di avere l'ultima versione disponibile.

Poiché in Papervision3D vengono spesso applicate modifiche al codice, per aggiungere nuove feature o per migliorare / correggere quelle già presenti, è consigliabile controllare almeno una volta a settimana l'SVN.

Impostare il percorso per le classi

L'ultima cosa da fare è impostare il percorso per le classi in Flash, in modo che ovunque salveremo il file ci sarà un riferimento al percorso di Papervision3D per importarne i comandi.

Nota: le seguenti istruzioni valgono anche per la Flash 9 Alpha, in cui è possibile utilizzare la versione Actionscript 3 di Papervision. Con Flash 8 è possibile utilizzare solamente la versione 2.

È sufficiente selezionare la voce Preferenze dal menu Modifica, portarsi sulla voce Actionscript e premere il pulsante "Impostazioni Actionscript 2" (o Impostazioni Actionscript 3 in Flash 9 Preview / Flash CS 3), quindi inserire tra i percorsi la cartella di Papervision:

Figura 5. Impostazione del percorso di importazione delle classi
Pannello settaggi Actionscript

La disponibilità di due versioni rende la libreria particolarmente versatile e utilizzabile con diversi software, come ci dice Carlos Ulloa: «Papervision3D è utilizzabile con Flash 8, Flash 9 Public Alpha, Flex 2 SDK, Flash Develop e Flex Builder 2».

Per impostare i percorsi delle classi nel Flex Builder 2 è necessario accedere alle proprietà del progetto, selezionare la tab "Source Path" e aggiungere (tramite il pulsante "Add folder") la cartella contenente i file di Papervision3D.

Conclusioni

Prima di provare a utilizzare questo prodotto, teniamo conto che se anche le capacità di parsing dei modelli 3D e le performance rendono questa libreria particolarmente accattivante per lo sviluppo di giochi, non dobbiamo pensare che sia "troppo" semplice realizzare un gioco con Papervision3D, dato che dovremo valutare molti fattori, primo tra tutti la modellazione in 3D, argomento tutt'altro che semplice: ricordiamo il consiglio di John Grden: ridurre al minimo il numero di poligoni, eventualmente sfruttando anche tool come Polygon Cruncher; meno memoria occupa un modello, più possiamo renderlo interattivo senza stressare il processore.

Creare un gioco di media-alta complessità richiede molta esperienza, specialmente nella modellazione e texturing 3D, quindi partiamo da prove e progetti basilari, del resto con questo motore si possono fare tantissime cose; molti commettono l'errore di reputarlo un motore per la realizzazione di giochi, ma come Carlos ci spiega: «in realtà non è così; anche se stanno nascendo motori per la creazione di giochi 3D basati su Papervision3D, la libreria non è pensata esclusivamente per questo e infatti non è prevista per esempio l'implementazione di un supporto multiplayer. Papervision3D vuole aprire una finestra su un mondo tridimensionale, ma non ha un target di utilizzo preciso: il suo scopo è poter essere utilizzato per giochi, applicazioni business, grafici, eccetera. Quindi senza essere ristretto a un solo campo, ma con la possibilità di essere applicato a qualsiasi settore e con unico limite l'immaginazione dell'utente».

Gli esempi disponibili sul web dimostrano che Papervision3D possa essere utilizzato in una quantità veramente elevata di ambiti: non ci resta che provarlo e trovarne l'utilizzo migliore nei nostri progetti.

Ti consigliamo anche