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