Computer Graphics
Marco Tarini
Digital representation of 3D objects
Università dell’Insubria
Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2014/15
3D Rendering
Scena 3D
renderingimage
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)
3D models : Structure
• Volume Based • Boundary-based
3D models categorization:
Origin
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
applicazione interattiva informazione
construction
MODEL 3D the scene of
Images
rendering
preprocessing modelling
3D models categorization:
Origin
• (Manual) Modelling • Digitalization (3D Acquisition)
Dino, scanned by artec3d
Modeling and Procedural modeling
• (manual) Modeling:
– models are created by an artist – task of the “3D modellers”
– asset creation for game industry
• using specialized 3D modeling software
– Maya, Softimage, 3D Studio MAX, Rhinoceros, Blender, Zbrush… or others.
Modelling paradigms: Low poly modelling
1 2 3 4 5 6 7 8
9 10 11 12 13 14 17 18
19 20
21 22
23 24
25 26 27 28 29 30 31
…
Model modelling: Digital Sculpting
cisel (scalpello)
Capture of 3D Models
• 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)
Capture of 3D Models: touch scanners
Capture of 3D Models: range scanners
• Tecnologie per ottenere:
modelli digitali 3D a partire da:
oggetti reali
3D scanning
Modelli 3D:
come ottenerli
• Attraverso 3D scanning
Modello reale Scultore
(fisico) Hi res model
3D scanning
3D models categorization:
Origin
• Procedural Modelling • Simulation
I Modelli 3D più comuni:
Mesh poligonali
• Di triangoli, o mista (quadrilateri + triangoli)
• Struttura dati per modellare oggetti 3D
– GPU friendly
– Risoluzione (potenzialmente) adattiva – “Complessità” = numero facce
Mesh triangolare (o mesh simpliciale)
• Un insieme di triangoli adiacenti
facce
vertici
spigoli (o edges)
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)
V2
V3 V1
Mesh: connettività
(o topologia)• Triangoli (o quads, o edges…)
– che connettono fra loro i vertici
– Come nodi connessi da archi, in un grafo
V2
V3 V1
T1
T2 T3
Mesh: attributi
• Quantità che variano sulla superficie
– Campionati per vertice, interpolati nei poly
V2
V3
V5 V4
V1
T1
T2 T3
RGB3 RGB2
RGB5 RGB4
RGB1
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
70.000 △
1994
Meshes: complessità crescente
1.200.000 △
1997
Meshes: complessità crescente
2.000.000.000 △
2002
Low Poly Meshes Come rappresento una mesh?
(quali strutture dati)
• Una tri-mesh è un insieme di triangoli adiacenti
• Mododiretto:
– 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
Come rappresento una mesh?
(quali strutture dati)
• Modoindexed:
– 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 indicia vertice
Come rappresento una mesh?
(quali strutture dati)
• indexed mesh
V2
V3
V5 V4
V1
T1
T2 T3
Tri: Wedge 1: Wedge
2: Wedge 3:
T1 V4 V1 V2
T2 V4 V2 V5
T3 V5 V2 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
CONNETTIVITA’
LetteraL.off
Esempio di mesh indexed:
guardiamo dentro un file in formato OFF1 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 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
# vertici
# facce# edges
x,y,z 2ndo vert
prima faccia:
4vertici:
con indici 3, 2, 1 e 0 indice 0
indice 3 indice 2 indice 1
Come rappresento una mesh?
(quali strutture dati)
• Modoindexedin C++ :
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’ */
};