Computer Graphics 3D Rendering Università dell Insubria Digital representation of 3D objects Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2014/15 Scena 3D rendering image Marco Tarini 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 4 / 1 5 U n i v e r s i t à d e l l I n s u b r i a 3D Model A mathematical representation of a 3D object Geometry of a 3D object 3D model is a mathematical representation of a physical (or a fictional) entity Representation methods can be divide into: Boundary-based: Only the boundary of the object is explicitly represented. Called b-rep, examples are polygon-meshes, implicit surfaces and parametric surfaces. Volume-based: The volume is explicitly represented, examples are Voxels and Constructive Solid Geometry (CSG) 1
3D models : Structure 3D models categorization: Origin Volume Based Boundary-based informazione construction MODEL 3D of the scene rendering preprocessing modelling Images applicazione interattiva 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 2 / 1 3 U n i v e r s i t à d e l l I n s u b r i a 3D models categorization: Origin Modeling and Procedural modeling (Manual) Modelling Digitalization (3D Acquisition) (manual) Modeling: models are created by an artist task of the 3D modellers asset creation for game industry Dino, scanned by artec3d using specialized 3D modeling software Maya, Softimage, 3D Studio MAX, Rhinoceros, Blender, Zbrush or others. 2
Modelling paradigms: Low poly modelling Model modelling: Digital Sculpting 1 2 3 4 5 6 7 8 9 10 11 12 13 14 17 18 cisel (scalpello) 19 20 21 22 23 24 25 26 27 28 29 30 31 Capture of 3D Models Capture of 3D Models: touch scanners 3D scanning A.k.a. automatic 3D model acquisition Molte tecnologie diverse Laser scanners Time of flight Structured light (kinect) Caratteristiche diverse Qualità risultati Rumore / risoluzione Automatismo Invasività Markers? Powder? Real time? (kinect) Costo Dimensione massima oggetti (full body scanner?) Old School: touch scanners 3
Capture of 3D Models: range scanners Tecnologie per ottenere: modelli digitali 3D a partire da: oggetti reali Modelli 3D: come ottenerli Attraverso 3D scanning 3D scanning Scultore (fisico) Modello reale 3D scanning Hi res model 3D models categorization: Origin I Modelli 3D più comuni: Mesh poligonali Procedural Modelling Simulation Di triangoli, o mista (quadrilateri + triangoli) Struttura dati per modellare oggetti 3D GPU friendly Risoluzione (potenzialmente) adattiva Complessità = numero facce 4
Mesh triangolare (o mesh simpliciale) Un insieme di triangoli adiacenti facce spigoli (o edges) vertici Mesh di triangoli discretizzazione lineare a tratti di una superfice continua (un 2 manifold ) immersa in R3 Componenti: geometria i vertici, ciascuno con pos (x,y,z) un campionamento della superficie! connettività (a volte: topologia ) come sono connessi i vertici (es.: in una tri-mesh, i triangoli) attributi es: colore, materiali, normali, UV, Mesh: geometria Insieme di posizioni dei vertici Un vettore posizione (x,y,z) per ogni vertice (Spazio Oggetto) Mesh: connettività (o topologia) Triangoli (o quads, o edges ) che connettono fra loro i vertici Come nodi connessi da archi, in un grafo V1 V2 V1 V2 V3 T1 T2 T3 V3 V4 V4 V5 V5 5
Mesh: attributi Quantità che variano sulla superficie Campionati per vertice, interpolati nei poly RGB1 RGB2 V1 V2 V4 T1 RGB4 T2 V5 T3 RGB5 V3 RGB3 Mesh: attributi Quantità che variano sulla superficie qualsiasi valore vada definito su tutti i punti della sup Memorizzati: per vertice MOST COMMON come definire il valore in tutti i gli altri punti della sup? INTERPOLAZIONE LINEARE per faccia allora il valori constanti su quel triangolo Possono essere: scalari, vettori Mesh: attributi Quantità che variano sulla superficie Per esempio: Colore es come RGB, HSL Vettore «Normale» quale orientamento ha la superficie in quel punto? Le cose più varie, dipendenti dall applicazione: temperatura, viscosità, robustezza (in una simulazione fisica per es) bho, <<coefficiente di vulnerabilità>> (per dire, in un gioco) Altre cose che servono a specifici algoritmi di rendering: (ne vedremo alcune) Coordinate tessitura ( uv mapping ) Direzioni tangenti Bone assignment ( rigging ) Meshes: complessità crescente 1994 70.000 6
Meshes: complessità crescente Meshes: complessità crescente 1997 1.200.000 2002 2.000.000.000 Low Poly Meshes Come rappresento una mesh? (quali strutture dati) Una tri-mesh è un insieme di triangoli adiacenti Modo diretto: un vettore di triangoli e per ogni triangolo tre vertici e per ogni vertice tre coordinate Ma: replicazione dati poco efficiente in spazio oneroso fare updates 7
Come rappresento una mesh? (quali strutture dati) Modo indexed: Geometria: array di vertici in ogni vertice, posizione e attributi Attributi: coi vertici (e.g. campi della classe vertice ) Connettività: (a volte anche: topologia ) Array di triangoli Per ogni triangolo: tripletta di indici a vertice Come rappresento una mesh? (quali strutture dati) indexed mesh V1 V4 T1 T2 V2 V5 T3 V3 vert X Y Z R G B V1 x1 y1 z1 r1 g1 b1 V2 x2 y2 z2 r2 g2 b2 V3 x3 y3 z3 r3 g3 b3 V4 x4 y4 z4 r4 g4 b4 V5 x5 y5 z5 r5 g5 b5 GEOMETRIA + ATTRIBUTI Tri: Wedge 1: Wedge 2: Wedge 3: T1 V4 V1 V2 T2 V4 V2 V5 T3 V5 V2 V3 CONNETTIVITA Esempio di mesh indexed: guardiamo dentro un file in formato OFF Come rappresento una mesh? (quali strutture dati) Modo indexed in C++ : # vertici x,y,z 2ndo vert # facce# edges OFF 12 10 40 0 0 0 3 0 0 3 1 0 1 1 0 1 5 0 0 5 0 0 0 1 3 0 1 3 1 1 1 1 1 indice 0 indice 1 indice 2 indice 3 1 5 1 0 5 1 4 3 2 1 0 4 5 4 3 0 4 6 7 8 9 4 6 9 10 11 4 0 1 7 6 4 1 2 8 7 4 2 3 9 8 4 3 4 10 9 4 4 5 11 10 4 5 0 6 11 LetteraL.off prima faccia: 4 vertici: con indici 3, 2, 1 e 0 class Vertex { vec3 pos; rgb color; /* attribute 1 */ vec3 normal; /* attribute 2 */ }; class Face{ int vertexindex[3]; }; class Mesh{ vector<vertex> vert; /* geom + attr */ vector<face> tris; /* connettivita */ }; 8