Texture (grafica)

Da Wikipedia, l'enciclopedia libera.
Classi di texture.png

Il termine texture (in italiano reso come "trama") si riferisce all'insieme di variazioni cromatiche e morfologiche possedute da qualsiasi materiale presente nella realtà.[1] Una texture, in computer grafica e nel graphic design, è comunemente un'immagine bidimensionale in formato raster che viene riprodotta su una o più facce di un modello tridimensionale poligonale o sul foglio virtuale.

In base al grado di casualità dell'immagine, le texture possono essere disposte lungo uno spettro che va da texture regolari a texture stocastiche, collegate da transizioni graduali.[2]

  • Texture regolari: queste texture sono sostanzialmente i pattern discussi sotto. Un esempio di texture strutturata è un muro di pietra o un pavimento con piastrelle.
  • Texture stocastiche: queste texture si presentano come affette da rumore.

Una texture è dunque un'immagine che rappresenta le forme e i colori della superficie di un oggetto o di un essere vivente, e la cui applicazione caratterizza ciò che su cui si sta lavorando in un'opera grafica.

La texture nel graphic design[modifica | modifica wikitesto]

Una texture è il modo in cui una superficie si presenta all'occhio; una texture è dunque usata per attribuire un tono visivo e può influenzare l'aspetto e la percezione di un lavoro di grafica. Essa è utilizzata per attrarre o allontanare l'interesse verso un elemento in base alla piacevolezza della texture stessa.[3] Nel graphic design ci sono due tipi di texture, in base al contenuto dell'immagine: texture immagine e pattern.

Texture immagine[modifica | modifica wikitesto]

Una image texture (texture immagine) è formata dalla combinazione di forme organiche o geometriche e colore. Può essere semplice o complessa e generalmente ha un modo di apparire casuale, affinché manifesti un look e una percezione particolari; stuzzica i sensi, all'occhio piace guardare una texture di questo tipo.[3] Non è possibile trovarci nulla di particolare, ma nel complesso provoca una percezione di emozioni e nonostante questo una sensazione di tatto.

Una texture immagine può essere ambientale, biologica, artificiale.[3] Una texture immagine ambientale, può consistere, per esempio, in legno, grano, sabbia, acqua, pietra o le stelle del cielo. Una texture immagine biologica può consistere in pelle umana, manto animale, piume, o impronte. Le texture immagine artificiali possono essere dipinti, illustrazioni, dadi, abiti, documenti, tipografie, effetti fotografici e così via.

Pattern[modifica | modifica wikitesto]

Esempio di pattern

Una pattern texture o più semplicemente pattern, è un'immagine formata dalla combinazione di forme organiche o geometriche e colore, e tecnicamente, un motivo o un disegno che si ripete, secondo una simmetria e un ordine. I pattern possono essere semplici o complessi, ma a differenza delle texture immagine, essi appaiono molto più strutturati e richiamano il senso della vista piuttosto che la capacità emozionale.[3] In genere si tratta di motivi decorativi, tessuti, figure astratte.

In grafica come in architettura il pattern diventa uno strumento per comunicare, creare equilibri, generare piacere estetico, questo secondo gli studi di Ernst Gombrich si colloca generalmente in una posizione intermedia tra gli estremi costituiti da caos e ridondanza.[4] La ridondanza viene definita dalla teoria dell'informazione come la ripetizione costante di una serie di messaggi sempre uguali o comunque perfettamente prevedibili, il caos come una successione di messaggi imprevedibili. Nel primo caso, una volta compresa la chiave comunicativa, il messaggio diviene privo di interesse e il ricevente non pone più attenzione ad esso, nel secondo caso, quando la sequenza di messaggi non presenta alcuna regola riconoscibile né è possibile individuare alcun percorso logico organizzato, si attiva un meccanismo psicologico di rifiuto, la comunicazione svanisce. Stabiliti gli estremi, bisogna definire una situazione di equilibrio, un alta quantità di informazioni all'interno di una logica compositiva chiara e riconoscibile. Tantissimi tra artisti (Kandinskij, Klee), studiosi, architetti si sono occupati di pattern o ne hanno sfruttato le qualità all'interno delle loro opere, partendo dalla ripetizione dello stesso elemento senza variazioni, inserendo all'interno del pattern diversi elementi, aumentando la quantità dell'informazione, senza superare la soglia oltre la quale si genera il caos.

La texture in computer grafica[modifica | modifica wikitesto]

Quando un utente cerca di replicare il mondo reale, realizza immediatamente che difficilmente qualunque superficie non sia caratterizzata. Il legno si sviluppa nella ruvidità, la pelle con le rughe, i vestiti presentano una struttura a intreccio, la pittura mostra i segni del pennello o del rullo che l'ha posata sul muro. E il metallo liscio mostra i segni del processo di lavorazione. I materiali che prima erano senza una caratteristica specifica diventano rapidamente ricoperti di segni, denti, macchie, graffi, impronte digitali e sporcizia.

Tecnicamente, nella computer grafica, le texture vengono applicate alla superficie di un materiale e ne influenzano lo shading. Oltre che per la questione riguardante la determinazione dei materiali stessi, nella computer grafica 3D le texture sono indispensabili anche per altri scopi:[1]

  • Raffigurare immagini: se disponiamo di una scena all'interno della quale deve essere visualizzata una fotografia, un'illustrazione, una scrittura (le pagine di un libro, per esempio) e così via.
  • Aggiungere dettaglio: non sempre è opportuno aumentare il livello di un modello incrementandone il numero di vertici, anzi, tale situazione, oltre un certo grado è da evitarsi. In alcuni casi, per esempio l'aggiunta di "sporco" , la modellazione non può essere di alcuna utilità. Le texture possono venire in aiuto per rappresentare superfici che dispongono di dettagli molto irregolari (lo sporco), allo stesso modo di superfici suddivise in modo regolare (una pavimentazione, i mattoni di un muro e così via).

Texture mapping[modifica | modifica wikitesto]

Exquisite-kfind.png Lo stesso argomento in dettaglio: Texture mapping.

Per permettere all'utente di replicare la superficie di un oggetto reale sul proprio modello tridimensionale, gran parte dei software consente il texture mapping: se si possiede un'immagine, detta in questo caso texture map, image texture, o semplicemente texture, è possibile eseguire una mappatura (mappatura UV) dell'immagine sulla superficie del modello.

Texture procedurali[modifica | modifica wikitesto]

Texture di una grata realizzata in modo procedurale

Le texture procedurali (procedural textures) sono delle texture generate matematicamente.[1] Sono utilizzate per simulare in genere il legno, il marmo, il granito, la pietra, il metallo, e altro.

Storia

Fin dalla nascita del texture mapping, un gran numero di ricercatori utilizzavano comunque modelli di texturing per generare immagini piuttosto che scansionarle o dipingerle. Nel 1976, Jim Blinn e Newell impiegarono la sintesi di Fourier. Nel 1978, Fu e Lu proposero una tecnica di generazione sintattica grammar-based. Nel 1979, Schacter e Ahuja utilizzarono la sintesi di Fourier e modelli stocastici di vario tipo per generare immagini per simulatori di volo.[5] Nel 1982, Fournier, Fussell e Carpenter, e nel 1984, Haruyama e Barsky proposero l'utilizzo della suddivisione stocastica ("frattale") per generare le texture. Altri ricercatori svilupparono modelli di texture statistici, che analizzavano le proprietà delle texture naturali e dopo riproducevano le texture dai dati raccolti (Gagalowicz e Ma nel 1985, Garber nel 1981).

Nel 1984, Cook descrisse il sistema "shade trees"[5], che fu uno dei primi sistemi per cui era conveniente generare texture procedurali durante il rendering. Gli shade trees abilitavano l'uso di differenti modelli di shading per ogni superficie oltre che per le sorgenti luminose e per l'attenuazione attraverso l'atmosfera. Poiché gli input al modello di shading possono essere manipolati proceduralmente, gli shade trees rendono possibile usare le texture per controllare qualunque parte del computo dello shading. Texture a colori e trasparenti, reflection mapping, bump mapping, displacement mapping, e solid texturing, possono essere implementati usando gli shade trees.

Nel 1985, Perlin descrisse un linguaggio completo per la generazione di texture procedurali e gettò le fondamenta della classe più conosciuta di texture procedurali in uso oggi[5], ovvero quella basate sul rumore di Perlin, una primitiva di generazione di texture stocastiche.

Nel 1991, Turk, Witkin e Kass descrissero modelli di sintesi di texture, ispirati dai processi biochimici che producono (fra altri effetti), i pattern di pigmentazione sulle pelli degli animali. Nello stesso anno, Sims descrisse un sistema di sintesi in cui le texture procedurali rappresenta come espressioni LISP, sono automaticamente modificate e combinate da un sistema di programmazione genetico. Attraverso la selezione interattiva fra le texture risultanti, l'utente del sistema può direzionare l'evoluzione simulata della texture.

Vantaggi

Fra i vantaggi dell'utilizzo di texture procedurali[1][5]:

  • Vengono create interamente all'interno del software, pertanto non c'è bisogno di importare alcun riferimento esterno (immagini o altro).
  • Sono seamless, ossia prive di punti di discontinuità visibili (ricoprono l'oggetto in modo uniforme indipendentemente dalla disposizione delle facce).
  • Si adattano alle modifiche della mesh. Ciò significa che se viene effettuata un'operazione booleana tra due mesh, le nuove superfici create saranno sempre caratterizzate dalla texture procedurale.
  • La dimensione di una texture procedurale è di solito misurata in kilobyte, mentre quella di una texture immagine è di solito misurata in megabyte.
  • Una rappresentazione procedurale non ha una risoluzione fissa. In molti casi essa può fornire una texture completamente dettagliata prescindendo da quanto vicino la si sta guardando (non importa quanto sia alta la risoluzione).
  • Una rappresentazione procedurale può essere parametrizzata, quindi può generare una classe di texture relative piuttosto che essere limitata a una texture immagine fissa.

Svantaggi

Fra gli svantaggi dell'utilizzo di texture procedurali[5]:

  • Una texture procedurale può essere difficile da costruire e debuggare. La programmazione è spesso dura, e programmare una descrizione del pattern implicito è specialmente difficile in casi non banali.
  • Una texture procedurale, ovvero il risultato della programmazione, può essere una sorpresa. È spesso più facile prevederlo quando si scansiona o di dipinge una texture immagine.
  • Calcolare una texture procedurale può essere un'operazione più lenta, piuttosto che accedere una texture immagine memorizzata.
  • L'aliasing può essere un problema nelle texture procedurali. L'antialiasing può essere difficoltoso.

Texture sintetizzate[modifica | modifica wikitesto]

Le texture sintetizzate sono delle texture che a differenza delle texture procedurali, vengono generate a partire da un'immagine, attraverso un confronto o un'estensione.

Gli algoritmi di sintesi delle texture sono intesi per creare una immagine di output che rispetti questi requisiti:

  • L'output deve avere la dimensione data dall'utente.
  • L'output deve essere quanto più possibile simile al campione.
  • L'output non deve avere artefatti visibili come discontinutià, blocchi e spigoli non tangenti.
  • L'output non deve essere ripetuto, cioè le stesse strutture nell'immagine di output non devono comparire in più posizioni.

Questi sono i metodi e algoritmi che sono stati oggetto di ricerche e sviluppo per la sintesi delle texture:

Tiling

Il modo più semplice di generare una grande immagine è di piastrellarla. Questo significa che copie multiple del campione sono semplicemente copiate e incollate, fianco a fianco. Il risultato è raramente soddisfacente. Ad eccezione di rari casi, ci saranno discontinuità fra le piastrelle e l'immagine risulterà molto ripetitiva.

Sintesi stocastica

La sintesi stocastica delle texture produce un'immagine attraverso la scelta casuale di valori di colore per ogni pixel, influenzata solamente da parametri di base come la minima luminosità, il colore medio o il massimo contrasto. Questi algoritmi si prestano bene solo con texture stocastiche, altrimenti producono risultati completamente insoddisfacenti in quanto ignorano ogni tipo di struttura all'interno dell'immagine campione.

Sintesi di texture strutturate single purpose

Gli algoritmi di questa famiglia utilizzano un procedura adattata per creare un'immagine di output, ovvero sono limitati a un singolo tipo di texture strutturata. Perciò, questi algoritmi possono essere solo applicati a texture strutturate e solo a texture con una struttura molto simile. Per esempio, un algoritmo single purpose (per unico scopo), potrebbe produrre immagini ad alta qualità di muri di pietra.

Chaos mosaic

Questo metodo, proposto dal gruppo per la grafica web di Microsoft, è un versione rifinita del tiling e si sviluppa nei seguenti tre passaggi:

  1. L'immagine di output è completamente coinvolta nel tiling. Il risultato è un'immagine ripetitiva con discontinuità visibili.
  2. Casualmente, parti selezionate di dimensione casuale del campione, vengono copiate e incollate nell'immagine di output. Il risultato è quindi un'immagine non ripetitiva con discontinuità visibili.
  3. L'immagine di output è filtrata per smussare gli spigoli.

Il risultato è una texture immagine accettabile, che non è troppo ripetitiva e non contiene troppi artefatti. Ma ancora, questo metodo è insoddisfacente perché la smussatura nel passaggio 3 rende l'immagine di output visibilmente sfocata.

Sintesi di texture pixel-based

Questi metodi, utilizzando i campi di Markov[6], il campionamento non-parametrico[7], la quantizzazione di vettori a struttura d'albero[8], e analogie d'immagine[9], sono alcuni degli algoritmi di sintesi di texture più semplici e di successo. Essi tipicamente sintetizzano una texture in un ordine scan-line trovando e copiando pixel dalla più prossima vicinanza locale nella texture sintetizzata. Questi metodi sono molto utili per il completamento del'immagine. Possono essere vincolati, come nelle analogie d'immagine, per eseguire molte attività interessanti. Essi sono tipicamente accelerati con alcune forme di una tecnica di approssimazione del vicino più prossimo, dato che la ricerca esaustiva per il migliore pixel è alquanto lenta. La sintesi può essere anche eseguita in multirisoluzione, come per esempio attraverso l'impiego di un campo casuale di Markov di multiscala non casuale e non parametrica[10].

Sintesi di texture patch-based

La sintesi di texture patch-based crea una nuova texture copiando e cucendo insieme texture a offset vari, similmente all'uso di uno strumento di clonazione per sintetizzare manualmente una texture. Il quilting dell'immagine e il texture graphcut sono i migliori algoritmi conosciuti per la sintesi di texture patch-based. Questi algoritmi tendono a essere più effettivi e veloci dei metodi di sintesi di texture pixel-based.

Animazione del quilting dell'immagine

Chemistry based

Le texture realistiche possono essere generate da simulazioni di complesse reazioni chimiche con fluidi coinvolti, cioè sistemi reazione-diffusione. Si pensa che questi sistemi mostrino comportamenti che sia qualitativamente equivalenti ai processi reali (morfogenesi) riscontrabili in natura, come per esempio le striature di animali (conchiglie, pesci, gatti selvatici...).

Note[modifica | modifica wikitesto]

Bibliografia[modifica | modifica wikitesto]

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Informatica Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica