Processing
Processing
Processing
Octubre 2009
El lenguaje Processing
Processing: Un dialecto de Java, muy simplicado. Una IDE sencilla. A priori ninguna dicultad para programadores en C, C++. La meta es tocar a un pblico que no sabe de lenguajes en u general, enfocado a grcos interactivos, sonido, v a deo, animacin. . . o Produce aplicaciones locales o applets que puedes poner en el www.
El lenguaje Processing
Aplicaciones particularmente bien adaptadas: enseanza: rudimentos programacin hasta POO, n o enseanza: ilustracin animada de conceptos, n o prototipaje rpido de aplicaciones, sketches a visualizacin de datos. o
El lenguaje Processing
Est de cierta manera en competencia con Flash para a visualizacin de datos, o su propsito es tocar un pblico de no-programadores. . . o u
Sketches
El concepto de Sketch es el de proyecto de las IDEs normales, es decir el un programa con una o varias unidades de compilacin. o A un Sketch corresponde a un directorio en un directorio de Sketches. Los archivos de los Sketches tienen extensin .pde. o Los diferentes archivos aparecen como pestaas en la ventana n del cdigo. o
Librer disponibles as
Integrados Importacin de datos XML, SVG o Exportacin PDF, DXF, etc. o Video Redes Comunicacin serial o External Contributions Sonido: Ess, Sonia Computer Vision: JMyron, ReacTIVision,BlobDetection Interface: proCONTROLL, Interfascia ...
, J.B. Hayet Seminario Computacin, Octubre 2009 o 8 / 36
Tres maneras de programar. Modo bsico (dibujos estticos). a a Modo continuo (animacin). o Modo Java (clases Java). Se puede adaptar a la audiencia. . .
Funciones, recursiones. . .
, J.B. Hayet Seminario Computacin, Octubre 2009 o 12 / 36
Modo continuo, programacin procedural o Dos funciones invocadas por default: setup() : al crear la ventana, draw() : funcin de dibujo llamada en cada ciclo (frecuencia o adaptable. . . ) Simulacin dinmica. . . o a
, 15 / 36
Data types (int, oat, boolean) Arrays Loops Conditionals and Logical Operators Strings Variables and Scoping
Grcos a
Es lo ms interesante del lenguaje: a se encarga de toda la parte generalmente tcnicamente delicada e de inicializacin integrando varias modalidades grcas por o a default (2D, 3D, OpenGL. . . ), muy fcil de crear animaciones, visualizaciones dinmicas aun a a para debutante, grcos, sonidos, animacin son al centro del concepto. a o
Grcos a
Grcos a
4 tipos de rendering bibliotecas de Java, Java2D (default), modo 2D de Processing (mas rapido pero un poco mas feo), modo 3D de Processing, modo openGL.
Grcos a
Modo Java 2D/P2D
void setup ( ) { s i z e (320 , 240); background ( 1 5 3 ) ; } v o i d draw ( ) { l i n e ( 0 , 0 , width , h e i g h t ) ; }
Grcos a
Modo P3D
void setup ( ) { s i z e ( 3 2 0 , 2 4 0 , P3D ) ; } v o i d draw ( ) { background ( 0 ) ; stroke (255 ,0 ,0); t r a n s l a t e ( width /2 , h e i g h t / 2 ) ; r o t a t e X ( c o s ( fram eC ou nt PI / 3 0 0 ) ) ; l i n e ( 0 , 0 , 0 , width , h e i g h t , 200); l i n e ( 0 , 0 , 0, width , h e i g h t , 200); l i n e ( width , h e i g h t , 200, width , h e i g h t , 200); }
, J.B. Hayet Seminario Computacin, Octubre 2009 o 22 / 36
Grcos a
Modo OpenGL
import pro ce s s ing . opengl . ; void setup ( ) { s i z e ( s c r e e n . width , s c r e e n . h e i g h t , OPENGL ) ; } v o i d draw ( ) { background ( 2 5 5 ) ; stroke (0); noFill (); t r a n s l a t e ( width /2 , h e i g h t / 2 ) ; r o t a t e X ( xTheta ) ; r o t a t e Y ( yTheta ) ; box ( 1 0 0 ) ; xTheta += 0 . 0 2 ; yTheta += 0 . 0 3 ; }
J.B. Hayet Seminario Computacin, Octubre 2009 o 23 / 36
Grcos 2D a
// Tamano de l a v e n t a n a s i z e (400 , 400); // No d i b u j a b o r d o s de l a s f o r m a s noStroke ( ) ; // No r e l l e n a f o r m a s noFill (); // C o l o r de f o n d o en l a v e n t a n a background (100 ,255 ,200); // C o l o r de r e l l e n o f i l l (255 ,100 ,200); // C o l o r de l o s b o r d o s stroke (200);
Grcos 2D a
// draw a p o i n t i n t h e m i d d l e // w i d t h and h e i g h t s t o r e t h e // window s i z e p o i n t ( width /2 , h e i g h t / 2 ) ; // draw a 20 x20 r e c t a n g l e rect (10 ,10 ,20 ,20); // draw an e l l i p s e e l l i p s e (50 ,50 ,30 ,30); // draw an i r r e g u l a r s h a p e beginShape ( ) ; v e r t e x (60 , 40); v e r t e x (160 , 10); v e r t e x (170 , 150); v e r t e x (60 , 150); endShape ( ) ;
Grcos 3D a
pushMatrix ( ) ; noFill (); stroke (255 ,200); smooth ( ) ; popMatrix ( ) ; lights (); pushMatrix ( ) ; r o t a t e X ( r a d i a n s ( r o t a t i o n X ) ) ; rotateY ( r a d i a n s (270 r o t a t i o n Y ) ) ; f i l l (200); noStroke ( ) ; t e x t u r e M o d e (IMAGE ) ; t e x t u r e d S p h e r e ( g l o b e R a d i u s , texmap ) ; popMatrix ( ) ; popMatrix ( ) ;
, J.B. Hayet Seminario Computacin, Octubre 2009 o 26 / 36
Imagenes
Imagenes
noStroke ( ) ; c o l o r M o d e (RGB, 1 0 0 ) ; f o r ( i n t i =0; i <100; i ++) { f o r ( i n t j =0; j <100; j ++) { stroke ( i , j , 0); p o i n t ( i , 200+ j ) ; } } c o l o r M o d e (HSB , 1 0 0 ) ; f o r ( i n t i =0; i <100; i ++) { f o r ( i n t j =0; j <100; j ++) { stroke ( i , j , 100); p o i n t ( i , 300+ j ) ; } }
, J.B. Hayet Seminario Computacin, Octubre 2009 o 28 / 36
Imagenes
f o r ( i n t x =0; x<img . w i d t h ; x+=25) { f o r ( i n t y =0; y<img . h e i g h t ; y+=25) { int p i x e l c o l o r = img . p i x e l s [ x+y img . w i d t h ] ; f i l l ( pixelcolor ); e l l i p s e (x , y ,15 ,15); } }
Videos
Lectura, aceso a imagenes. . .
import pro ce s s ing . video . ; Movie myMovie ; void setup ( ) { myMovie = new Movie ( t h i s , f o o t p r i n t s . mov ) ; myMovie . r e a d ( ) ; myMovie . l o o p ( ) ; s i z e ( myMovie . width , myMovie . h e i g h t ) ; } v o i d draw ( ) { t i n t (200 , 20); i f ( myMovie . a v a i l a b l e ( ) ) { image ( myMovie , mouseX , mouseY ) ; } } v o i d m o v i e E v e n t ( Movie m) {
J.B. Hayet Seminario Computacin, Octubre 2009 o 30 / 36
Video capture
Aceso a hardware. . .
import pro ce s s ing . video . ; C a p t u r e myCapture ; void setup ( ) { s i z e (400 , 400); myCapture = new C a p t u r e ( t h i s , width , h e i g h t , 3 0 ) ;
Vision
Unos esfuerzos para portar el OpenCV a Processing http://ubaa.net/shared/processing/opencv/
Procesamiento de sonido
Con la librer ESS, procesamiento de sonido en linea, FFT a
Exportar un applet
Una de las grandes caracteristicas de Processing: exportar el programa como applet y ponerlo en una pagina www,
Docencia: en qu ayuda? e
Se puede aprender los conceptos esenciales de programacin a o varios niveles, Salida grca muy fcil de manejar, con animacin, a a o Simulacin, o Componentes de imgenes, de video. . . a Exportar ilustraciones de conceptos en la www.
Docencia: en qu ayuda? e
Se puede usar Processing con Java normal (excepto. . . ): Desarollas bibliotecas dedicadas a tu clase, de mas alto nivel. Los alumnos usan el Processing como clientes de esas librer as, pero lo usan sin preocuparse de manejar grcos. . . a Combinar Processing con Eclipse http://processing.org/learning/tutorials/eclipse/