Animare il testo con la grafica vettoriale, guardate che magia

Un gruppo di ricercatori accademici fornisce il codice sorgente che permette di usare la GPU per animare qualunque testo, intervenendo con realizzazioni semanticamente coerenti sulle singole lettere.

Immaginate del testo che prende vita sullo schermo e rende dinamica quella che di norma è una comunicazione statica. Animare testo in maniera tale da non ottenere immagini soltanto visualmente accattivanti ma anche semanticamente significative, è una sfida formidabile. Sfruttando tecniche avanzate di elaborazione vettoriale, un team di ricercatori accademici delle Università della Scienza e della Tecnologia di Hong Kong e dell’Università di Tel Aviv propone oggi un approccio davvero pioneristico.

Come animare testo usando elaborazioni avanzate di grafica vettoriale

La tipografia dinamica è uno schema evoluto che fonde due compiti intricati: da un lato “deformare” le lettere in modo da trasmettere un significato semantico e dall’altro sviluppare movimenti basati sul prompt fornito dall’utente.

Sfruttando tecniche avanzate nelle rappresentazioni grafiche vettoriali, il metodo appena proposto garantisce che ogni animazione sia non solo visivamente accattivante ma anche semanticamente coerente. In un altro articolo abbiamo visto cosa significa vettorializzare un’immagine.

Il processo, descritto con dovizia di particolari nel testo Dynamic Typography: Bringing Text to Life via Video Diffusion Prior, parte con l’inizializzazione della lettera di input utilizzando un insieme di curve di Bézier cubiche connesse. Queste ultime sono una forma di curva parametrica utilizzata comunemente nella grafica computazionale e nel design. Per capire meglio cosa sono, vediamo alcuni concetti chiave:

Una curva di Bézier cubica è definita da quattro punti di controllo: due punti estremi e due punti intermedi. Questa curva inizia nel primo punto di controllo, termina nel quarto punto di controllo ed è influenzata dai due punti intermedi, i quali determinano la forma e l’orientamento della curva. Si parla di curve “cubiche connesse” perché il punto finale di una curva è il punto iniziale della curva successiva, creando un percorso continuo.

Il metodo utilizzato prevede quindi l’applicazione di vari movimenti per ciascun punto di controllo posizionato su ogni frame. È così possibile deformare efficacemente la lettera per trasmettere un significato semantico. L’intero processo è ottimizzato utilizzando la tecnica video diffusion prior: essa garantisce che l’output finale interpreti fedelmente i prompt dell’utente mantenendo la leggibilità.

Provare in locale la generazione del testo animato usando la tecnica video diffusion prior

Il bello della ricerca degli accademici di Hong Kong e Tel Aviv, è che non si tratta di un’indagine teorica. Gli interessati possono fare riferimento al codice e alle indicazioni pubblicati su GitHub  per creare in proprio testi che prendono vita e diventano dinamici.

Tutte le immagini dimostrative che trovate in questa pagina sono state generate ricorrendo a una singola scheda NVIDIA H800 con 80 GB di memoria VRAM a bordo. Per generare un’animazione testuale composta da 20 frame o più, tuttavia, è necessario servirsi di una GPU con almeno 24 GB di VRAM.

Soddisfatti questi requisiti, sicuramente non da tutti, si può clonare il repository GitHub del progetto su un sistema Linux quindi usare il comando conda env per impostare l’ambiente di lavoro:

git clone https://github.com/zliucz/animate-your-word.git
cd animate-your-word
conda env create -f environment.yml

Il comando conda env è parte di Conda, sistema di gestione degli ambienti e dei pacchetti per i linguaggi di programmazione Python e R. In particolare, conda env gestisce gli ambienti virtuali, spazi di lavoro isolati che consentono agli sviluppatori di lavorare su progetti con dipendenze specifiche senza influenzare l’ambiente di sistema o altri progetti.

Animare testo grafica vettoriale

A questo punto, il seguente codice di esempio può essere usato per generare una versione animata della lettera “H” all’interno della parola father.

CUDA_VISIBLE_DEVICES=0 python dynamicTypography.py \
--word "father" --optimized_letter "h" \
--caption "A tall father walks along the road, holding his little son with his hand" \
--use_xformer --canonical --anneal \
--use_perceptual_loss --use_conformal_loss \
--use_transition_loss

Anche a questo indirizzo trovate un po’ di esempi di trasformazioni eseguite usando la tecnica della video diffusion prior.

Nell’immagine in apertura, una scheda NVIDIA H800 (fonte: NVIDIA).

Ti consigliamo anche

Link copiato negli appunti