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 2016/17
3D Rendering
Scena 3D rendering image
3D Model
A mathematical representation of a 3D object
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Geometry of a 3D object
• 3D model is a mathematical representation of a physical (or a fictional) entity
• Representation methods can be divided 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
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Most common boundary based model:
Polygonal Mesh (mesh poligonali)
Superficie approssimata da un numero di poligoni adiacienti lato a lato.
Categorie, in base ai poligoni usati:
• (tutti) triangoli:
“tri-mesh” , “triangle mesh” “simplicial mesh”
• (tutti) quarilateri: “quad mesh”, “pure quad mesh”
• quasi tutti quads: “quad-dominant”,
• poligoni misti qualunque: “(Generic) Polygonal mesh”…
• 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 )
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Mesh triangolari VS mesh di quad:
qual’è lo standard?
• In molti contesti (es modellazione manuale) sono popolari le quad mesh (o quad-dominant)
• Per il rendering, l’unica primitiva di rasterizzazione per le mesh è il triangolo
– nota: le facce triangolari in 3D sono necessariamente planari, semplici da rasterizzare.
Non così per gli altri poligoni!
– Quindi, Tri-mesh sono le più adatte al rendering
• Gli altri poligoni vengono scomposti in triangoli
– Tipicamente al livello dell’ API
– Es: le specifiche OpenGL prevedono i quad
– Ma le implementazioni OpenGL trattano i quad come
coppie di triangoli
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Quad meshes or Triangle meshes?
un quadrilatero?
"quad" “diagonal split”
due triangoli!
(se ne occupa
automaticametne la API)
Polygonal meshes or triangle meshes?
un poligono a n lati?
triangolarizzazione di poligono:
(in 3D, non un problema del tutto banale...)
(n-2) triangoli!
Mesh di poligonale
• Tri-mesh: 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
• in una tri mesh: i triangoli
– attributi
• es: colore, materiali, normali, UV, …
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Mesh: geometria
• Insieme di posizioni dei vertici
– Un vettore posizione (x,y,z) per ogni vertice – (Spazio Oggetto)
V2
V3
V5 V4
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
V5 V4
V1
T1
T2 T3
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
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
• Modellano le quantità che variano sulla superficie
– qualsiasi valore vada definito su tutti i punti della sup – Valori che sono “Spacially varying” sulla mesh
• Memorizzati:
– per vertice MOST COMMON CASE
• come definire il valore in tutti i gli altri punti della sup?
INTERPOLAZIONE LINEARE (vedremo)
– per faccia
• allora il valori vengono considerati constanti su quel poligono
– altri modi meno comuni:
per insieme di facce, per ogni edge, etc.
• Possono essere: scalari, vettori…
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Mesh: attributi
• Modellano le quantità che variano sulla superficie
• Esempi:
– 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)
• Etc. … es: «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”)
Attributo per vertice. Nota sul termine.
• Per le API basate su rasterizzazione (OpenGL, DirectX…) “attributo” viene interpretato un senso più restrittivo
– «attribute» = variabile specificata necessariamente per ogni vertice
– anche la posizione del vertice (x,y,z) (in spazio oggetto!) è considerata un attributo
– gli attributi sono, in generale, l’input fornito al vertex shader per ogni vertice
– (l’output fornito dal vertex shader per ogni vertice è invece detto «varying»: vedremo)
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Mesh Polionali: risoluzione
• Risoluzione:
il numero di facce (o di vertici) che compongono la mesh
– Hi-res: più accuratezza – Low-res: più efficienza – Mesh low res:
detta anche low-poly mesh
– La risoluzione di una mesh può essere adattiva:
tassellamento più fine (campionamento più fitto) dove necessario
• Per es, dove la curvatura della mesh è alta Dove la mesh è piatta, bastano meno triangoli
• Per paragone: la risoluzione di una immagine rasterizzata non è adattiva (rate costante di num pixel per unità di superficie)
num facce lineare con num vertici. Statisticamente:
num facce ~= 2 x num vertici
Risoluzione tipica: crescente negli anni
70.000 △
1994
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
Risoluzione tipica: crescente negli anni
1.200.000 △
1997
Risoluzione tipica: crescente negli anni
2.000.000.000 △
2002
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a
3D Meshes: resolution
p e r f o r m a n c e
q u a l i t y
3D Meshes: adaptive resolution
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 6 / 1 7 ‧ U n i v e r s i t à d e l l ’ I n s u b r i a