Texture maps assets e Mesh assets Non necessariamente 1:1 1:N -- vari texture «sheets» associati ad una mesh N:1 -- più meshes sullo stesso sheet (bene) esempio di struttura per : ogni mesh associata a un materiale ogni materiale: 1 sheet di diffuse-map 1 sheet bumpmap (se serve) 1 sheet di alphamap (se serve) 1 vertex + fragment shader vari parametri (es, shininess, ) se parti diverse di mesh associate a tessiture diverse: scomporre oggetto in sottomesh Notazione di spazio texture es: 512 texels t 1.0 Texture Space (o "spazio parametrico" o "spazio s-t" o "spazio u-v") Texture 2D 1.0 s es: 1024 texels texel Texture space = [0,1] x [0,1] Marco Tarini - 2014 1
Due notazioni più diffusa (in game industry) s-t (es OpenGL) u-v (es DirectX) t (0,0) 1.0 1.0 u (0,0) 1.0 s 1.0 v Task di modellazione: u-v mapping ( u-v == s-t ) Assegnare una coppia di coordinate texutres ad ogni vertice della mesh In preprocessing t t s s Marco Tarini - 2014 2
Task di modellazione: u-v mapping ( u-v == s-t ) fatto a mano, oppure automatizzato Texture atlas (composto di vari charts ) Task di modellazione: u-v mapping ( u-v == s-t ) strategie pratiche: 1. selezionare edge di taglio o 1. assegnare facce a charts decidere dove sono i texture seams 2. unfolding minimizzare distorsione 3. packing dei charts minimizzare spazi vuoti assegnare aree secondo necessita (es, parti importanti maggiore spazio tessitura) Marco Tarini - 2014 3
Tileable Textures B A A B Tileable textures Marco Tarini - 2014 4
Tileable textures Tipico utilizzo: Molto efficiente in spazio! RGB maps: come si ottengono Image first, then UV-mapping e.g. immagine da fotografie e.g. tileable images / 2D painter / UV-mapper 3D modeller Marco Tarini - 2014 5
Texture maps come assets Vari texture «sheets» associati ad una mesh o anche: più meshes sullo stesso sheet (bene) tipica struttura dati: mesh divisa in sottomesh ogni sottomesh associata a un materiale ogni materiale: 1 sheet di diffuse-map 1 sheet bumpmap (se serve) 1 sheet di alphamap (se serve) 1 vertex + fragment shader vari parametri (es, shininess, ) RGB maps: come si ottengono Image first, then UV-mapping e.g. immagine da fotografie e.g. tileable images UV-mapper UV-mapping first, then paint 2D paint with 2D app (e.g. photoshop) UV-mapping first, then paint 3D paint within 3D modelling software, or: 1. export 2D rendering, 2. paint over with e.g. photoshop, 3. reimport images 4. goto 1 UV-mapper UV-mapper 2D painter 3D painter Marco Tarini - 2014 6
RGB maps: come si ottengono or: first Paint 3D on hi-res model, paint on vertex attributes e.g. with Z bursh then coarsen build / autobuild final low-poly version then UV-map the low-poly model must be a 1:1 mapping! then auto-texture auto build texture more about this later Alpha mapping (texels = lvl trasparenza) Alpha map RGB map Marco Tarini - 2014 7
Alpha mapping (texels = lvl trasparenza) es: drappi, barba... tessitura by Micheal M a r c o T a r i n i C o m Filipowski p u t e r G r a p h i c s 2 2004 0 1 1 / 1 2 U n i v e r s i t à d e l l I n s u b r i a Texture mapping e Alpha Test es: alberi, foliage Marco Tarini - 2014 8
Texture mapping e Alpha Test Es: pelo, pellicce tessitura (ripetuta) M a r c o T a r i n i C o m p u t e r G r a p h i c s 2 0 1 1 / 1 2 U n i v e r s i t à d e l l I n s u b r i a Bump-Mapping (see demo) stessa geometria (una sfera) bumpmaps diverse Marco Tarini - 2014 9
Bump maps: Categorie Bump maps Normal maps Displacement maps Object Space Tangent Space Scalar Vector Bump maps: Categorie Bump map: qualunque tessitura che codifica dettagli hi-freq ( meso-struttura ) su una sup low-res Normal Map: Dettagli codificati memorizzando le normali della sup hi-freq Modificano il lighting In quale spazio (in che base vettoriale)? Tangent Space: (spazio TBN) Riutilizzabili su più superfici indipendentemente dall oreintamento Richiede direzioni Tangenti-Bitangenti (e normali) def su superifcie Object Space: Solo per UV-mapping 1:1 Displacement Map Dettagli codificati memorizzando le differenze fra low-res e hi-freq Come vettori, oppure come scalari (distanza lungo la normale) caso più comune, di bump map Usati per re-tasselation, o per effetto parallasse (parallax mapping) Marco Tarini - 2014 10
Normal maps Memorizzati come immagini RGB => XYZ (come?) caratteristico colore RGB (0.5,0.5,1) - (128,128,255) (Tangent Space) Normal maps Espressi in spazio tangente Memorizzare direzioni tangenti Tangente e Bi-tangente Nuovi attributi x vertice! Computati automaticamente a partire da UV mapping (come?) Marco Tarini - 2014 11
Normal maps Come si ottengono (1/3): 2D texture painter Filtro (e.g. photoshop) Displacement map come grayscale = estruso - in fuori Normal map = profondo - incassato Normal maps Come si ottengono (2/3): Photometric Stereo da: N immagini (N>=4) reali Stesso punto di vista Illuminazione diversa (e possibilmente controllata e nota) a Normal Map Marco Tarini - 2014 12
Normal maps Come si ottengono (3/3): Detail recovery da: a: 1) mesh Hi-Res 2) mesh Low-res + UV mapping (senza ripetizioni) Normal map per 2 (che mimica il dettaglio presente in 1) More about this later Normal maps Come si ottengono (bonus): Proceduralmente Marco Tarini - 2014 13
Semplificazione automatica aka. poly reduction Strategie completamente diverse Approcci iterativi repeat compi l'azione di semplificazione atomica meno costosa (in termini di errore aggiunto) aggiorna costi until (obiettivo raggiunto) es: numero faccie, errore remove vertex edge collapse remove face Semplificazione automatica Strategie completamente diverse Vertex clustering: dividi i vertici originali in una griglia regolare "collassa" in un solo vertice tutti quelli nella stessa casella togli i triangoli che hanno solo 1 o 2 vertici diversi Approssimazione dipende da dimensione griglia M a r c o T a r i n i [ G A M E - D E V ] V e r o n a 2 0 1 3 Marco Tarini - 2014 14
Semplificazione automatica Simplificazione ad edge collapse (adattva) 215k faces Semplificazione a clustering (non adattiva) 235k faces M a r c o T a r i n i [ G A M E - D E V ] V e r o n a 2 0 1 3 Semplificazione automatica Strategie completamente diverse Fitting di piani sostituire molte facce con poligoni planari quando i loro vertici sono quasi coplanari Cohen-Steiner, Alliez, Desbrun (SIGGR04) Marco Tarini - 2014 15
Detail preservation / recovery (o "texture for geometry") Idea: data una mesh A low res, uv-mapped una mesh B hir res sintetizzare una tessitura per A per ripristinare il dettaglio hi-freq presente in B es: A ottenuto da B tramite semplificazione automatica 500mila triangoli detail recover TESSITURA fatta apposta (es. BumpMap normali o RGB map x colori) semplificazione automatica 2mila triangoli rendering M a r c o T a r i n i [ G A M E - D E V ] V e r o n a 2 0 1 3 sempre duemila triangoli, ma con texture mapping Marco Tarini - 2014 16
originale M a r c o T a r i n i [ G A M E - D E V ] V e r o n a 2 0 1 3 500K triangles semplificato simplificato ma con tessitura 2K triangles Detail Recovery: how to Low-res model Hi-res model v Texture map find a suitable spot u e.g.: color, precomputed shading, normal... Some attribute Code & Store Marco Tarini - 2014 17
Esempio Esempio Marco Tarini - 2014 18
esempi da cg-talks CG society esempi da cg-talks CG society Marco Tarini - 2014 19
esempi da cg-talks CG society Mesh: task tipici nella game industry Poly reduction / Retopology e.g. LOD construction Light baking Precomputazione Luce e.g.: Ambient Occlusion U-V mapping parametrizzazione Texturing creazione tessiture di vario tipo Rigging / Skinning / Animation more about this next time Marco Tarini - 2014 20
Una classe di tool utili: attribute transfer Attribute transfer Da mesh A a mesh B Retargeting di: Animazioni, UV-mapping, tessiture, Solid textures Marco Tarini - 2014 21
Solid Textures Tessitura volumetrica voxelizzata 1 texel == 1 voxel E.g. ogni voxel un colore RGB solid RGB textures Come tutte le tessiture: In video RAM Accesso veloce durante rendering MIP mapping, filtering in accesso Modellano colore di tutto il volume superficie + interno utile, per es, per fratture Nota: nessun bisogno di UV-mapping! tessitura indicizzata con geometria mesh Solito problema: spazio ram Cubico con risoluzione Soluz: tessiture procedurali? Marco Tarini - 2014 22