Texture maps assets e Mesh assets Notazione di spazio texture
Transcript
Texture maps assets e Mesh assets Notazione di spazio texture
Game Engines - Texture Assets - part2 22/11/2014 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 t es: 512 texels 1.0 Texture Space (o "spazio parametrico" o "spazio s-t" o "spazio u-v") Texture 2D 1.0 s es: 1024 texels texel Marco Tarini - 2014 Texture space = [0,1] x [0,1] 1 Game Engines - Texture Assets - part2 22/11/2014 Due notazioni più diffusa (in game industry) u-v (es DirectX) s-t (es OpenGL) t 1.0 (0,0) 1.0 (0,0) 1.0 u 1.0 s 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 Marco Tarini - 2014 s 2 Game Engines - Texture Assets - part2 22/11/2014 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 Game Engines - Texture Assets - part2 22/11/2014 Tileable Textures B A A B Tileable textures Marco Tarini - 2014 4 Game Engines - Texture Assets - part2 22/11/2014 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 Game Engines - Texture Assets - part2 22/11/2014 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-mapper 2D painter UV-mapper 3D painter 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 Marco Tarini - 2014 6 Game Engines - Texture Assets - part2 22/11/2014 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 Game Engines - Texture Assets - part2 22/11/2014 Alpha mapping (texels = lvl trasparenza) es: drappi, barba... tessitura by Micheal Marco Filipowskip u t e r 2004 Tarini ‧ Com Graphics ‧ 2 011/12 ‧ Universit à dell’Insubria Texture mapping e Alpha Test es: alberi, foliage Marco Tarini - 2014 8 Game Engines - Texture Assets - part2 22/11/2014 Texture mapping e Alpha Test Es: pelo, pellicce tessitura (ripetuta) Marco Tarini ‧ Com puter Graphics ‧ 2 011/12 ‧ Universit à dell’Insubria Bump-Mapping (see demo) stessa geometria (una sfera) bumpmaps diverse Marco Tarini - 2014 9 Game Engines - Texture Assets - part2 22/11/2014 Bump maps: Categorie Bump maps Normal maps Object Space Displacement maps 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: caso più comune, di “bump 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) Usati per re-tasselation, o per effetto parallasse (parallax mapping) Marco Tarini - 2014 10 Game Engines - Texture Assets - part2 22/11/2014 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 Game Engines - Texture Assets - part2 22/11/2014 Normal maps Come si ottengono (1/3): Filtro (e.g. photoshop) 2D texture painter 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 Game Engines - Texture Assets - part2 22/11/2014 Normal maps Come si ottengono (3/3): Detail recovery da: 1) mesh Hi-Res 2) mesh Low-res + UV mapping (senza ripetizioni) a: 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 Game Engines - Texture Assets - part2 22/11/2014 Semplificazione automatica aka. “poly reduction” Strategie completamente diverse Approcci iterativi remove vertex repeat compi l'azione di semplificazione atomica meno costosa (in termini di errore aggiunto) aggiorna costi edge collapse until (obiettivo raggiunto) es: numero faccie, errore 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 Marco Tarini ‧ [GAME -DEV] ‧ Verona ‧ 2013 Marco Tarini - 2014 14 Game Engines - Texture Assets - part2 22/11/2014 Semplificazione automatica Semplificazione a clustering Simplificazione ad edge collapse (adattva) 215k faces (non adattiva) 235k faces Marco Tarini ‧ [GAME -DEV] ‧ Verona ‧ 2013 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 Game Engines - Texture Assets - part2 22/11/2014 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 TESSITURA fatta apposta detail recover (es. BumpMap normali o RGB map x colori) semplificazione automatica 2mila triangoli rendering Marco Tarini ‧ [GAME -DEV] ‧ Verona ‧ 2013 Marco Tarini - 2014 sempre duemila triangoli, ma con texture mapping 16 Game Engines - Texture Assets - part2 22/11/2014 originale semplificato simplificato ma con tessitura 500K triangles 2K 2Ktriangles triangles Marco Tarini ‧ [GAME -DEV] ‧ Verona ‧ 2013 Detail Recovery: how to Low-res model Hi-res model v Texture map find a suitable spot u e.g.: color, precomputed shading, normal... Marco Tarini - 2014 Some attribute Code & Store 17 Game Engines - Texture Assets - part2 22/11/2014 Esempio Esempio Marco Tarini - 2014 18 Game Engines - Texture Assets - part2 22/11/2014 esempi da cg-talks – CG society esempi da cg-talks – CG society Marco Tarini - 2014 19 22/11/2014 esempi da cg-talks – CG society Game Engines - Texture Assets - part2 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 Game Engines - Texture Assets - part2 22/11/2014 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 Game Engines - Texture Assets - part2 22/11/2014 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