Computer Graphics

Transcript

Computer Graphics
Computer Graphics
Lezione 10:
meshes
Mesh triangolare (o mesh simpliciale)
• Un insieme di triangoli adiacenti
facce
Università dell’Insubria
vertici
Facoltà di Scienze MFN di Varese
Corso di Laurea in Informatica
Anno Accademico 2010/11
Marco Tarini
spigoli
(o edges)
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
Altre mesh
Caratteristiche topologiche di una mesh
• Mesh bidimensionali
• Two Manifold ("varietà due") oppure no
– Mesh di triangoli (o tri-mesh, o simpliciali)
– Mesh di quadrilateri (o quad-mesh)
– Mesh miste (quad e tri)
– in generale: two-manifold = localmente è una superficie
– per le mesh:
two-manifold = ogni edge condiviso da max 2 faccie
• Spesso, mesh prevalemtemente di quads (quad-dominant )
• two manifold = bene
• non two manifold = male
• (molti algoritmi su mesh necessitano che sia two-manifold)
– Mesh di poligoni
• Mesh volumetriche
NO
– Mesh tetraedrali (o simpliciali 3D)
– ...
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
Marco Tarini ‧ Computer Graphics
SI
‧ 2010/11 ‧ Università dell’Insubria
Caratteristiche topologiche di una mesh
Caratteristiche topologiche di una mesh
• Chiusa o aperta
• Orientabile, non orientabile
– se chiusa, ogni edge condiviso da 2 faccie
– se aperta, alcuni edge sono di bordo
– è possibile assegnare un orientamento ad ogni
faccia coerentemente?
– orientabile = normali coerenti!
A
1
D
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
1
3
2 3
2
C
senso opposto, edge coerente
Marco Tarini ‧ Computer Graphics
B
‧ 2010/11 ‧ Università dell’Insubria
Caratteristiche topologiche di una mesh
Come definisco una mesh?
• Orientabile, non orientabile
• Una mesh è un insieme di triangoli adiacenti
• Strutture dati?
• Modo diretto:
– esempi di mesh non orientabili:
• mesh non two-manifold
• e...
– un vettore di triangoli
– e per ogni triangolo tre vertici
– e per ogni vertice tre coordinate
Nastro di Moebius
Bottiglia di Klein
(non orientabile, aperta)
Marco Tarini ‧ Computer Graphics
(non orientabile, chiusa)
‧ 2010/11 ‧ Università dell’Insubria
Come definisco una mesh?
• Ma: replicazione dati
– poco efficiente in spazio
– oneroso fare updates
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
E gli attributi?
• Modo indexed
• Tipicamente definiti:
– Lista ordinata di vertici
– per vertice
• per ogni vertice, la posizione
• un attributo nella struttura di ogni vertice
– Lista ordinata di facce
– per faccia
• per ogni faccia, 3 indici di vertici
• un attributo nella struttura di ogni faccia
– Se serve: lista ordinata di edges
– per wedge (vertice di faccia)
• per ogni edge, 2 indici ai vertici
• tre attributi nella struttura di ogni faccia (caso più generico!)
– per edge (raro)
• Attributi più comuni:
– colore
– coordinate texture
– normali...
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
Formati files per mesh
3DS - 3D Studio Max file format
MA, MB – Maya file format
3DX – Rinoceros file format
BLEND – Blender file format
DAE – Collada file format
OBJ –Another file format for 3D objects
X – Direct X object
BYU - Movie BYU file format
DEM - Digital Elevation Models
DXF – (exchange format used by Autodesk's AutoCAD)
FIG - Used by REND386/AVRIL
FLT - MulitGen Inc.'s OpenFlight format
HDF - Hierarchical Data Format
IGES - Initial Graphics Exchange Specification
IV - Open Inventor File Format Info
LWO, LWB & LWS - Lightwave 3D file formats
MAZ - Used by Division's dVS/dVISE
MGF - Materials and Geometry Format
MSDL - Manchester Scene Description Language
3DML – by Flatland inc.
C4D – Cinema 4D file format
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
Esempio di file format : formato PLY
(una Torre di Babele!)
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
Marco Tarini ‧ Computer Graphics
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
SLDPTR – SolidWork "part"
WINGS – Wings3D object
NFF - Used by Sense8's WorldToolKit
OBJ - Wavefront Object Files
OFF - A general 3D mesh Object File Format
OOGL - Object Oriented Graphics Library
PLG - Used by REND386/AVRIL
POV - Persistence of Vision ray-tracer
QD3D - Apple's QuickDraw 3D Metafile format
TDDD - for Imagine & Turbo Silver ray-tracers
NFF & ENFF - (Extended) Neutral File Format
VIZ - Used by Division's dVS/dVISE
VRML - Virtual Reality Modeling Language
VRML97 - ISO Specification di VRML
X3D – successore di VRML
PLY – Used by Cyberware
DICOM – Dalla casa omonima
Renderman – per l'omonimo visualizzatore
RWX – RenderWare Object
Z3D – ZModeler File format
– etc, etc, etc...
‧ 2010/11 ‧ Università dell’Insubria
• E' un formato digitale per mesh superficiali
• Può essere in binario, o in ASCII (testo)
– binario: più compatto e veloce da leggere
– ascii: direttamente leggibile con un editore di testo
• In ogni caso, comincia con un header in ASCII
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
Esempio di file format : formato PLY
Esempio di file format : formato OFF
• Esempio:
• Esempio:
cubo.ply
# facce # edges
ply
format ascii 1.0
comment proprio un cubetto
element vertex 8
# vertici
x,y,z
2ndo
vert
property float x
property float y
property float z
element face 12
property list uchar int vertex_indices
end_header
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
LetteraL.off
1
0
4
4
4
4
4
4
4
4
4
4
5
5
3
5
6
6
0
1
2
3
4
5
1
1
2
4
7
9
1
2
3
4
5
0
1 0
3 0
8 9
10 11
7 6
8 7
9 8
10 9
11 10
6 11
prima faccia:
4 vertici:
con indici
3, 2, 1 e 0
<dati...>
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
Marco Tarini ‧ Computer Graphics
Mesh editing: applicativi
Mesh editing: librerie
•
3D Studio Max (autodesk) , Maya (alias) , Cinema4D (maxon)
• VCG-Lib (CNR, it)
•
Blender
•
AutoCAD (autodesk), SolidWorks (SolidThinking)
•
ZBrush (pixologic) , Mudbox (autodesk)
•
Wings3D
–
–
–
–
–
generici, potenti, completi
idem, ma open-source (stile: Gimp VS. Adobe Photoshop per 2D images)
per CAD
scultura virtuale, specializzato in ritocco manuale dettagli hi-freq, bumpmapping, normalmaps…
open-source, specializzato in low-poly editing, subdivision surfaces
•
Rhinoceros
•
MeshLab
•
•
…
+ moltissimi strumenti per contesti specifici
–
–
–
‧ 2010/11 ‧ Università dell’Insubria
– Vision and Computer Graphic Lib
• OpenMesh (RWTH, de)
• CGAL (~INRIA, fr)
– Computational Geometry Algorithms Library
parametric surfaces (NURBS)
open-source, grande collezione algoritmi di ritocco, trasformazione, cleaning, seplificaz, …
– tutte e tre: C++, open-suorce.
(editing di umani, di interni architetturali, di paesaggi, o editor specifici per game-engines, etc...)
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria
Mesh: task comuni
• Data una mesh:
– magari appena caricata
• trovare il AABB
(axis aligned bounding box)
– utile ad esempio
per translare e scalare
l'oggetto opportunamente
– come si fa?
• (si itera sui vertici:
trovare il max e il min
di tutte le x, le y e le z)
Marco Tarini ‧ Computer Graphics ‧
2010/11 ‧ Università dell’Insubria
Marco Tarini ‧ Computer Graphics
‧ 2010/11 ‧ Università dell’Insubria