» it.Tutorial Spreads
This site relies heavily on Javascript. You should enable it if you want the full experience. Learn more.

it.Tutorial Spreads

English | French | Russian | Spanish | Japanese | Korean | Mandarin

Il tutorial che segue prevede che tu abbia fatto pratica col tutorial 2: Herr Inspektor L'integerrimo Ispettore.

Eh, sei nella lista? Eh, se non sei in lista non puoi entrare...

Più in basso ci si riferirà agli Spreads come ad una lista di dati; anche propagazione di dati rende molto bene l'idea. In ogni caso gli spreads sono fondamentali, e la loro esatta comprensione supercalifragilistichespiralidoserà le tue patches.

In quasi tutti i casi in cui in cui vorrai gestire più istanze di dati, che siano colori, valori, files, textures o geometrie, pensare in termini di spreads semplificherà la gestione della tua patch e ti farà ottenere risultati spettacolari.

Uno Spread di Slices

Semplificando, per iniziare potremmo dire che con spread si indica né più né meno che una lista. Una lista di dati arbitrari, che siano valori, stringhe, colori, ecc. Un singolo dato di questa lista viene chiamato Slice.

Sai già che attraverso un pin di un nodo si possono gestire determinati tipi di dati (valori, stringhe, colori, enumeratori, nodi). Quello che non è stato ancora detto è che ogni pin non gestisce necessariamente solo un'istanza del dato cui si riferisce, ma potenzialmente trasporta, trasmette un'intera lista di dati, "a whole spread of data"

Generatori di Spread

Puoi scoprire il numero di slices di un pin spostandoci sopra il cursore del mouse. Genera un nodo LinearSpread (Spreads) e sposta il cursore sopra sopra il pin di output. Niente di particolare. Setta il pin SpreadCount del nodo a 5 e sposta di nuovo il cursore sul pin di output: dopo il valore appare un (5).

Così il suggerimento ti dice che ci sono 5 slices , ma te ne mostra solo una. Ti sta facendo un favore, perché se invece che di 5, disponesse di 10.000 (o anche mmmillemila) slices, non vorresti mai che te le elencasse tutte. Ma c'è un modo per controllare queste slices. Nel tutorial precedente è stato mostrato come cliccando sulle freccette della colonna centrale dell'Ispettore (tra il valore del pin ed il suo nome), dopo aver selezionato il nodo che ci interessa, si possono osservare tutte le slices di uno spread.

Assieme al nodo LinearSpread (Spreads) ci sono molti altri nodi che possono generare spreads. Se vuoi, consulta HelpPatches a proposito dei nodi CircularSpread (Spreads), RandomSpread (Spreads) e I (Spreads). Poi torna qui, però.

Usare gli Spreads

Ragionaci sopra. C'è un pin che trasporta uno spread di 5 slices, come reagisce un nodo se lo spread è collegato ad uno dei suoi input pins? Per vedere cosa succede, genera un nodo Renderer (GDI) ed un nodo Point (GDI) che connetterai al renderer. Il risultato è un + al centro del nodo Renderer (GDI) (oppure nel punto che corrisponde alle coordinate "X" ed "Y" inserite negli input pins del nodo Point (GDI). Ora connetti l'output pin del nodo LinearSpread (Spreads) allo X input del nodo Point (GDI).

Quello che vedi è l'intelligente nodo Point (GDI) che gestisce uno spread. Semplicemente disegna i suoi + non una volta sola, ma cinque, dato che riceve una lista di cinque coordinate in base alle quali disegnare. Ovvio, eh? Se tu fossi stato un punto, che avresti fatto? E cosa avresti fatto se fossi stato connesso/a ad un altro spread con un altro valore inserito in un altro pin?
Duplica (Ctrl+D) il nodo LinearSpread (Spreads), imposta il suo SpreadCount pin a 2, connettilo allo Y input pin del nodo Point (GDI) ed osserva quello che succede.

Hai capito? Il nodo Point (GDI) riceve 5 valori nello X input pin e 2 valori nell'Y input pin. Ecco come si comporta:

  • quando disegna il primo + prende in considerazione la prima slice dello X pin e la prima dello Y pin
  • quando disegna il secondo + prende in considerazione la seconda slice dello X pin e la seconda dello Y pin
  • quando disegna il terzo + prende in considerazione la terza slice dello X pin e , siccome non c'è nessuna terza slice nello Y pin, torna ad usare la prima slice
  • ...

Tutto qui. Questo è il modo in cui ogni nodo si rapporta con gli spreads attraverso i suoi input pins. Sempre che l'input pin accetti gli spreads. Se non lo fa, scarta tutte le slices ad eccezione della prima. Per capire se un input pin accetti o meno outputs dagli spreads, controllalo nell'Ispettore: se prima del suo nome trovi questo ">" o questo ">>" significa che li accetta.

Non fa mai male guardarsi questo video tutorial sugli spreads.

Accedere ad una singola Slice

Se tutto va per il verso giusto, nella maggior parte dei casi non dovrai gestire singole slices, dato che quasi ogni nodo può rapportarsi con gli spreads. Naturalmente ci sono però delle buone ragioni per accedere ad una singola slice. Supponiamo che ci sia questa necessità, e che il nostro obiettivo sia gestire manualmente la terza slice che viene fuori dal primo LinearSpread (Spreads). Quindi inseriamo nella patch un nodo SetSlice (Spreads) come mostrato sotto.

L'input alla destra estrema del nodo SetSlice (Spreads) segnala al nodo quale slice vogliamo modificare. Siccome le slices sono numerate a partire dallo 0 (zero), se vogliamo modificare la terza dobbiamo inserire un 2. Il secondo input pin del nodo SetSlice (Spreads) è il nuovo valore che vogliamo assegnare alla terza slice. Modifica quel valore e vedrai il terzo + muoversi indipendentemente dagli altri.

Penserai che questo sia abbastanza ganzo, ma dai un'occhiata a questo:

Attraverso il nodo I (Spreads) diciamo al nodo SetSlice (Spreads) che vogliamo gestire non solo la terza slice, ma tutte quelle che vanno dalla prima alla terza. Con un altro nodo LinearSpread (Spreads) generiamo questi tre valori....

E così via. Ora ogni volta che penserai che ci sarà un problema uno spread verrà in tuo soccorso.

Ulteriori esperimenti

A questo punto potrebbe essere interessante aprire le helppatches
dei nodi: GetSlice (Spreads), Stallone (Spreads), Queue (Spreads) e Cons (Spreads).

La serie dei tutorials prosegue spiegando alcune cose che dovresti sapere sugli IOBoxes.

anonymous user login

Shoutbox

~4h ago

microdee: @fibo: vvvv is delphi in its core, it just interacts with .NET with com visible objects under the hood. VL on the other hand...

~1d ago

drupal_admin: hello. maintenance reboot at 1am. save your work. back in a few minutes

~1d ago

fibo: lol now AWS Lambda supports C# ... does it mean we will see vvvv cloud version?

~2d ago

joreg: @pdubost great, i'd love to see this in our gallery 24

~3d ago

skyliner: @pdubost: vvvvery good!

~3d ago

gerrit: Any recommendations for interesting / exciting booths at IAA? Any good media installations? Somebody made something with vvvv? Thx

~3d ago

microdee: @matka: nope because the SD card got full and we never received an empty one :(

~3d ago

matka: Do we have recordings of the second part of PBR Rendering workshop at NODE17?

~5d ago

pdubost: latest personal project thanks devs and @mrvux for Box2d :) https://vimeo.com/233756367