PicLens in Flash con Papervision3D 2.0: parte II

Martedì 17 Giugno, 2008

Questa volta (vedi Piclens in Flash con Papervision3D 2.0) pubblico il codice (PicLens.as), ho dovuto rivedere alcune parti di codice, allineandomi così agli ultimi rilasci di Papervision3D 2.0 Great White ed ho eseguito alcuni aggiustamenti e aggiunte. Ho inserito in questa demo anche una serie di Knob, manopole, per modificare runtime alcuni parametri.

Simulazione del moto PicLens

Per avvicinarmi il più possibile al movimento orizzontale di PicLens originale, ho usato un piccolo stratagemma inserendo un "non visibile" DisplayObject3D come target per la camera:

Actionscript:
  1. __fooTarget = new DisplayObject3D();
  2. ...
  3. __bv.cameraAsCamera3D.target = __fooTarget;

In pratica la camera punta sempre il DisplayObject3D posto dietro la serie di immmagini. Quando la camera si muove (con un movimento accelerato/inerziale) anche il DisplayObject3D la segue, ma con un leggero ritardo. Questo mi ha permesso di rendere l'effetto di moto morbido e del tutto simile a quello realizzato su PicLens originale:

Actionscript:
  1. __bv.cameraAsCamera3D.x += (( __slider.Value - __bv.cameraAsCamera3D.x)/10)/2.2;
  2. __fooTarget.x += (( __slider.Value - __fooTarget.x)/5)/2.2;

Non ho utilizzato nessun Tween, ma una più semplice e performante funzione:

CODE:
  1. posizione += ((posizionefinale - posizione)/accelerazione)/inerzia;

Nel demo è possibile modificare alcuni parametri: focus, zoom e target. Quest'ultimo è la posizione del DisplayObject3D rispetto alle 99 immagini! Modificando questa posizione si noteranno cambiamenti nel movimento dell'intera scena.
Focus e Zoom sono invece proprietà dell'ambiente Papervision3D.

Interazione

Provate a cliccare sulle immagini... ;)

Post correlati

3D CountDown con FIVe3D

Giovedì 12 Giugno, 2008

Ho scritto una classe CountDown per Actionscript 3.0. Per provarla ho creato un esempio sfruttando le capacità di rendering testuale di FIVe3D.

Clicca per aprire il filmato Flash

Download sorgente

Il sorgente countdown.zip comprende sia la classe CountDown che l'esempio (CountDownDemo) in 3D scritto FIVe3D. Nell'esempio proposto è anche possibile modificare la data finale tramite un campo testo editabile. La classe CountDown verrà inserita quanto prima in Undolibrary.

Continua a leggere... »

Post correlati

Flash e Papervision3D in Javascript

Mercoledì 11 Giugno, 2008

Edward Smith ha sviluppato un wrapper in grado di sfruttare le API Flash e Papervision3D in Javascript! La libreria, AS3Wrapper, è compatibile con FireFox e con IE. Con Safari per Windows funziona mentre ho riscontrato problemi con Opera 9, sempre per Windows. Il meccanismo che sta alla base di questo progetto, e che rende possibile questa “magia”, è quello di includere nella nostra pagina HTML un contenitore Flash (AS3Wrapper.swf) che accetta comandi Javascript (AS3Wrapper.js), permettendo in pratica di costruire oggetti Flash direttamente da Javascript.

Continua a leggere... »

Post correlati

Papervision3D: effetti con perlinNoise()

Lunedì 9 Giugno, 2008

Sfruttando l'effetto generato da perlinNoise() è possibile creare effetti di increspatura e onde con Papervision3D.

Scarica il sorgente

Per compilare il sorgente avete bisogno sia di Papervision3D che di Undolibrary - che ora potete trovare come pacchetto ZIP direttamente nella sezione Download di Google Code.

Post correlati

Papervision3D: BasicView

Venerdì 30 Maggio, 2008

Papervision3D 2.0 (GreatWhite) è in continuo sviluppo e sono molte le funzione che quasi settimanalmente vengono aggiunte. Ad aprile è stato inaugurato il blog dedicato agli sviluppatori (http://dev.papervision3d.org/), tuttavia, la release 2.0, non è ancora stata rilasciata ufficialemente è spesso difficile carpirne le vere potenzialità. Una delle recenti novità introdotte, comunque, è il nuovo oggetto BasicView che crea un'ambiente 3D con pochissime righe di codice. Basta infatti creare questo oggetto per avere a disposizione scena, viewport e camera in un colpo solo.

Continua a leggere... »

Post correlati

FIVe3D: effetti speciali su un cubo! In attesa di Flash 10

Venerdì 16 Maggio, 2008

Molto probabilmente, quando uscirà la nuova versione di Adobe Flash, librerie 3D a "basso livello" come FIVe3D faranno una brutta fine! Tuttavia, prima di "cestinarle", ecco un esempio di quello che è possibile realizzare (con l'ultima release 2.1):

Loading Flash Player...

Il codice della demo qui sopra è abbastanza articolato, quindi non lo propongo integralmente online. Inserisco, comunque, alcune parti di codice interessanti.

Aggiornamento: per il sorgente clicca qui

Continua a leggere... »

Post correlati

Papervision3D: gestire le Bitmap come in FIVe3D

Lunedì 5 Maggio, 2008

Partendo dall'esempio mostrato in FIVe3D: trattare le Bitmap, vediamo come realizzare il medesimo effetto utilizzando Papervision3D 2.0 (Great White), così da proseguire ad analizzare il funzionamento di questa beta Great White.

Loading Flash Player...

Continua a leggere... »

Post correlati

FIVe3D: trattare le Bitmap

Lunedì 5 Maggio, 2008

Con la release 2.1 di FIVe3D è possibile manipolare anche oggetti Bitmap, in modo da superare l'iniziale limite di questa libreria del solo vettoriale. Se inseriamo una Bitmap in libreria e la esprotiamo in modo da poterne creare un'instanza dinamica tramite Actionscript, diventa facile creare un oggetto Bitmap3D e ruotarlo a nostro piacimento:

Loading Flash Player...

Continua a leggere... »

Post correlati

FIVe3D: core 3D per Actionscript 3.0

Domenica 4 Maggio, 2008

FIVe3D (Flash Intercative Vector-based) è un'interessante progetto reazlizzato da Mathieu Badimon. Ne avevo preso visione già qualche tempo fa, quando Actionscript 3.0 ancora non era disponibile. È di questi giorni, invece, un aggiornamento del package alla versione 2.1.

Loading Flash Player...

Continua a leggere... »

Post correlati

Flash 10 Astro: 3D nativo vs Papervision3D

Sabato 3 Maggio, 2008

Adobe ha annunciato da tempo alcune nuove features (Hydra per i filtri grafici evoluti e una migliore gestione del testo) che saranno presenti nella prossima release di Flash. In particolare ha destato interesse l'introduzione del 3D (l'asse Z), la capacità quindi di Flash di manipolare oggetti in un mondo tridimensionale. La stessa Adobe precisa che si tratta in realtà di un 2.5D, come spesso viene indicato, una specie di "simulazione" di un vero e proprio mondo tridimensionale. Infatti si può ruotare un simbolo Flash introno all'asse z ma, nonostante questo, il simbolo rimane piatto nello spazio tridimensionale! Un po' quello che accade quando si distorce una bitmap in Photoshop! Tutto questo, quindi, non ha niente a che fare con progetti come Papervision3D, Away3D, Sandy e molti altri, che contengono tutta una serie di features (camera, scene, texture, etc...) assenti "nell'Astro nascente". In sostanza Adobe non vuole assolutamente sovrapporsi a progetti 3D di terze parti ma solo fornire uno strato nativo per migliorare le prestazioni di librerie 3D già esistenti.

Comunque sia la cosa importante è che Adobe sembrerebbe orientata ad introdurre queste funzionalità tridimensionale ad un alto livello, non aiutando affatto librerie complete e complesse come Paparevision3D. Da tempo, infatti, si usano sostanzialmente due tecniche per espandere le funzionalità di Flash: API di basso livello e API di alto livello.

Le API di basso livello vengono normalmente scritte in C/C++ e fanno parte del core di Flash, compilate quindi all'interno del Player. Questo metodo se da un lato garantisce una maggiore velocità di esecuzione, dall'altro aumenta le dimesioni del Player Flash.

Le API di alto livello sono invece scritte in Actionscript e non appartengono al core nativo. In altre parole sono del tutto simili a librerie che potremmo scrivere noi, con la differenza che vengono fornite direttamente da Adobe. Come accade con il rilascio di Flash 5, la prima introduzione dell'oggetto XML fu realizzata completamente in Actionscript, creando non pochi problemi di performance!
Il vantaggio è che librerie di questo tipo vengono compilate solo quando necessarie e scaricate quindi all'interno del file SWF. Come accade oggi con l'oggetto Tween (vedi fl.motion.* o fl.transition.*) interamente scritto in Actionscript (anche per questo sono nati progetti paralleli come Tweener (caurina.transitions.Tweener) o TweenerMax.
Proprio per questo motivo la comunità Papervision non è del tutto contenta della scelta di utilizzare API di alto livello, in pratica dello stesso "livello" di Papervision3D. Questo, infatti, potrebbe non influire sulle future performance di librerie 3D.

Comunque andrà a finire, la cosa importante è che Papervision3D non è morto, anzi!

Post correlati