Massimiliano Piscozzi – [email protected]

25
Massimiliano Piscozzi [email protected] Sistemi multimediali

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]

Page 1: Massimiliano Piscozzi  –  macx.p@tiscali.it

Massimiliano Piscozzi – [email protected]

Sistemi multimediali

Page 2: Massimiliano Piscozzi  –  macx.p@tiscali.it

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

Utilizzo del software X3D-Edit

Page 3: Massimiliano Piscozzi  –  macx.p@tiscali.it

Introduzione a X3D

X3D: eXtensible 3D

Cos’è X3D?!• Nuova generazione di specifiche grafiche per la

descrizione di contenuti tridimensionali interattivi (ISO Open Standard)

• Successore di VRML97– Nuove funzionalità– Codifica XML– Architettura a componenti più facilmente estendibile

Cosa non è X3D?!• Un programma di modellazione / animazione 3D• Un linguaggio di programmazione

Page 4: Massimiliano Piscozzi  –  macx.p@tiscali.it

Aree di applicazione

• Presentazioni multimediali

• Pagine web

• Mondi virtuali multiutente

• Visualizzazione scientifica

• Formato di interscambio tra diverse applicazioni 3D

Browsers X3D

Maya

3D Studio Max

Page 5: Massimiliano Piscozzi  –  macx.p@tiscali.it

Funzionalità di X3D (1)

• Grafica 3DGeometria poligonale, geometria parametrica, trasformazioni gerarchiche, illuminazione, materiali e textures

• Grafica 2DTesto, forme planari inserite all’interno della gerarchica delle trasformazioni 3D

• AnimazioneTimers 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 scena

• NavigazioneGestione dei punti di vista, movimento dell’utente nello spazio 3D, test di collisione, prossimità e visibilità

Page 6: Massimiliano Piscozzi  –  macx.p@tiscali.it

Funzionalità di X3D (2)

• Interazione con l’utenteSensori per il picking e dragging via mouse, input da tastiera

• Oggetti definiti dall’utentePossibilità di estendere le funzionalità built-in del browser creando nuovi data types

• ScriptingPossibilità di cambiare dinamicamente la scena tramite linguaggi di programmazione e scripting

• NetworkingPossibilità di comporre una scena a partire da risorse distribuite sulla rete, hyperlinking di oggetti verso altre scene o risorse sul web

• Simulazione fisicaAnimazione di umanoidi (H-Anim), dataset geospaziali, integrazione col protocollo DIS (Distributed Interactive Simulation)

Page 7: Massimiliano Piscozzi  –  macx.p@tiscali.it

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

Utilizzo del software X3D-Edit

Page 8: Massimiliano Piscozzi  –  macx.p@tiscali.it

Architettura di X3D

X3D/VRML files, streams Eventi esterni (pagine Web)

XML VRMLclassic

Binary

Parser

Scene graph manager

X3DNode types

Prototype,External Prototype

SAI (Scene Authoring Interface)

SAIScene Authoring

Interface

EAIExternal Authoring

Interface

ScriptingEngines

(Ecmascript,Java...)

APIBrowser

Scene graph Event graph

Page 9: Massimiliano Piscozzi  –  macx.p@tiscali.it

Eventi esterni (pagine Web)

VRMLclassic

Binary

Parser

Scene graph manager

X3DNode types

Prototype,External Prototype

SAI (Scene Authoring Interface)

SAIScene Authoring

Interface

EAIExternal Authoring

Interface

ScriptingEngines

(Ecmascript,Java...)

APIBrowser

Event graph

Architettura di X3D

X3D/VRML files, streams

XML

Scene graph

• Da cosa è composto lo scene graph?!

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

Page 10: Massimiliano Piscozzi  –  macx.p@tiscali.it

Scene graph (1)

Lo scene graph:• è la struttura fondamentale dell’ambiente run-time di

X3D• contiene tutti gli oggetti del sistema e le loro relazioni

Primitive geometriche

Materiali

Sorgenti luminose

Punti di vista

Sensori

Sorgenti audio

· · ·

Transformation hierarchy:

Descrive le relazioni spaziali fra gli

oggetti da visualizzare

Behaviour graph:

Descrive le connessioni tra i campi

degli oggetti e il flusso degli eventi

attraverso il sistema

Page 11: Massimiliano Piscozzi  –  macx.p@tiscali.it

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

Node A

Node B

Node C

Node D

Node E Node F

Nodi radice

Nodi figli

Page 12: Massimiliano Piscozzi  –  macx.p@tiscali.it

Scene graph Transformation hierarchy (1)

All’interno 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 3D

In 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

Page 13: Massimiliano Piscozzi  –  macx.p@tiscali.it

Sistema di coordinate globale

Sistemi di coordinate locali (rispetto ai nodi

padre)

• Ogni scena X3D definisce implicitamente un sistema di coordinate globali

Scene graph Transformation hierarchy (2)

x

y

z

Page 14: Massimiliano Piscozzi  –  macx.p@tiscali.it

Scene graph Transformation hierarchy (2)

• Ogni scena X3D definisce implicitamente un sistema di coordinate globali

Sistemi di coordinate locali (rispetto ai nodi

padre)

Le trasformazioni geometriche di un nodo coinvolgono tutti i suoi nodi discendenti

Sistema di coordinate globale

x

y

z

Page 15: Massimiliano Piscozzi  –  macx.p@tiscali.it

Sistemi di coordinate locali (rispetto ai nodi

padre)

Le trasformazioni geometriche di un nodo non coinvolgono il nodo padre

Sistema di coordinate globale

• Ogni scena X3D definisce implicitamente un sistema di coordinate globali

x

y

z

Scene graph Transformation hierarchy (2)

Page 16: Massimiliano Piscozzi  –  macx.p@tiscali.it

Node C

Scene graph Behaviour graph (1)

All’interno dello scene graph vi possono essere delle connessioni (routes) fra campi di nodi distinti

esse costituiscono il behaviour graph

Il behaviour graph :

• specifica come gli eventi si propagano nel sistema

• è modificabile dinamicamente reindirizzando (rerouting), aggiungendo o sopprimendo delle connessioni

Node D

Node A Node B

Page 17: Massimiliano Piscozzi  –  macx.p@tiscali.it

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 B

A B

Interpolatorefraction

value

key

keyValue

· · ·

TimerstartTime

endTime

fraction

· · ·

ConoTransftranslation

· · ·

Page 18: Massimiliano Piscozzi  –  macx.p@tiscali.it

L’ambiente run-time

L’ambiente run-time di X3D:

• visualizza la scena (rendering)

• riceve input da diverse sorgenti (sensori) e coordina l’elaborazione degli eventi

• gestisce lo stato corrente dello scene graph

• gestisce i collegamenti tra il browser X3D e applicazioni esterne per l’hyperlinking e l’accesso tramite API

• gestisce il ciclo di vita dei singoli oggetti (sia gli oggetti built-in sia quelli definiti dall’utente)

Page 19: Massimiliano Piscozzi  –  macx.p@tiscali.it

L’object model

• Il sistema X3D è costituito da un insieme di entità astratte chiamate oggetti

Fields (campi)

Derivati dall’oggetto X3DField rappresentano

dei concetti semplici come ad esempio valori

booleani, stringhe di caratteri, array di valori in

virgola mobile, ...

Nodes (nodi)

Derivati dall’oggetto 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

Page 20: Massimiliano Piscozzi  –  macx.p@tiscali.it

L’object 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, MFBool TRUE / FALSE

SFColor, MFColor (R G B) componenti (0,1)

SFColorRGBA, MFColorRGBA (R G B A) componenti (0,1)

SFDouble, MFDouble floating-point in doppia precisione

SFFloat, MFFloat floating-point in singola precisione

SFInt32, MFInt32 intero a 32-bit

Page 21: Massimiliano Piscozzi  –  macx.p@tiscali.it

L’object model: i campi (2)

...tipi definiti in X3D: SFImage, MFImage immagine bidimensionale non

compressa

larghezza, altezza, n° componenti

‘larghezza x altezza’ valori (pixels)

SFNode, MFNode nodo X3D

SFRotation, MFRotation (x y z a): rotazione di a radianti

rispetto all’asse (x y z)

SFString, MFString stringa codificata in UTF-8

SFTime, MFTime valore in doppia precisione: secondi a

partire dal 1° gennaio 1970, 00:00:00

SFVec2d, MFVec2d vettore bidimensionale di double

SFVec2f, MFVec2f vettore bidimensionale di float

SFVec3d, MFVec3d vettore tridimensionale di double

SFVec3f, MFVec3f vettore tridimensionale di float

Page 22: Massimiliano Piscozzi  –  macx.p@tiscali.it

L’object model: i nodi (1)

Nodes

• I nodi sono istanziati dichiarandoli in un file o usando codice procedurale a run-time

• Si possono creare nuovi tipi di nodi (meccanismo di prototyping)– Diventano parte dell’ambiente run-time– Vengono trattati come gli oggetti built-in

• La maggior parte dei tipi dei nodi implementano delle funzionalità aggiuntive attraverso l’ereditarietà di interfacce (proprietà e funzionalità comuni)

Page 23: Massimiliano Piscozzi  –  macx.p@tiscali.it

L’object 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 eventi

• inputOnly: è permessa la sola ricezione di eventi

• outputOnly: è permessa la sola spedizione di eventi

• inputOutput: sono permesse sia la ricezione sia la spedizione di eventi

Page 24: Massimiliano Piscozzi  –  macx.p@tiscali.it

L’object model: i nodi (3)

Regole per l’assegnazione dei nomi ai campi:

• Tutti i nomi composti da più parole cominciano con una minuscola, mentre le successive iniziali sono maiuscole

– Esempio: nomeCompostoDaVarieParole

• I campi inputOnly hanno il prefisso “set_”– Esempio: set_foo– Eccezioni: addChildren, removeChildren, alcuni campi del tipo ‘SFTime’

• I campi outputOnly hanno il suffisso “_changed”– Esempio: foo_changed– Eccezioni: i campi di tipo SFBool (ex: isActive), alcuni campi del tipo ‘SFTime’

• I campi inputOutput aggiungono al proprio nome il prefisso “set_” o il suffisso “_changed” a seconda che siano usati nella ricezione o nell’invio di eventi

– Esempio: foo, set_foo, foo_changed

Page 25: Massimiliano Piscozzi  –  macx.p@tiscali.it

L’object model: i nodi e il flusso degli eventi

• Gli eventi sono il mezzo primario per generare dei comportamenti nell’ambiente run-time– Gli eventi in output sono connessi agli eventi in input in modo

dichiarativo

• Per poter stabilire una connessione (ROUTE) fra due campi occorre associare ai nodi un nome– Costrutto DEF / USE

• Gli eventi sono generati da sensori o script e poi propagati lungo il behaviour graph– Una cascata di eventi è caratterizzata dallo stesso timestamp

NodocampoA

campoB

campoC

campoD

· · ·

initializeOnly

inputOnly

outputOnly

inputOutput