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.
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:
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!
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….
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:
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:
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:
Seleziona Salva nuova preimpostazione di SeExpr… e si aprirà la seguente finestra:
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:
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:
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.