Texture (grafica)

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search

Il termine texture indica l'alterazione visiva e/o tattile della continuità di una superficie[1], come anche l'insieme delle variazioni cromatiche e morfologiche possedute da qualsiasi materiale presente nella realtà.[2]

Definizione[modifica | modifica wikitesto]

Una "texture" è definita come la qualità visibile e tattile della superficie di un oggetto[3], che sia liscio, rugoso, morbido, o duro, ed è essenzialmente un effetto visivo che aggiunge ricchezza e dimensione a una qualunque composizione.[3] Il termine "texture" deriva dal latino textura, rete, tessitura[4][5]; il primo uso italiano risale al 1985.[6] L'espressione italiana "testura" è poco usata.[1]

Caratteristiche generali[modifica | modifica wikitesto]

Classificazione[modifica | modifica wikitesto]

Per casualità[modifica | modifica wikitesto]

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:[7]

  • Texture regolari – Un esempio di texture strutturata è un muro di pietra o un pavimento con piastrelle.
  • Texture stocastiche – Queste texture si presentano come affette da rumore.
Classi di texture.png

Per tipo[modifica | modifica wikitesto]

Vi sono tre tipi o classificazioni di texture nella comunicazione visiva:[3]

  • Fisica o letterale – Una tactile texture, anche definita come physical o literal texture, è un variazione tattile effettiva della superficie di un oggetto. Per esempio, legno, grano, sabbia, pelo, vetro, cuoio, tela, e metallo, presentano tutti una texture fisica. Questo tipo di texture si differenzia dalla visual texture in quanto possiede una qualità fisica che può essere percepita solo dal tocco umano.
  • Visuale – L'illusione di una texture fisica sulla superficie di un oggetto è identificata come visual texture. Questi effetti illusori possono essere ottenuti attraverso l'uso di elementi progettuali come punti, linee, forme, luci, toni, contrasti e patterns.
  • Implicita – Una implied texture è una texture visuale che non trova alcuna base nella realtà di ogni giorno. È usata spesso in opere astratte.

Cos'è un 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 altre texture, essi appaiono molto più strutturati e richiamano il senso della vista piuttosto che capacità emozionali.[8] 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.[9] 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.[9]

Le texture nella computer grafica 3D[modifica | modifica wikitesto]

Oltre che per la determinazione dei materiali stessi, nella computer grafica 3D le texture sono indispensabili anche per altri scopi:[2]

  • 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 dettaglio di un modello tridimensionale 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).

Storia[modifica | modifica wikitesto]

Cronologia delle idee e degli sviluppi riguardanti le texture nell'ambito della computer grafica 3D:

  • 1974Edwin Catmull introduce il texture mapping[10], seguito nel 1976 da Jim Blinn e Martin Newell.[11] Il texture mapping consiste nel prendere un'immagine bidimensionale che rappresenti la superficie di un oggetto, per poi applicarla (mapparla) a un oggetto tridimensionale generato al computer – similmente a come si applica la carta da parati su un muro spoglio.[12]
  • 1976 – Jim Blinn e Martin Newell introducono l'enviromental mapping.[11][13]
  • 1976 – Nell'ambito delle texture procedurali, Blinn e Newell impiegano la sintesi di Fourier.[14]
  • 1978 – Jim Blinn introduce il bump mapping.[15]
  • 1978 – Fu e Lu propongono una tecnica di generazione delle texture sintattica e grammar-based.[15]
  • 1979-1980 – Schacter e Ahuja impiegano la sintesi di Fourier e modelli stocastici di vario tipo, per generare le texture di simulatori di volo.[14]
  • 1982 e 1984 – Rispettivamente, Fournier, Fussell, Carpenter, e Haruyama, Barsky, propongono di usare metodi di suddivisione stocastica ("frattale") per generare le texture.
  • 1984Robert L. Cook introduce il displacement mapping.[14]
  • 1984 – Cook descrive il sistema shade trees, che è uno dei primi sistemi per cui è conveniente generare texture procedurali durante il rendering. Gli shade trees abilitano l'uso di differenti modelli di shading per ogni superficie oltre che per le sorgenti luminose e 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 calcolo dello shading. Texture a colori e trasparenti, reflection mapping, bump mapping, displacement mapping, e solid texturing, possono essere implementati usando gli shade trees.
  • 1985Ken Perlin, Darwyn Peachey, e Geoffrey Gardner introducono teniche di texturing 3D (solid texturing).[14] Nella seconda metà degli anni Ottanta, tecniche procedurali per creare texture realistiche, come il marmo, legno, pietra e altri materiali naturali, guadagnano popolarità.[14] Una texture procedurale di una superficie marmorea non usa un'immagine scansionata per definire i valori cromatici, ma piuttosto algoritmi e funzioni matematiche.[14]
  • 1985 – Perlin descrive un linguaggio completo di generazione procedurale delle texture e getta le basi per la più popolare classe di texture procedurali in uso oggi, ovvero quelle basate sul noise (rumore), una primitiva della generazione di texture stocastiche.[14]
  • 1986Nelson L. Max introduce l'horizon mapping.[16]
  • 1987 – Reeves, Salesin e Cook presentano un algoritmo per produrre ombre anti-aliased usando una image texture basata su una depth image di una scena renderizzata a partire dalla posizione della fonte luminosa.[14]
  • 1991 – Turk, Witkin e Kass descrivono modelli di sintesi di texture ispirati ai processi biochimici, che producono (fra altri effetti) i pattern di pigmentazione delle pelli degli animali.
  • 1991 – Sims descrive un sistema di sintesi in cui le texture procedurali, rappresentate come espressioni LISP, sono automaticamente modificate e combinate da un sistema di programmazione genetico.[14] Per mezzo di selezioni interattive tra le texture risultanti, l'utente di un sistema può guidare l'evoluzione simulata di una texture verso la direzione voluta.[14]
  • 1995 – Pedersen inventa un modo per permettere all'utente di posizionare liberamente texture patches su una superficie, e al tempo stesso minimizzare la distorsione della mappatura.[14]
  • 1996Venkat Krishnamurthy e Marc Levoy introducono il normal mapping.[17]
  • 2000 – Praun, Finkelstein, e Hoppe introducono le lapped textures, nelle quali molti piccoli campioni della texture sono posizionati su una superficie in modo da sovrapporsi, in accordo a un campo vettoriale definito dall'utente, che guida l'orientamento e la scala dei campioni.[14]
  • 2001 – Turk, Wei e Levoy generano una texture sintetica da dei campioni e "fanno crescere" questa proprio sulla superficie designata, tenendo in considerazione la sua forma e parametrizzazione.[14]

Texture mapping[modifica | modifica wikitesto]

Magnifying glass icon mgx2.svgLo 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]

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

Texture di una grata realizzata in modo procedurale
Vantaggi

Fra i vantaggi dell'utilizzo di texture procedurali:[2][14]

  • 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:[14]

  • 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 pensati 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[18], il campionamento non-parametrico[19], la quantizzazione di vettori a struttura d'albero[20], e analogie d'immagine[21], 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 dell'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[18].

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]

  1. ^ a b (IT) Renato Bruscaglia, Incisione calcografica e stampa originale d'arte. Materiali, procedimenti, segni grafici, 2ª ed., Quattroventi, 1º settembre 1988, ISBN 9788839200297. URL consultato il 4 marzo 2018.
  2. ^ a b c d (IT) Francesco Siddi, Grafica 3D con Blender, Apogeo, 25 giugno 2014, ISBN 9788850333141. URL consultato il 4 marzo 2018.
  3. ^ a b c (EN) Richard Poulin, The Language of Graphic Design: An Illustrated Handbook for Understanding Fundamental Design Principles, Rockport Pub, 8 ottobre 2012, ISBN 9781592538256. URL consultato il 5 marzo 2018.
  4. ^ (EN) Walter William Skeat, A Concise Etymological Dictionary of the English Language, Forgotten Books, 17 ottobre 2017, ISBN 9781333713775. URL consultato il 5 marzo 2018.
  5. ^ (IT) textura in Vocabolario - Treccani, su www.treccani.it. URL consultato il 5 marzo 2018.
  6. ^ (IT) Francesco Sabatini e Vittorio Coletti, Il Sabatini Coletti dizionario della lingua italiana 2008. Con CD-ROM, Rizzoli Larousse, 1º luglio 2007, ISBN 9788852501739. URL consultato il 4 marzo 2018.
  7. ^ (EN) Near-Regular Texture Analysis and Manipulation, su graphics.cs.cmu.edu. URL consultato il 4 marzo 2018.
  8. ^ TastyTuts, ‘Texture’ Visual element of Graphic Design Ep5/45 [Beginners guide to Graphic Design], 18 febbraio 2016. URL consultato il 5 marzo 2018.
  9. ^ a b (IT) Giuseppe Gallo, Pattern per comunicare in grafica e architettura – i nostri poster ispirati al lavoro dello studio mecanoo. URL consultato il 5 marzo 2018.
  10. ^ Edwin Earl Catmull, A subdivision algorithm for computer display of curved surfaces., 1º gennaio 1974. URL consultato il 5 marzo 2018.
  11. ^ a b James F. Blinn e Martin E. Newell, Texture and reflection in computer generated images, in Communications of the ACM, vol. 19, nº 10, 1º ottobre 1976, pp. 542–547, DOI:10.1145/360349.360353. URL consultato il 5 marzo 2018.
  12. ^ (EN) Mike Morrison, Becoming a Computer Animator, Pap/Cdr edition, Sams Publishing, 1994, ISBN 9780672304637. URL consultato il 5 marzo 2018.
  13. ^ Reflection Mapping History, su www.pauldebevec.com. URL consultato il 5 marzo 2018.
  14. ^ a b c d e f g h i j k l m n o (EN) David S. Ebert, F. Kenton Musgrave e Darwyn Peachey, Texturing and Modeling, Third Edition: A Procedural Approach, 3ª ed., Morgan Kaufmann, 16 dicembre 2002, ISBN 9781558608481. URL consultato il 5 marzo 2018.
  15. ^ a b James F. Blinn e James F. Blinn, Simulation of wrinkled surfaces, Simulation of wrinkled surfaces, in ACM SIGGRAPH Computer Graphics, vol. 12, nº 3, 23 agosto 1978, pp. 286, 286–292, 292, DOI:10.1145/800248.507101, 10.1145/965139.507101. URL consultato il 5 marzo 2018.
  16. ^ (EN) Nelson L. Max, Advanced Computer Graphics, Springer, Tokyo, 1986, pp. 145–156, DOI:10.1007/978-4-431-68036-9_10, ISBN 9784431680383. URL consultato il 5 marzo 2018.
  17. ^ Fitting Smooth Surfaces to Dense Polygon Meshes, su www.graphics.stanford.edu. URL consultato il 5 marzo 2018.
  18. ^ a b Semi Causal Nonparametric Markov Random Field Texture Synthesis, su www.texturesynthesis.com. URL consultato il 5 marzo 2018.
  19. ^ Efros and Leung Texture Synthesis, su graphics.cs.cmu.edu. URL consultato il 5 marzo 2018.
  20. ^ Fast Texture Synthesis using Tree-structured Vector Quantization, su graphics.stanford.edu. URL consultato il 5 marzo 2018.
  21. ^ NYU Media Research Lab | Projects | Image Analogies, su mrl.nyu.edu. URL consultato il 5 marzo 2018.

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