Massimiliano Piscozzi – [email protected]

download Massimiliano Piscozzi  –  piscozzi@dico.unimi.it

If you can't read please download the document

description

Sistemi multimediali. Massimiliano Piscozzi – [email protected]. Struttura del corso. Introduzione a X3D. Architettura interna di X3D. Presentazione degli oggetti principali che compongono una scena X3D e corrispondente codifica in XML. Creazione al computer di scene X3D. - PowerPoint PPT Presentation

Transcript of Massimiliano Piscozzi – [email protected]

  • Massimiliano Piscozzi [email protected] multimediali

  • Struttura del corsoIntroduzione a X3DArchitettura interna di X3DPresentazione degli oggetti principali che compongono una scena X3D e corrispondente codifica in XMLCreazione al computer di scene X3DUtilizzo del software X3D-Edit

  • Introduzione a X3DX3D: eXtensible 3DCos X3D?!Nuova generazione di specifiche grafiche per la descrizione di contenuti tridimensionali interattivi (ISO Open Standard)Successore di VRML97Nuove funzionalitCodifica XMLArchitettura a componenti pi facilmente estendibileCosa non X3D?!Un programma di modellazione / animazione 3DUn linguaggio di programmazione

  • Aree di applicazionePresentazioni multimedialiPagine webVisualizzazione in ambienti RV immersiviMondi virtuali multiutenteVisualizzazione scientificaFormato di interscambio tra diverse applicazioni 3DBrowsers X3DMaya3D Studio Max

  • Funzionalit di X3D (1)Grafica 3DGeometria poligonale, geometria parametrica, trasformazioni gerarchiche, illuminazione, materiali e textures Grafica 2DTesto, forme planari inserite allinterno della gerarchica delle trasformazioni 3DAnimazioneTimers e interpolatori per gestire le animazioni in modo continuo, morphing e animazione di umanoidi (H-Anim)Audio e videoSorgenti audiovisive mappate sugli oggetti geometrici della scenaNavigazioneGestione dei punti di vista, movimento dellutente nello spazio 3D, test di collisione, prossimit e visibilit

  • Funzionalit di X3D (2)Interazione con lutenteSensori per il picking e dragging via mouse, input da tastieraOggetti definiti dallutentePossibilit di estendere le funzionalit built-in del browser creando nuovi data typesScriptingPossibilit di cambiare dinamicamente la scena tramite linguaggi di programmazione e scriptingNetworkingPossibilit di comporre una scena a partire da risorse distribuite sulla rete, hyperlinking di oggetti verso altre scene o risorse sul webSimulazione fisicaAnimazione di umanoidi (H-Anim), dataset geospaziali, integrazione col protocollo DIS (Distributed Interactive Simulation)

  • Struttura del corsoIntroduzione a X3DArchitettura interna di X3DPresentazione degli oggetti principali che compongono una scena X3D e corrispondente codifica in XMLCreazione al computer di scene X3DUtilizzo del software X3D-Edit

  • Architettura di X3DX3D/VRML files, streamsEventi esterni (pagine Web)XML VRMLclassic BinaryParserScene graph managerX3DNode typesPrototype,External PrototypeSAI (Scene Authoring Interface)SAIScene AuthoringInterfaceEAIExternal AuthoringInterfaceScriptingEngines(Ecmascript,Java...)APIBrowserScene graphEvent graph

  • Architettura di X3DX3D/VRML files, streamsXMLScene graph Da cosa composto lo scene graph?!

    Quali sono le dichiarazioni X3D e come codificarle in XML?!

  • Scene graph (1)Lo scene graph: la struttura fondamentale dellambiente run-time di X3Dcontiene tutti gli oggetti del sistema e le loro relazioniPrimitive geometricheMaterialiSorgenti luminosePunti di vistaSensoriSorgenti audio Transformation hierarchy:Descrive le relazioni spaziali fra gli oggetti da visualizzareBehaviour graph:Descrive le connessioni tra i campi degli oggetti e il flusso degli eventi attraverso il sistema

  • Scene graph (2)Lo scene graph: un grafo aciclico orientato (DAG direct acyclic graph) in cui i nodi possono contenere dei campi costituiti da nodi-figli

  • Scene graph Transformation hierarchy (1)Allinterno dello scene graph si pu individuare una gerarchia delle trasformazioni (transformation hierarchy) che include tutti i nodi radice e i loro discendenti aventi una collocazione nello spazio 3DIn base alla transformation hierarchy: i nodi radice sono posizionati rispetto al sistema di coordinate globale (world) della scena i nodi figli sono posizionati rispetto ad un sistema di coordinate locale (local) definito in termini di trasformazioni a partire dal sistema di coordinate del nodo padre

  • Sistema di coordinate globaleOgni scena X3D definisce implicitamente un sistema di coordinate globaliScene graph Transformation hierarchy (2)

  • Scene graph Transformation hierarchy (2)Ogni scena X3D definisce implicitamente un sistema di coordinate globali Le trasformazioni geometriche di un nodo coinvolgono tutti i suoi nodi discendentiSistema di coordinate globale

  • Le trasformazioni geometriche di un nodo non coinvolgono il nodo padreSistema di coordinate globaleOgni scena X3D definisce implicitamente un sistema di coordinate globaliScene graph Transformation hierarchy (2)

  • Scene graph Behaviour graph (1)Allinterno dello scene graph vi possono essere delle connessioni (routes) fra campi di nodi distinti esse costituiscono il behaviour graph Node CIl behaviour graph : specifica come gli eventi si propagano nel sistema modificabile dinamicamente reindirizzando (rerouting), aggiungendo o sopprimendo delle connessioni Node DNode ANode B

  • Scene graph Behaviour graph (2)Esempio di routing degli eventi: al trascorrere del tempo (tra 0 e 5 secondi) il cono si muove dalla posizione A alla posizione BAB

  • Lambiente run-time Lambiente run-time di X3D:visualizza la scena (rendering)riceve input da diverse sorgenti (sensori) e coordina lelaborazione degli eventigestisce lo stato corrente dello scene graphgestisce i collegamenti tra il browser X3D e applicazioni esterne per lhyperlinking e laccesso tramite APIgestisce il ciclo di vita dei singoli oggetti (sia gli oggetti built-in sia quelli definiti dallutente)

  • Lobject modelIl sistema X3D costituito da un insieme di entit astratte chiamate oggettiFields (campi)Derivati dalloggetto X3DField rappresentano dei concetti semplici come ad esempio valori booleani, stringhe di caratteri, array di valori in virgola mobile, ...Nodes (nodi)Derivati dalloggetto X3DNode rappresentano dei concetti pi complessi e possono contenere uno o pi fields per memorizzare dei dati interni o per spedire e ricevere degli eventi Alcuni oggetti (dichiarazioni ROUTE, PROTO, metadata, informazioni su Components e Profiles) non sono n campi n nodi

  • Lobject model: i campi (1)FieldsUn campo pu contenere:un singolo valore di un dato tipo (SF...)un array di valori dello stesso tipo (MF...)

    Tipi definiti in X3D:SFBool, MFBoolTRUE / FALSESFColor, MFColor(R G B) componenti (0,1)SFColorRGBA, MFColorRGBA(R G B A) componenti (0,1)SFDouble, MFDoublefloating-point in doppia precisioneSFFloat, MFFloatfloating-point in singola precisioneSFInt32, MFInt32intero a 32-bit

  • Lobject model: i campi (2)...tipi definiti in X3D:SFImage, MFImageimmagine bidimensionale non compressa larghezza, altezza, n componenti larghezza x altezza valori (pixels)SFNode, MFNodenodo X3DSFRotation, MFRotation(x y z a): rotazione di a radiantirispetto allasse (x y z)SFString, MFStringstringa codificata in UTF-8SFTime, MFTimevalore in doppia precisione: secondi apartire dal 1 gennaio 1970, 00:00:00SFVec2d, MFVec2dvettore bidimensionale di doubleSFVec2f, MFVec2fvettore bidimensionale di floatSFVec3d, MFVec3dvettore tridimensionale di doubleSFVec3f, MFVec3fvettore tridimensionale di float

  • Lobject model: i nodi (1)NodesI nodi sono istanziati dichiarandoli in un file o usando codice procedurale a run-timeSi possono creare nuovi tipi di nodi (meccanismo di prototyping)Diventano parte dellambiente run-timeVengono trattati come gli oggetti built-inLa maggior parte dei tipi dei nodi implementano delle funzionalit aggiuntive attraverso lereditariet di interfacce (propriet e funzionalit comuni)

  • Lobject model: i nodi (2)Ciascun nodo contiene zero o pi campi che definiscono:lo stato persistente del nodo i valori che il nodo pu spedire e ricevere sotto forma di eventi

    Vi sono 4 tipi di accesso ai campi di un nodo:initializeOnly: non riceve e non spedisce eventiinputOnly: permessa la sola ricezione di eventioutputOnly: permessa la sola spedizione di eventiinputOutput: sono permesse sia la ricezione sia la spedizione di eventi

  • Lobject model: i nodi (3)Regole per lassegnazione dei nomi ai campi:Tutti i nomi composti da pi parole cominciano con una minuscola, mentre le successive iniziali sono maiuscoleEsempio: nomeCompostoDaVarieParoleI campi inputOnly hanno il prefisso set_Esempio: set_fooEccezioni: addChildren, removeChildren, alcuni campi del tipo SFTimeI campi outputOnly hanno il suffisso _changedEsempio: foo_changedEccezioni: i campi di tipo SFBool (ex: isActive), alcuni campi del tipo SFTimeI campi inputOutput aggiungono al proprio nome il prefisso set_ o il suffisso _changed a seconda che siano usati nella ricezione o nellinvio di eventiEsempio: foo, set_foo, foo_changed

  • Lobject model: i nodi e il flusso degli eventiGli eventi sono il mezzo primario per generare dei comportamenti nellambiente run-timeGli eventi in output sono connessi agli eventi in input in modo dichiarativoPer poter stabilire una connessione (ROUTE) fra due campi occorre associare ai nodi un nomeCostrutto DEF / USEGli eventi sono generati da sensori o script e poi propagati lungo il behaviour graphUna cascata di eventi caratterizzata dallo stesso timestampNodocampoAcampoBcampoCcampoD initializeOnlyinputOnlyoutputOnlyinputOutput