Modelli: formati, strutture dati, processing della mesh



Documenti analoghi
AMBIENTE VIRTUALE. Moduli logici di un Ambiente Virtuale. Modellazione. Management Rendering Interazione. Sintesi. Comportamenti.

Introduzione a API e game engine per la programmazione grafica

AMBIENTE VIRTUALE UTENTE

OpenSceneGraph & OSG4Web

I Modelli 3D più comuni: Mesh poligonali

Livello di approfondimento della lezione. Texture mapping di solito spiegato in corsi di CG di base

Simple & Efficient.

3DE Modeling Professional

Rappresentazione di oggetti 3D

Indice generale. OOA Analisi Orientata agli Oggetti. Introduzione. Analisi

Computer Graphics. La disciplina fornisce metodi per creare elaborare memorizzare visualizzare. immagini di oggetti o scene mediante un computer

exe Learning Costruire e modificare oggetti e materiali per l apprendimento

3D e Realtà Virtuale

Grafica 3D Interattiva

Modelli 3D: come ottenerli

I formati nella Computer Grafica

Database. Si ringrazia Marco Bertini per le slides

GIS e Geo WEB: piattaforme e architetture. Docente: Cristoforo Abbattista abbattista@planetek.it

HDS Software Technodigit 3D Reshaper Caratteristiche e benefici

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

BDX 3D-EDITOR (autore: Marco Bedulli) Scopo del software. Caratteristiche fondamentali. Linguaggi utilizzati. Navigazione 3D

Università degli Studi di Catania Corso di Laurea Magistrale in Informatica Multimedia 2013/14. Cantarella Danilo. OpenCV Android

TIMESHARK: Uno strumento per la visualizzazione e l analisi delle supertimelines. Relatore: Federico Grattirio

Organizzazione degli archivi

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Creare superfici. Le superfici. Informatica Grafica ][ Le superfici. Le superfici. Le superfici. Le superfici

Introduzione al data base

SistemiInformatividiRete

Realizzazione di un Tool per l iniezione automatica di difetti all interno di codice Javascript

Presentazione di Cedac Software

SVG Editor. Istituto Italiano Edizioni Atlas 1

Progettaz. e sviluppo Data Base

Manuale Utente Amministrazione Trasparente GA

Software per Helpdesk

Lezione 1. Introduzione e Modellazione Concettuale

APPENDICE I Pratiche di tecnologie informatiche per la elaborazione della musica e del suono

Modelli 3D: come ottenerli

Claudio Gussini Programma dei Corsi I e II Livello

Introduzione a Quantum GIS (QGIS) - passaggio dal software ArcView 3.x a software GIS OpenSource

Data Base. Prof. Filippo TROTTA

Modellazione dei dati in UML

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Corso Online Analista Programmatore Microsoft

Realizzare la VR: i software. Piattaforme per la VR: VRML. Il più diffuso: VRML (Virtual Reality Modeling Language)

Telerilevamento e GIS Prof. Ing. Giuseppe Mussumeci

Introduzione all Information Retrieval

Definizione Parte del software che gestisce I programmi applicativi L interfaccia tra il calcolatore e i programmi applicativi Le funzionalità di base

WORK LINE LASER MACHINE: DAL FILE 2D AL TAGLIO

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Il sistema operativo TinyOS

Università degli Studi "Roma Tre" Dipartimento di Informatica ed automazione. Facoltà di Ingegneria

La realizzazione di WebGis con strumenti "Open Source".

Realizzazione di uno strumento web-based per la simulazione remota di reti di sensori senza filo

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Le ombre in OpenGl. Daniele Varin LS Ing. Informatica Corso di Elementi di Grafica Digitale

connessioni tra i singoli elementi Hanno caratteristiche diverse e sono presentati con modalità diverse Tali relazioni vengono rappresentate QUINDI

Per capire meglio l ambito di applicazione di un DWhouse consideriamo la piramide di Anthony, L. Direzionale. L. Manageriale. L.

DISPENSE. sull uso di GRASS e QGIS per l analisi del territorio

MECODES MECODES. Progettazione integrata e simultanea con MECODES.

Applicazioni 3D avanzate

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Implementazione di MVC. Gabriele Pellegrinetti

Mon Ami 3000 Varianti articolo Gestione di varianti articoli

Basi di Dati Relazionali

PointCloud 7.0 Anno 2011

ISTITUTO TECNICO ECONOMICO MOSSOTTI

03. Il Modello Gestionale per Processi

Linguaggi e Paradigmi di Programmazione

ARCHITETTURA. Rubrica Infografica

Cos è la FatturaPA. Come creare una fattura elettronica con Fattura Facile (creazione del file XML)

Ref. Prof.ri TIC e Informatica e Laboratorio A PRESENTAZIONE

CONNETTORE MAILUP PER MICROSOFT DYNAMICS CRM

Strumenti per la gestione della configurazione del software

Lezione 20: La grafica 3D ed il WEB. La grafica 3D ed il WEB. La grafica 3D ed il WEB. Contenuti non interattivi. Contenuti interattivi

Port Community System del Porto di Ravenna CONFIGURAZIONE

PIANO DI LAVORO DEI DOCENTI

DESY è un prodotto ideato e sviluppato da

Realtà Virtuali Prof. Raffaella Folgieri, aa 2013/2014. Realizzare la VR: i software

NOVITA VERSIONE La soluzione CAD/CAM per il cablaggio elettrico

Manuale servizio Webmail. Introduzione alle Webmail...2 Webmail classica (SquirrelMail)...3 Webmail nuova (RoundCube)...8

CORSO DI WEB DESIGN 40 ORE

Introduzione al 3D con Autocad

ISTRUZIONI PER LA GESTIONE BUDGET

Corso di HTML. Prerequisiti. Modulo L3. 1-Concetti generali. Browser Rete Internet Client e server. M. Malatesta 1-Concetti generali-12 28/07/2013

lem logic enterprise manager

Programmazione per la disciplina Informatica PROGRAMMAZIONE DI MATERIA: INFORMATICA SECONDO BIENNIO AMMINISTRAZIONE FINANZA E MARKETING

CORSO SketchUp. P e r c o r s o f o r m a t i v o

SDD System design document

Transcript:

Modelli: formati, strutture dati, processing della mesh Davide Gadia Corso di Programmazione Grafica per il Tempo Reale Laurea Magistrale in Informatica per la Comunicazione a.a. 2013/2014 Outline Modelli high-poly vs low-poly Formati di interscambio e web-oriented Cenni elaborazione dati in pipeline Cenni strutture dati

Pipeline di rendering: Application stage Task più importante: Invio delle primitive di rendering a hardware grafico Triangoli Operazioni preliminari all'invio al Geometry stage: caricamento/creazione informazioni geometria tessellation consolidation simplification Modelli 3D Possibili sorgenti: tecniche di modellazione poligonale tecniche di modellazione basata su superfici tecniche di modellazione procedurale scannerizzazione 3D ricostruzione da foto... combinazione di queste tecniche

Modelli 3D high-poly vs low-poly Differenza tra modelli per animazione e per real-time Animazione alto livello di dettaglio per curvature alto numero poligoni quadrilateri spesso si utilizzano superfici parametriche Real-time compromesso su complessità mesh per prestazioni basso numero di poligoni triangoli quasi esclusivamente modelli poligonali Modelli 3D high-poly vs low-poly

Modelli 3D high-poly vs low-poly Modelli 3D high-poly vs low-poly

Modello poligonale Poligoni Triangoli o quadrati Componenti base: Vertici Spigoli Facce Altri possibili attributi: Normali Per faccia o per vertice Coordinate UV Colore o materiale. Formati di interscambio Esistono diversi (TANTI) formati per salvataggio dati mesh poligonale ASCII o binari Proprietari o open Problema: Esportazione e riutilizzo formati in SW/ambienti diversi Supporto nativo o utilizzo diverse librerie esterne Formati di interscambio Proposte di standard open per scambio modelli tra diverse applicazioni

Formati di interscambio : Wavefront OBJ (.obj) Proposto da Wavefront Technologies Formato ASCII semplice e aperto Solo geometria Face based Elenco: Vertici Coordinate UV Normali Di tutto l'oggetto Mantiene organizzazione gerarchica Proprietari o open Facce da indici nell'elenco delle singole componenti. Informazioni su materiali\texture su file.mtl esterno Molto utilizzato e supportato Formati di interscambio : Wavefront OBJ File di definizione materiali Lista vertici Lista coordinate texture Lista normali Lista facce mtllib cubo.mtl g default v -0.500000 0.000000 0.500000 v 0.500000 0.000000 0.500000 v -0.500000 1.000000 0.500000 v 0.500000 1.000000 0.500000 v -0.500000 1.000000-0.500000 v 0.500000 1.000000-0.500000 v -0.500000 0.000000-0.500000 v 0.500000 0.000000-0.500000 vt 0.000000 0.000000 vt 1.000000 0.000000 vt 0.000000 1.000000 #altre coord texture... vn 0.000000 0.000000 1.000000 vn 0.000000 0.000000 1.000000 vn 0.000000 0.000000 1.000000 vn 0.000000 0.000000 1.000000 vn 0.000000 1.000000 0.000000 #altre normali... g pcube1 f 1/1/1 2/2/2 4/4/3 3/3/4 f 3/3/5 4/4/6 6/6/7 5/5/8 f 5/5/9 6/6/10 8/8/11 7/7/12 f 7/7/13 8/8/14 2/10/15 1/9/16 f 2/2/17 8/11/18 6/12/19 4/4/20 f 7/13/21 1/1/22 3/3/23 5/14/24

Formati di interscambio : COLLADA (.dae) Proposto e gestito da Khronos Group COLLAborative Design Activity.dae = Digital Asset Exchange Schema XML open Geometria Shader e materiali Animazioni Simulazioni fisiche Versioni multiple dello stesso asset Grande flessibilità Difficoltà nell'implementare API e tool che seguano correttamente standard Problemi di compatibilità tra importer/exporter Formati di interscambio : COLLADA <COLLADA xmlns="http://www.collada.org/2005/11/colladaschema" version="1.4.1">... <library_geometries> <geometry id="box-lib" name="box"> <mesh> <source id="box-lib-positions" name="position"> <float_array id="box-lib-positions-array" count="24">-50 50 50 50 50 50-50 -50 50 50-50 50-50 50-50 50 50-50 -50-50 -50 50-50 -50</float_array> <technique_common> <accessor count="8" offset="0" source="#box-lib-positions-array" stride="3"> <param name="x" type="float"></param> <param name="y" type="float"></param> <param name="z" type="float"></param> </accessor> </technique_common> </source> <source id="box-lib-normals" name="normal"> <float_array id="box-lib-normals-array" count="72">0 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 0 1 0 0 1 0 0-1 0 0-1 0 0-1 0 0-1 0-1 0 0-1 0 0-1 0 0-1 0 0 1 0 0 1 0 0 1 0 0 1 0 0 0 0-1 0 0-1 0 0-1 0 0-1</float_array> <technique_common> <accessor count="24" offset="0" source="#box-lib-normals-array" stride="3"> <param name="x" type="float"></param> <param name="y" type="float"></param> <param name="z" type="float"></param> </accessor> </technique_common> </source> <vertices id="box-lib-vertices"> <input semantic="position" source="#box-lib-positions"/> </vertices> <polylist count="6" material="bluesg"> <input offset="0" semantic="vertex" source="#box-lib-vertices"/> <input offset="1" semantic="normal" source="#box-lib-normals"/> <vcount>4 4 4 4 4 4</vcount> <p>0 0 2 1 3 2 1 3 0 4 1 5 5 6 4 7 6 8 7 9 3 10 2 11 0 12 4 13 6 14 2 15 3 16 7 17 5 18 1 19 5 20 7 21 6 22 4 23</p> </polylist> </mesh> </geometry> </library_geometries>... </COLLADA>

Formati web per la grafica : VRML (.wrl) Virtual Reality Modeling Language Proposto e gestito da Web3D Consortium Standard ISO nel 1997 Linguaggio di markup visualizzazione e interazione con scenario di grafica All'interno del browser Necessità di plugin La limitata disponibilità di banda ne limitò il successo Formati web per la grafica : VRML #VRML V2.0 utf8 Separator { } Texture2 {filename "bark.jpg"} Cylinder { parts ALL radius 0.5 height 4 }

Formati web per la grafica : X3D (.x3d) extensible 3D sviluppato da Web3D Consortium Successore di VRML Standard ISO nel 2004 Basato su XML Supporta animazioni, multitexturing, shader, ottimizzazioni, ecc Gestisce anche audio, interazione, networking Migliore supporto tramite API Profili: Core, Interchange, Interactive, Immersive, Full Espongono numero crescente di funzionalità Scenario utilizza il profilo + adatto al suo scopo Prima di HTML5, necessità di plugin Adesso integrazione con altri dialetti XML per rendering su Canvas Interfacciamento con WebGL e Javascript Formati web per la grafica : X3D <X3D version='3.0 profile='interchange'> <head> </head> <Scene> <Group> <NavigationInfo type='"examine"'/> <DirectionalLight/> <Transform translation='3.0 0.0 1.0'> <Shape> <Sphere radius='2.3'/> <Appearance> <Material diffusecolor='1.0 0.0 0.0'/> </Appearance> </Shape> </Transform> </Group> </Scene> </X3D>

Formati web per la grafica : basati su JSON JavaScript Object Notation Formato di interscambio di dati Generici, non solo per grafica Basato su sottoinsieme di Javascript ASCII, molto semplice Basato su array di coppie nome:valore Con introduzione WebGL Diffusione di descrizione JSON della scena e dei modelli Va bene per scene non troppo complesse O se la scena è composta da numerosi elementi separati Es: Visualizzazione scientifica Sfruttando caricamento asincrono con AJAX Creazione plugin/script appositi per SW modellazione Formati web per la grafica : basati su JSON { "objectname" : ["Plane"], "texturepath" : ["(null)"], "vertexpositions" : [1.000000,0.000000,- 1.000000,1.000000,0.000000,1.000000,- 1.000000,0.000000,1.000000,-1.000000,0.000000,- 1.000000], "vertextexturecoords" : [], "indices" : [0,3,2,1], "texindices" : [] }

Preparazione/Ottimizzazione mesh Prima dell'invio delle primitive alla GPU Operazioni: tessellation consolidation simplification Trattazione introduttiva e non approfondita Tecniche più legate a sviluppo motore di rendering/engine grafico Vedere cap 12 Realtime rendering per dettagli Tessellation La geometria caricata dal modello presenta poligoni con 4 spigoli E' necessario suddividere i poligoni Criteri: Triangoli: hardware è ottimizzato per triangoli Tessellation diventa triangolazione Caso + comune Convessità: tutti i sottopoligoni devono essere convessi Area: divido in sottopoligoni con area massima prestabilita Regolarità: divido in sottopoligoni usando uno schema uniforme

Tessellation Processo complicato Numerosi possibili problemi Geometria del modello presenta problemi Poligoni non planari Incroci pericolosi di edge Necessità di controlli e più passi di aggiustamento Triangoli troppo lunghi e stretti creano problemi in shading Vertici a T vanno eliminati aggiungendo triangoli.. Consolidation Fase di ottimizzazione della geometria Merging Orientation Generazione normali ai vertici

Merging Polygon soup: Modelli possono presentare poligoni disconnessi 2 poligoni condividono spigoli e vertici, ma in memoria sono separati Ripetizione di informazione Spreco di risorse Dati vengono convertiti in una Polygon Mesh: Analisi e introduzione nella mesh dei vertici, eliminando i doppioni Unione di vertici molto vicini, e inserimento nuovo vertice nella mesh welding Orientation Caratteristica di una buona mesh: Uniformità di orientamento dei poligoni Ordine dei vertici uniforme nella mesh (es: senso antiorario) Comporta normali di faccia orientate alla stessa maniera Uniformare orientamento richiede: analizzare la mesh creata in fase di merging Ordine vertici Relazioni tra spigoli in comune Creazione grafo di vicinanza tra poligoni Trovare poligoni con senso diverso dai vicini e ribaltarli Procedimento funziona se ogni spigolo è in comune solo a massimo 2 poligoni

Orientation Normal smoothing Generazione normali ai vertici Essenziali per rendering Spesso non fornite dal modello esportato da SW modellazione

Normal smoothing Calcolo a partire da normali faccia Calcolo normali vertice mediando le normali delle facce comuni Contributo dato da angolo tra faccia e normale nel calcolo della media serve a evitare inconsistenza Simplification Data reduction Decimation Analisi della mesh dopo fasi precedenti Tentativo di rimuovere poligoni inutili o non significativi Mantenendo l'apparenza finale Di solito, tramite generazione di normal map a partire dalla mesh originale, applicate poi alla mesh decimata Per applicazioni in tempo reale Prestazioni migliori diminuendo il numero di primitive mandate avanti nella pipeline

Simplification Edge collapse o Edge contraction Statico Dinamico View-dependent Terrain rendering Comporta eliminazione di elementi e primitive Possibilità di introdurre artefatti Necessità di ulteriori passi di pulizia della mesh Simplification

Subdivision surfaces Generazione di mesh dettagliate a partire da mesh semplice (mesh di controllo) Subdivision surfaces Processo a 2 fasi: Fase di raffinamento Creo nuovi vertici e collegamenti tra i nuovi triangoli Fase di smoothing Aggiusto la posizione 3D dei nuovi vertici seguendo la curvatura della mesh

Subdivision surfaces Diversi approcci proposti in letteratura: Statici vs dinamici Triangle-based vs polygonal-based Loop subdivision 3 subdivision Doo-Sabin subdivision Catmull-Clark subdivision Tecnica + famosa Sviluppata da Pixar In libreria open-source https://github.com/pixaranimationstudios/opensubdiv Subdivision surfaces Di solito applicate per animazione Utilizzate anche in modellazione modelli per videogiochi Creazione diverse versioni dei modelli Level of detail Con WebGL, diventa utile per avere il caricamento di una mesh molto semplificata Rifinita da un passo di suddivisione calcolato lato client

Polygon mesh: strutture dati Necessità di strutture dati adeguate Per ottimizzare processo merging e orientation E elaborazioni successive Polygon mesh: strutture dati Soluzione facile e intuitiva: Lista di vertici Lista di indici nella lista dei vertici per descrivere i poligoni v1 v2 0 1 2 3 4 v1 v2 v3 v4 v5 Lista vertici v5 f1 v4 f2 v3 f1 0 1 3 4 f2 1 2 3 Poligoni

Polygon mesh: strutture dati Problema: mancano informazioni sugli spigoli Si possono ricavare Computazionalmente pesante per modelli complessi Aggiungo ridondanza: Lista di vertici Lista di indici nella lista dei vertici per descrivere gli spigoli Lista di indici nella lista dei vertici per descrivere i poligoni Devo comunque fare una ricerca in tutte le liste Strutture dati Semplici liste non efficienti Serve struttura dati flessibili, ottimizzate e veloci Con accesso diretto e in tempo costante agli elementi vicini a una primitiva considerata Senza dover analizzare tutta la struttura dati

Struttura dati Half-edge Implementazione: Spezza uno spigolo in due per la sua lunghezza Entità separate orientate in senso opposto Nella struttura dati puntatori a: Vertice alla fine del semi-spigolo Semi-spigolo successivo Faccia interna allo semi-spigolo Semi-spigolo gemello orientato in senso opposto Struttura dati Half-edge

Half-edge: implementazione C struct HE_vert { float x; float y; float z; struct HE_edge { //vertice alla fine del half-edge HE_vert* vert; }; //half-edge uscente dal vertice HE_edge* edge; struct HE_face { //un half-edge di contorno HE_edge* edge; }; }; //half-edge gemello HE_edge* pair; //faccia interna al half-edge HE_face* face; //half-edge successivo HE_edge* next; Half-edge: implementazione C //trovare i vertici e le facce adiacenti a un edge HE_vert* vert1 = edge->vert; HE_vert* vert2 = edge->pair->vert; HE_face* face1 = edge->face; HE_face* face2 = edge->pair->face; inc. vertex face opposite //trovare ed elaborare tutti gli edge di una faccia HE_edge* edge = face->edge; do { // do something with edge... edge = edge->next; } while (edge = face->edge); next edge face

References Real time rendering 3rd edition : Cap 12 Slide e immagini da www.realtimerendering.com www.collada.org www.web3d.org Per prossima lezione 1 Ripasso Algebra lineare e trigonometria Slide corso Matematica per il discreto Appendici A e B Real-time rendering Ripasso Trasformazioni e Quaternioni Slide corso Grafica e Immagini Digitali Comunicazione Digitale - Prof. Marini Capitolo 4 Real-time rendering

Per prossima lezione 2 Studiare da soli codice es01_multiplecameras