Monthly Archives: March 2010

vizlab.it

vizlab
VIZLAB – Digital Images for Architecture and Design www.vizlab.it

Gli amici di modostudio hanno chiesto la mia collaborazione per un nuovo progetto: Vizlab. Vizlab é il loro Visualization Department cioé l’area dello studio dedicata ai rendering; per un buon showcase dei loro incredibili lavori, abbiamo pensato di realizzare una gallery di immagini fullscreen con una interfaccia minimale ed effetti di fading fra una slide e l’altra, con jQuery, ovviamente. Dai rendering pubblicati ci si rende subito conto che ricerca, sviluppo ed un elevato livello tecnico rappresentano il motore e la vision del gruppo; modostudio/vizlab é una realtà tra le più promettenti del panorama italiano… e come si dice? Una immagine vale più di mille parole.

Dal punto di vista design/development del minisito, oltre a consigliarvi di dare uno sguardo al codice JavaScript (jQuery), posso anticiparvi che parti di esso potrebbero essere utilizzate per costruire soluzioni similari o più avanzate; non entrerò troppo nel dettaglio ma posso dire che data l’esigenza di dover visualizzare delle immagini a fullscreen, l’unico problema poteva essere quello di dover attendere il caricamento delle stesse (5, 25 o 100 e molto grandi) prima di far partire lo slideshow (come avviene per slideViewer e slideViewer Pro). Per risolvere il problema ho pensato di sviluppare una soluzione in cui gli oggetti immagine vengono reperiti a partire da un file JSON nel quale si trovano il path e la descrizione – non sono quindi inseriti del DOM della pagina; in questo modo, definito un limite minimo di attesa (per es. si attenda che le prime 3 immagini siano in memoria) é possibile far partire lo slideshow. Non é di certo una soluzione non intrusiva (se JavaScript é disabilitato non si vede nulla) ma se state tutti in fissa con FaceBook vuol dire che avete tutti JS abilitato.

In realtà si tratta del motore per slideshow basati su JSON che avevo ideato per visualizzare le mie foto da flickr ma che non ho mai realmente completato e reso pubblico sotto forma di plugin poichè in questo momento sono più interessato allo sviluppo con Processing. In ogni caso, usando il metodo getJSON() é possibile parsare un file di questo tipo ed utilizzarlo per costruire a runtime tutto il DOM che volete; poche righe di codice per un risultato professionale e la base per un plugin molto interessante, che mi riprometto di completare, prima o poi.

Computer Vision

cvision
Self-Portrait, March 2010. Fun with Processing and OpenCV.

Finalmente sono riuscito a far funzionare OpenCV (Processing implementation) sul mio PC. Questa immagine è il risultato della elaborazione con Processing e OpenCV del video feed proveniente dalla mia webcam: analizzando la luminosità brightness() dei singoli pixel di ogni frame, e sapendo che il risultato è per forza compreso nel range 0-255, è possibile usare tale valore per spostare sull’asse Z dei vertici che una volta uniti, formeranno delle linee. Maggior brighness maggior Z cioè più vicino.

Automata

conesnail
Image credits: Conus Textile (da Wikipedia). Il pattern del guscio é generato con meccanismi che ricordano quelli degli automi cellulari, cioé ogni cellula secerne pigmento a seconda dello stato di attività delle cellule adiacenti.

Ho indagato sull’ offscreen buffer di Processing, ed in particolare su come lo si può usare per ottenere e manipolare immagini generate a runtime. Con l’oggetto PGraphics e i metodi beginDraw() ed endDraw(), è possibile disegnare (anche in 3D) fuori dallo schermo, e poi usare l’immagine ottenuta per eseguire ulteriori calcoli e/o applicare effetti e usarla come fosse una qualsiasi immagine da visualizzare a schermo; in realtà pGraphics si usa molto spesso per l’output ad alta risoluzione da Processing (per es. immagini TIFF da 3000 px di larghezza), ma in questo caso, ho utilizzato questi buffer (nel mio caso sono 6, 251 px di lato) per disegnare una serie di patterns per mezzo di un automa unidimensionale. Gli automi sono molto interessanti perchè a dispetto della loro apparente semplicità producono risultati inaspettati e sorprendenti; frattali, automi, L-systems e in genere tutte le funzioni ricorsive governate da ‘regole’ servono a comprendere e spiegare i modelli morfologici di una grande varietà di organismi del mondo che ci circonda; in computer graphics quindi, questa serie di algoritmi e regole rappresentano l’unica via per poter simulare efficacemente organismi complessi, come le piante.

cautomata
Elementary Cellular Automaton http://www.openprocessing.org/visuals/?visualID=8207 – GC Mingati

Un Cellular Automata (CA) di tipo unidimensionale é un sistema composto da griglie di celle e regole che definiscono le modalità di comportamento di ogni cella, per ogni nuova generazione, a seconda dello stato (colore) dei suoi vicini. In altre parole, supponendo di avere una riga di 3 pixel posti orizzontalmente ed il pixel di mezzo bianco con gli altre due vicini neri, possiamo stabilire, di generazione in generazione quale sarà il colore risultante da questa condizione di vicinato. Avremo quindi una nuova condizione, a cui applicare una nuova regola. E così via. Ci sono 8 possibili configurazioni di vicinato da cui scaturiscono 256 possibili regole.

Nella Applet ho usato l’oggetto PGraphics per disegnare un automa su ogni faccia. Una volta completato il render delle facce, potete premere ‘r’ da tastiera per disegnare nuovi pattern.

noise

screen0499
screen0211
pnoise3d
Perlin noise visualization. http://www.openprocessing.org/visuals/?visualID=8172 – GC Mingati

La funzione noise() é comoda per generare una serie di numeri in successione con casualità controllata; la tecnica inventata da Ken Perlin negli anni ‘80 é stata spesso usata in computer graphics per imitare l’ apparente randomicità delle textures in natura o per riprodurre terreni, forme ecc. In queste immagini, si può vedere come il ‘Perlin noise’, influenzando la velocità delle particelle rosse, faccia variare il moto delle stesse ammassandole in forme sinuose che ricordano i vasi sanguigni e i meandri dei fiumi visti da grande altitudine. Nella Applet, ho aggiunto attrito e gravità orizzontale per influenzare ulteriormente questo ordine aggiungendo disordine; ne é derivato un caos su cui ho voluto indagare qualche ora.

MiniMag

Multiplex MiniMag

Lo scorso mese di ottobre, ho acquistato un MiniMag – della tedesca Multiplex. Dicevo ma che aerei, non c’è paragone; vuoi mettere la complessità, le performances, la bellezza del volo stazionario e traslato degli elicotteri? E invece inizio a prenderci sempre più gusto, al punto che in tutto questo periodo invernale ho raramente levato in volo il Logo500 in favore di questo piccolo e leggerissimo modello in Elapor® – un materiale brevettato da Multiplex simile all’EPP (Expanded PolyPropylene), ma molto più resistente.

Ecco una breve recensione su questo famigerato modello stravenduto in tutto il mondo, adatto a principianti e piloti con esperienza intermedia; il MiniMag è un trainer ad ala alta del peso di 550/600 gr. (all-up-weight), molto semplice da montare, leggero e facile da far volare. Tutti i modelli Multiplex sono fatti in Elapor e si assemblano con poche ore di lavoro incollando le parti con colla cianoacrilica; il kit contiene i due gusci della fusoliera, le ali (costituite da un unico pezzo) con relativi incavi per i servi, la deriva, il piano di coda, un resistente carrello in acciaio, tiranteria, rinforzi, decals ed un motore a spazzole classe 400. Investigando un po sui vari forum ho capito che era meglio dotarlo da subito di un motore più potente tipo brushless Hacker A20-22L ed elica 8×6; scelta azzeccata visto che con questo motore, associato ad una batteria 3S (11,1V 1300mAh) si ottengono decolli ‘verticali’ e si esce facilmente da qualsiasi situazione di incertezza con ‘un tocco’ alla manetta del gas; gli assorbimenti sono inferiori ai 20A, e per ogni pacco batterie ci si diverte per una decina di minuti.

Loading the player…


Multiplex MiniMag (I-HACR) with FlyCamOne2 on board. Pilot: Gian Carlo Mingati. Flight assistant: Peter.

Il modello non é dotato di ruotino di coda sterzante, quindi non c’è possibilità di rullare in posizione attendendo l’ok della torre così come non c’è modo di mantenerlo allineato alla pista una volta atterrati ma il decollo (col motore Hacker) avviene in 3 metri scarsi ed una volta in aria il MiniMag rivela da subito caratteristiche di volo molto prevedibili, buona manovrabilità, ottime doti di planata ed è molto, molto rilassante (rispetto al mio Logo500 con i suoi 700 Watt di assorbimento ed un peso di 2.5Kg che ti costringe ad un continuo controllo ed impegno perchè non permette errori); un modello adatto a tutti, che si può far volare anche senza gli alettoni (ricavabili dalle apposite scanalature nelle ali) ma che consiglio di utilizzare, perchè rendono il tutto molto più governabile e si riesce a volare con venti medio/sostenuti – a patto di avere un pista di atterraggio orientata nella direzione del vento, perchè per esperienza vi assicuro che atterrare con venti laterali con un modello così leggero non è facile; piccolo e facilmente trasportabile, il MiniMag sarà il vostro compagno di viaggio per le scampagnate e le vacanze al lago (si possono mettere galleggianti per atterrare e partire dall’acqua) e vi permetterà di farvi le ossa per poter passare a modelli più grandi ed impegnativi in balsa e/o materiali compositi come per esempio questo bellissimo de Havilland Canada DHC-6 Twin Otter della americana Hangar 9.

dhc601
dhc602
de Havilland Canada DHC-6 Twin Otter. © Hangar 9

Alcuni dati sul MiniMag: apertura alare 1010 mm; lunghezza 820 mm; area delle ali 22 dm2; carico alare (FAI) 26 gr/dm2; motorizzazione consigliata Hacker A20-22L + prop 8×6 + batteria 3S; funzioni: timone/elevatore/alettoni.