Introduzione a SeExpr

Nuovo nella versione 4.4: Questo documento ti introdurrà al linguaggio delle espressioni SeExpr.

Che cos’è SeExpr?

SeExpr è un linguaggio di espressione incorporabile, progettato da Disney Animation, che consente alle applicazioni host di eseguire il rendering di contenuto generato dinamicamente. Pixar lo chiama nella sua documentazione un «generatore e combinatore di modelli con script».

SeExpr è disponibile in Krita come livello di riempimento.

Sfondo

Per capire a cosa serve SeExpr, dobbiamo distinguere tra due tipi di grafica, raster e procedurale.

La stragrande maggioranza delle oggetti generati dal computer che vedi ogni giorno appartengono al primo tipo: immagini come foto, schermate degli anime preferiti, meme, sono tutti una moltitudine di minuscoli puntini di colore, o pixel, disposti in una griglia.

La grafica raster presenta due svantaggi. Innanzitutto, una volta creata, la sua risoluzione è fissa. Non puoi ingrandire e magicamente ottenere altro dettaglio. E se hai bisogno di modificarla, torni alla fonte e la campioni nuovamente (cosa a volte impossibile) o la modifichi con un programma di grafica raster, come Krita.

Uno dei problemi maggiori, tuttavia, è che siamo sempre limitati dallo spazio che i nostri programmi possono utilizzare; una memoria secondaria, come schede SD, o RAM. A meno che non sia compressa, le esigenze di memoria dell’immagine sono quadratiche nella dimensione dell’immagine. Per un un rapido esempio, la finestra Crea un nuovo documento di Krita fornisce tre bit di informazione: la sua dimensione in pixel, la dimensione del pixel stesso e la memoria totale necessaria.

../_images/Krita_newfile.png

Ecco un riepilogo per le trame quadrate. Nota che la memoria necessaria è per un solo livello:

Dimensione

Memoria necessaria

256

256 KB

512

1 MB

1024

4 MB

2048

16 MB

4096

64 MB

Un’alternativa è usare Grafica vettoriale. La grafica vettoriale, ad esempio SVG, impiega formule matematiche come spline e curve di Bézier per descrivere una forma. Poiché le immagini sono matematicamente definite, possono essere ridimensionate per soddisfare le tue esigenze senza perdere la risoluzione.

SeExpr appartiene a una classe diversa, la grafica procedurale. In modo simile alla grafica vettoriale, la grafica procedurale richiede solo pochi KB di archiviazione secondaria per la sua definizione. Ma non sono definiti da formule matematiche; in realtà codifichi come viene calcolato il colore in ogni punto della trama. E, poiché non è limitato nella sua precisione, puoi eseguire il rendering di modelli complessi nei livelli con una risoluzione completamente arbitraria.

Scrivere uno script

In questa guida, ti mostreremo come scrivere uno script in SeExpr, renderlo in un livello, quindi salvarlo come predefinito.

Inizieremo da Livelli e aggiungeremo un nuovo livello di riempimento. Seleziona il generatore SeExpr dall’elenco. Ti sarà presentata questa finestra:

../_images/SeExpr_editor.png

La finestra del generatore di SeExpr è divisa in due schede. Per ora, resteremo su Opzioni.

Nota

Livelli Riempimento descrive queste schede in maniera più dettagliata.

Iniziamo dipingendo uno strato in azzurro.

Innanzitutto, gli script SeExpr devono definire una variabile di uscita, che chiameremo $color. Come SeExpr pensa ai colori in spazio dei colori RGB, le variabili di colore sono definite da una tripletta di numeri noti come vettore. Inizieremo definendo la variabile $color e assegnandole un valore.

Vai alla casella di testo e cancellala se contiene del testo. Poi, definisci e imposta $color a qualcosa come [0,5, 0,5, 1] (rosso illuminato per metà, verde illuminato per metà, blu completamente illuminato):

$color = [0.5, 0.5, 1];

SeExpr ha bisogno di sapere quale variabile contiene il valore del colore finale. Questo è fatto scrivendo alla fine, su una propria riga, il nome della variabile:

$color

Lo script dovrebbe ora assomigliare a questo:

$color = [0.5, 0.5, 1];
$color

Fai clic su OK e sarà eseguito il rendering del primo script!

../_images/SeExpr_first_render.png

Avvertimento

Per essere assolutamente precisi, SeExpr non ha gestione del colore: esegue sempre il rendering delle trame come immagini sRGB con gamma corretta con virgola mobile a 32 bit. Krita li trasforma nello spazio dei colori del tuo documento utilizzando il profilo sRGB-elle-V2-srgbtrc.icc.

Vedi Flusso di lavoro di gestione dei colori per capire il significato.

Gestire il tuo script utilizzando i widget

C’è anche un altro modo per definire e modificare le tue variabili. Apri le proprietà del livello di riempimento facendo clic con il pulsante destro del mouse su Livello di riempimento 1, e selezionando Proprietà del livello….

../_images/SeExpr_prop_1.png

Noti la casella centrale? Una volta rilevato uno script sintatticamente corretto, SeExpr abilita un intero blocco di manopole per gestire le singole variabili. Nel nostro esempio sopra, puoi cambiare $color in tre modi:

  • immetti il valore del canale rosso, verde o blu nei campi di inserimento

  • sposta i piccoli cursori colorati per cambiare il rispettivo canale

  • fai clic sul riquadro di anteprima a sinistra delle caselle per selezionare un colore completamente nuovo.

L’ultimo pulsante nella casella centrale è sempre Aggiungi nuova variabile. Facci sopra clic e si aprirà questa finestra:

../_images/SeExpr_add_variable.png

Questa finestra di dialogo mostra tutti i tipi di variabili che SeExpr accetta:

Curva e curva di colore

Sono la versione SeExpr delle Sfumature con stop: interpolano una rampa data da un insieme di valori.

Le curve rappresentano gradienti a una dimensione, restituendo un singolo float a ogni punto di valutazione.

Le curve di colore rappresentano gradienti RGB, restituendo un colore in ogni punto.

Interi e a virgola mobile

Numeri.

Vettore

Una tripletta di float.

Colore

Un vettore che rappresenta un colore RGB.

Campione

Un elenco di colori.

Stringa

Normalmente parole singole.

Ad esempio, potresti replicare $color nella scheda Vettore:

../_images/SeExpr_add_variable_vector.png

Creare la tua prima preimpostazione

Una volta che il tuo script è pronto, puoi riutilizzarlo creando una preimpostazione.

Puoi crearne uno tramite la barra superiore della scheda Opzioni:

../_images/SeExpr_editor.png

Seleziona Salva nuova preimpostazione di SeExpr… e si aprirà la seguente finestra:

../_images/SeExpr_save.png

Puoi modificare il nome della preimpostazione nella casella di modifica della riga superiore e impostare una miniatura per una facile identificazione.

Suggerimento

La finestra aggiungerà «Copia» al nome della preimpostazione se è una copia di una esistente. Puoi cambiarlo a piacimento.

La finestra fornisce le seguenti scelte per impostare una miniatura:

Carica miniatura esistente

Se la preimpostazione ha già una miniatura (ad esempio, se l’hai creata da una preimpostazione esistente), questo pulsante la caricherà e la applicherà.

Carica immagine

Si applica a un’immagine dal filesystem come una miniatura.

Rendering dello script in miniatura

Esegue il rendering del tuo script in una trama 256x256 e applica quest’ultima come una miniatura.

Pulisci miniatura

Elimina la miniatura. Nota che, se la preimpostazione è una copia di una esistente, questo può essere ripristinato facendo clic su Carica miniatura esistente.

Cambiare le preimpostazioni esistenti

Se modifichi lo script di una preimpostazione, noterai due nuovi pulsanti nella barra superiore della scheda Opzioni:

../_images/SeExpr_overwrite_preset.png

Il pulsante di ricarica ripristinerà la preimpostazione alle sue proprietà originali, mentre facendo clic su Sovrascrivi preimpostazione salverà le modifiche.

Inoltre, puoi modificare il nome della preimpostazione facendo clic sul pulsante Rinomina, inserendo il nuovo nome e facendo clic su Salva:

../_images/SeExpr_rename_preset.png

Creare le proprie preimpostazioni

Condividere i tuoi script è facile! Le preimpostazioni di script SeExpr sono come tutte le altre risorse in Krita. Segui le istruzioni in Gestione delle risorse per creare i tuoi pacchetti.