Presentazione processing 21/10/2016

54
Processing E arte digitale Daniele Barattieri di San Pietro

Transcript of Presentazione processing 21/10/2016

Processing E arte digitale

Daniele Barattieri di San Pietro

21/10/2016 Daniele Barattieri2

Bio - Daniele

● Studente di Ing Informatica● Sedicente Digital Artist● Programmatore● InfoSec wannabe● Presidente µHack● Lavoro

21/10/2016 Daniele Barattieri3

Processing WUT?!

● Nasce nel 2001 al MIT come libreria JAVA

● Nel 2012 prende vita propria grazie alla Processig Fundation

● Orientato a utenti alle prime armi grazie all’immediato feedback visivo

● Attualmente alla versione 3...per altro andate su Wikipedia

21/10/2016 Daniele Barattieri4

Download

● Sito ufficiale: https://processing.org/

● Scompattate e avviate...

21/10/2016 Daniele Barattieri5

Attenzione!

● Saranno date per scontate nozioni base di programmazione (variabili, funzioni, ecc)

● Se avete domande, fatele subito prima che non riusciate più a capire nulla

● Per eventuali approfondimenti, offritemi una birra e vi spiegherò tutto quello che vorrete

21/10/2016 Daniele Barattieri6

WARNING: MEMES

21/10/2016 Daniele Barattieri7

→ Such Processing!

21/10/2016 Daniele Barattieri8

Hello WORLD

21/10/2016 Daniele Barattieri9

Hello FUNCTIONS

● Setup()– Chiamata una sola

volta all’inizio– Come il nome, serve

per preparare variabili e ambiente di lavoro

● Draw()– Chiamata

ciclicamente– Corpo principale

dello sketch, mettiamo qui tutta la parte di disegno

21/10/2016 Daniele Barattieri10

Gimme size() – gimme life!

● Specifica la dimensione dello sketch– Da processing 3 non si

può modificare a runtime.. più o meno :D

– Va chiamata all’interno di setup()

– Vi si può specificare il motore grafico

21/10/2016 Daniele Barattieri11

Sistema di coordinate

● L’origine sta nell’angolo in alto a sinistra– Y invertita!

● Unita: pixel● Può disegnare

“offscreen”

21/10/2016 Daniele Barattieri12

Piccoli passi...

● Point(x,y)– Disegna un singolo

punto in X-Y

● Line(sx,sy,ex,ey)– Traccia una linea

partendo da SX-SY fino a EX-EY

● Circle(x,y,w,h)– Disegna un ellisse

inscritto nel rettangolo con angolo superione in X-Y, larghezza W e altezza H

● Rect(x,y,w,h)– Disegna un rettangolo,

ancolo superiore sinistro in X-Y, di larghezza W e altezza H

21/10/2016 Daniele Barattieri13

Remember… → → ; ← ←

● Il punto e virgola è importante!

21/10/2016 Daniele Barattieri14

First sketch

21/10/2016 Daniele Barattieri15

ESERCIZIO

1)Disegnare altre due faccine in altre due posizioni

21/10/2016 Daniele Barattieri16

21/10/2016 Daniele Barattieri17

...che sbatta

21/10/2016 Daniele Barattieri18

ENTER THE MATRIX!

● PushMatrix()– Da chiamare prima

per “salvare” l’attuale matrice di riferimento

● PopMatrix()– Da chiamare dopo

per ripristinare l’ultimo sistema di riferimento

21/10/2016 Daniele Barattieri19

Just translate and rotate..!

● Translate(x,y)– Sposta il sistema di

riferimento generale alle coordinate a X-Y

● Rotate(ß)– Ruota il sistema di

coordinate di ß radianti

21/10/2016 Daniele Barattieri20

Attenzione all’ordine!

● L’ordine con cui vengono chiamate queste funzioni è importante!

21/10/2016 Daniele Barattieri21

It’s Transform TIME!

1)PushMatrix

2)Translate/Rotate

3)Draw something

4)PopMatrix

5)...and repeat!

21/10/2016 Daniele Barattieri22

And now… COLORS!

21/10/2016 Daniele Barattieri23

Stroke() - Fill() - ColorMode()

● Stroke()– Imposta il colore dei

contorni

● Fill()– Imposta il colore di

riempimento

● ColorMode()– Seleziona che tipo di

riferimento a colore usare1)RGB - Red/Green/Blue

2)HSB - Hue/Saturation/Brightness

21/10/2016 Daniele Barattieri24

It’s something color

21/10/2016 Daniele Barattieri25

Tweak Mode

● Fighissima funzionalità di Processing 3!

– Consente la modifica di alcuni parametri dello sketch durante l’eseguzione dello stesso

Menu → Sketch → Tweak

OPPURE

CTRL + MAIUSC + T

21/10/2016 Daniele Barattieri26

TWEAKING BABY!

21/10/2016 Daniele Barattieri27

21/10/2016 Daniele Barattieri28

Mouse e tastiera

● Il mouse e la tastiera vengono costantemente monitorati – Processing mette a disposizione funzioni che

vengono automaticamente chiamate quando si verifica un determinate evento

– Esistono anche variabili globali costantemente aggiornate relative a mouse e tastiera

21/10/2016 Daniele Barattieri29

Mickey Mouse

– mouseX & mouseY– mousePressed– mouseButton– mousePressed()– mouseReleased()– mouseClicked()– mouseReleased()– mouseMoved()– mouseDragged()– mouseWheel()

21/10/2016 Daniele Barattieri30

...e ovviamente la tastiera!

– key– keyCode– keyPressed– keyPressed()

21/10/2016 Daniele Barattieri31

One try, one kill!

21/10/2016 Daniele Barattieri32

Background

● Background()– Funzione che

cancella tutto!– Accetta in ingresso

un colore

21/10/2016 Daniele Barattieri33

Cicli e condizioni

● I cicli ci permettono di eseguire più volte un pezzo di codice– Possiamo usare sia il ciclo principale “draw()”

oppure istruzioni come “for” e “while”

● I blocchi condizionali ci permettono di variare il flusso di eseguzione del codice– Blocchi “if..elseif...else” oppure “switch..case”

21/10/2016 Daniele Barattieri34

Cicli “for”

● Sintassi:

for(start;stop;step){

//codice//

}

● Il ciclo inizia stabilendo la condizione di “start”

● Ad ogni iterazione esegue “step” e controlla la condizione “stop”

21/10/2016 Daniele Barattieri35

Condizioni “if..elseif..else”

● Se la condizione è vero allora esegue il codice, altrimenti lo salta

● Sintassi:

if ( condizione ){//codice//

} else if (cond.){//altro codice//

} else {//altro ancora

codice//}

21/10/2016 Daniele Barattieri36

Attenzione alle condizioni!

21/10/2016 Daniele Barattieri37

Linee

21/10/2016 Daniele Barattieri38

...risultato?

21/10/2016 Daniele Barattieri39

Questo titolo è davvero lungo perché volevo scrivere qualcosa di più interessante ma non sapevo come dirlo...

21/10/2016 Daniele Barattieri40

Miglioriamo il codice

● Processing ha tante variabili globali molto utili– Width & height

dimensione attuale dello sketch

● Ricordatevi di commentare!– Aggiungendo “//”

potete inserire dei commenti al codice!

21/10/2016 Daniele Barattieri41

Cool stuff!

...si ma come? :/

21/10/2016 Daniele Barattieri42

Idee???

21/10/2016 Daniele Barattieri43

Soluzione

21/10/2016 Daniele Barattieri44

Get to the choppa!

● ...Ma non dimentichiamoci dell’interattività!

● Cerchiamo di mettere un po' di colore..

21/10/2016 Daniele Barattieri45

Codice completo

21/10/2016 Daniele Barattieri46

Un paio di cenni..

● Ci sono alcune funzioni molto interessanti:– Random(): restituisce numeri casuali– Sin() / Cos() / .. : per le funzioni trigonometriche– NoLoop(): per eseguire Draw() una sola volta– Fill() / noFill() / stroke() / noStroke(): da guardare– Millis(): restituisci i millisecondi dall’avvio– Text(): per disegnare una scritta– ...tantissimo altro…!

https://www.processing.org/reference/

21/10/2016 Daniele Barattieri47

Ultimo argomento!

● Per salvare l’attuale output dello sketch usare la funzione saveFrame

● Le immagini sono salvate nella cartella dello sketch: “CTRL + K” per aprirla

● Sintassi:saveFrame(path)

21/10/2016 Daniele Barattieri48

Spazio alla fantasia!

● Ora non resta altro che immaginare!

Provate a modificare a piacere lo sketch, cercando di creare nuove forme…!

21/10/2016 Daniele Barattieri49

Consigli e link utili

● https://www.openprocessing.org/● https://www.processing.org/exhibition/

“Da piccoli bug derivano grandi opere..!”-cit. Daniele Barattieri

21/10/2016 Daniele Barattieri50

In the next episode..!

● Nella prossima lezione vedremo:– Programmazione più complessa– ...altri Memes! ←– Introduzione all’uso degli Oggetti– Librerie– ...altri Memes! ←– Ambiente 3D– Interazione con dispositivi– ...altri Memes! ←

21/10/2016 Daniele Barattieri51

Compiti per la prossima volta!

● Vogliamo ottenere un effetto simile alla testata del sito di Processing!

21/10/2016 Daniele Barattieri52

Domande?

21/10/2016 Daniele Barattieri53

Grazie

● Contatti– Mail: [email protected]– µHack: [email protected]

21/10/2016 Daniele Barattieri54

Bonus MEME