Tag Archives: canvas

a webcam toy

webcamExtruder
dd01
dd03
extruded PlaneGeometry. made with Three.js

color_imageLo ammetto, Three.js mi ha catturato.  In passato ho investigato nel ‘campo’ dell’estrusione con Processing ed è stato abbastanza semplice visto che tra le API figura un comodo metodo brightness(x,y); in  Three invece non c’è un metodo del genere, anche perchè leggere le componenti RGBA di un’immagine  non è il mestiere di un framework nato per fare 3D nel browser. Si tratta invece di usare un tag <canvas/>  – una regione 2D  disegnabile parametricamente … ma Three è scritto in JavaScript, quindi si possono usare insieme? Si possono, anzi di devono! Non è così immediato come con Processing e bisogna fare un pò di ricerca ma il risultato – in termini di performances – vale lo sbattimento, ed è solo l’inizio. Si prende una qualsiasi immagine, la si copia in un canvas, del canvas si ciclano le coordinate (x,y) per leggere (e memorizzare) il colore (RGBA) del singolo pixel, si converte il valore esadecimale in luminosità (range 0-255) e si usa questo valore per dare profondità ad un grid mesh modificando la componente z dei singoli vettori.

WebGL demo: pixel brightness extrusion

Fatto qualche test mi son detto: ma anche dalla webcam posso catturare un frame, copiarlo in un canvas, esaminarne la luminosità, eccetera-eccetera-eccetera…

WebGL demo: webcam extruder

processing.js

processing.jsIl buon John ci stupisce con la sua ultima ‘fatica‘. Il porting del linguaggio di programmazione Processing in JavaScript. Processing.js (così come processing in Java), permette di realizzare applicazioni interattive e farle girare all’interno di un browser, ma la versione js sfrutta l’accoppiata js/canvas (per il momento gli esempi più ‘impressive’ girano su Firefox 3 beta, Opera 9.5 e l’ultimo WebKit Nightly built) e quindi ci vuole Firefox2, Safari3, Opera9 o IE con excanvas. A differenza di processing versione Java, che gira sotto forma di applet nel browser, processing.js usa il tag <canvas>, un ‘elemento’ HTML per mezzo del quale si può disegnare via scripting, – appunto JavaScript – creare animazioni ed effetti grafici. E’ una valida (ma non semplicissima) ed entusiasmante alternativa a Flash e sia questa iniziativa come altre, rivoluzioneranno nel medio periodo il modo di progettare e sviluppare la user interaction e l’ interface design.

Tutto questo fermento in ambito opensource conferma che il mondo continua a muoversi in questa direzione e che il browser non verrà mai abbandonato – come dicevamo nel post sulle web-tv on-demand – ma anzi, lo sviluppo degli stessi permetterà la distribuzione di WebApps sempre più sofisticate e forse, presto, sarà l’unico strumento che gli utenti dovranno avere per poter usare fogli di calcolo, applicazioni di image editing, word processing ecc. Un mondo di applicazioni distribuite che girano tutte, semplicemente nel browser. Questa é la direzione più plausibile, ed auspicabile.

Processing is an open source programming language and environment for people who want to program images, animation, and interactions. It is used by students, artists, designers, researchers, and hobbyists for learning, prototyping, and production. It is created to teach fundamentals of computer programming within a visual context and to serve as a software sketchbook and professional production tool. Processing is developed by artists and designers as an alternative to proprietary software tools in the same domain.

Per giocare con processing.js ci vuole una certa dimestichezza coi concetti chiave della programmazione OO e con JavaScript in genere. I miei complimenti a John Resig (già ideatore e team leader di jQuery), per un’altra idea davvero notevole in favore -alla fine- dell’uso di software opensource e della creatività.

Vediamo cosa si può fare con processing.js (questi esempi funzionano tutti con Firefox2 ++): cominciate con questa; non c’è trucco e non c’è inganno (Flash), e tra l’altro, a differenza di qualsiasi DIV, P e famiglia, coi canvas si possono creare forme tonde e lavorare su interazioni del genere.

Sorridete? Fà venire in mente gli ‘anni 2000-2005′ quando artisti e designers di tutto il mondo, con i loro stupefacendi ‘flash experiments’ (Praystation, Bit-101 tanto per citarne un paio tra i più innovativi… all’epoca) contribuirono a rendere Flash quello che è diventato; ma a questo punto, visto il supporto nativo dei canvas per tutti i browser di prossima release, potremmo assistere allo sviluppo di questi frameworks e di questo tipo di tecnologie per lo sviluppo di UI.

Processing.js demos
All Examples Written by Casey Reas and Ben Fry
Basic demos, topical demos, custom “in the wild” demos