Diapositiva 1

Download Report

Transcript Diapositiva 1

X3D
Cristina Donati
X3D
1
Percorso
Introduzione a X3D
Obiettivi di progettazione
Un po’ di storia
Obiettivi principali della specifica X3D
Caratteristiche
Mercati coinvolti
Architettura
Componenti
Esempi
Cristina Donati
X3D
2
Introduzione
X3D è uno standard di formato di
file potente ed estensibile per
descrivere ambienti virtuali
tridimensionali distribuiti per la
rete.
Cristina Donati
X3D
3
Introduzione
X3D è sviluppato dal Web 3D Consortium,
associazione non profit responsabile della
definizione degli standard grafici 3D per il web.
Web 3D lavora in stretto contatto con altre
associazioni quali the International Standards
Organization (ISO), the World Wide Web
Consortium (W3C) e the MPEG-4 Committee, per
facilitare al massimo l'interoperabilità e
l'adozione dei propri standard da parte delle
industrie.
Cristina Donati
X3D
4
Introduzione
X3D fornisce:
XML encoding rende possibile l'incorporazione del
3D nell'architettura web service e negli ambienti
distribuiti e facilita il trasferimento di dati 3D fra
applicazioni.
Scene Authoring Interface fornisce contenuti 3D in
tempo reale e controlla facilmente la loro
integrazione in un'ampia gamma di applicazioni web
e non.
Cristina Donati
X3D
5
Introduzione
X3D è il successore di VRML (standard ISO -ISO/IEC 147721:1997- per web basati su grafica 3D)
Il campo di azione dell'X3D va a sovrapporsi al già affermato
VRML97. Infatti, questo standard, nasce come sforzo per
migliorare la specifica Vrml97, cercando di prendere spunto da
quanto di buono essa contiene e di correggere le palesi difficoltà
di implementazione o diffusione da essa mostrate.
I progressi dell'X3D rispetto il VRML riguardano nuove
caratteriche, applicazioni avanzate di interfacce programmatori,
formati addizionali di codifica dei dati, conformità più ristretta e
un'architettura costituita da componenti che fornisce l'approccio
modulare di supporto allo standard.
Cristina Donati
X3D
6
Obiettivi di progettazione
Separare l'architettura di runtime dalla codifica dei dati
Supportare svarietà formati di codifica, incluso l'Extensible Markup
Language (XML)
Aggiungere nuove grafiche, comportamenti e oggetti interattivi
Fornire alternative application programmer interfaces (API) nella
scena 3D
Modularizzare l'architettura in componenti
Definire sottoinsiemi della specifica ( " Profiles" ) che soddisfino le
differenti necessità di mercato
Permettete alla specifica di essere realizzata a diversi livelli di
servizio
Eliminare, dove possibile, comportamenti non specificati o non
sufficientemente specificati
Cristina Donati
X3D
7
Un po' di storia
Fase iniziale del processo di definizione del nuovo standard
portata avanti da uomini della Platinum (società che nella
seconda metà del 98 aveva mostrato un grosso interesse per il
settore andando ad acquistare alcune tra le principali tecnologie
disponibili).
Modalità di avanzamento del processo profondamente diverse da
quelle che avevano caratterizzato la definizione di Vrml 1.0 e
Vrml 2.0.
Cristina Donati
X3D
8
Un po' di storia
Colpo di scena in occasione di VRML99 tenutosi a Paderborn in
Germania a febbraio. La Platiunum annunciò la liquidazione del settore
3D con licenziamenti a valanga: una mossa che sorprese un po’ tutti,
visto che arrivava 6 mesi dopo l'acquisizione di risorse strategiche nel
settore.
Dopo un iniziale periodo di sbandamento, la comunità internazionale
web3d prese in mano il processo di definizione dello standard X3D. Si
formò un team di sviluppo (periodo marzo-aprile 1999) capeggiato da
Don Brutzman, attuale coordinatore del processo di definizione.
Cristina Donati
X3D
9
Un po' di storia
Ancora una volta il processo di definizione delle nuove
specifiche è sembrato troppo lento e soprattutto non in linea
con la storia recente di Vrml che aveva visto la mailing list
www-vrml sempre in primo piano: in particolare nel periodo che
va dall’aprile al giugno 99 molto forti erano le lamentele circa
un processo di standardizzazione che sembrava procedere in
modo autonomo rispetto alla comunità web3d.
Cristina Donati
X3D
10
Un po' di storia
Un evento 'imprevisto' sbloccò la situazione. Shout Interactive,
società emergente nel settore Vrml e una tra le maggiori
promotrici di X3D, sottomise al Web3D Consortium una
proposta di specifica, fornendo anche una parziale
implementazione già attiva. Subito dopo anche Blaxxun
rilasciava un propria proposta, seguita a ruota da un'altra di
New Objectivity.
Queste iniziative hanno probabilmente colto leggermente di
sorpresa il team di sviluppo di X3D, obbligandolo di fatto a
modificare il procedimento di sviluppo della specifica.
Cristina Donati
X3D
11
Un po' di storia
Si giunse alla definizione ufficiale di una Request For Proposal
in cui far confluire le diverse proposte che già erano state
presentate (o che stavano per essere completate).
Partendo da queste il compito del team X3D dovrebbe essere
quello di giungere alla definizione di un unico standard che sia
in grado di sommare gli aspetti positivi di ognuna. Da poco è
stata rilasciata una nuova draft di specifica per x3d. Il
procedimento di definizione e soprattutto di valutazione è
tuttora pienamente in corso.
Cristina Donati
X3D
12
Un po' di storia
PROPOSITI
SCADENZA
Specification draft
30/04/04
Implementazione browser
08/08/04
Dimostrazione
Fine giugno
Valutazione
08/08/04
Inizio ISO submission
I settimana di luglio
II round valutazione
ISO submission
Cristina Donati
X3D
13
Obiettivi principali della
specifica X3D
Definizione di un core, un nucleo molto compatto della
specifica che possa essere implementato velocemente, senza
errori e con ridottissime dimensioni dei files risultanti. Questo
comporta la possibilità di ottenere plug-in dalle dimensioni molto
piccole (dell'ordine anche del centinaio di Kb) e quindi facilmente
incorporabili nei browser html. Da sottolineare è che questo
permette che contenuti X3D possano essere distribuiti addirittura
con delle semplici applet Java che funzionano da viewer.
E' da sottolineare come questo permetta di distribuire contenuti
X3D utilizzando come viewer delle semplici applet Java.
Cristina Donati
X3D
14
Obiettivi principali della
specifica X3D
Estendibilità Il core dovrebbe prevedere la possibilità di essere
esteso con quelli che vengono definiti profili. Dovrebbe dunque
essere presente un meccanismo che consente l'estensione del
plug-in (o del viewer Java).
Integrazione con XML Sarà dunque possibile creare contenuti
X3D con una sintassi a tag XML.
Cristina Donati
X3D
15
Obiettivi principali della
specifica X3D
X3D non comporta la morte di VRML.
VRML97 è uno standard ISO e in quanto tale rimarrà attivo.
La sintassi X3D è praticamente identica alla sintassi Vrml, con
piccole varianti che nelle intenzioni dovrebbero semplificare
la scrittura del codice e renderlo più semplice e coerente.
Cristina Donati
X3D
16
Obiettivi principali della
specifica X3D
Cristina Donati
X3D
17
Cosa ha portato a definire il nuovo
standard X3D?
La necessità di disporre di un plug-in lato client per visualizzare i
file VRML che spesso raggiunge dimensioni superiori anche ai
3Mb. Se si pensa che meno del 10% degli utenti della rete ha
installato un plug-in vrml si possono comprendere molte delle
resistenze delle aziende nella sua adozione come mezzo di
comunicazione di massa.
Non solo: molto spesso le funzionalità più evolute non sono
implementate nello stesso modo su tutti i plug-in e addirittura
su alcuni non funzionano. Questo è dovuto essenzialmente alla
complessità della specifica Vrml97. La specifica attuale è a detta
di tutti troppo complessa per permettere agli sviluppatori di
browsers di ottenere prodotti leggeri e privi di bug.
Cristina Donati
X3D
18
Cosa ha portato a definire il nuovo
standard X3D?
Problema di estensioni che limita Vrml nella sua versione
attuale. Attualmente non esiste un modo (a parte l'utilizzo dei
PROTO) per realizzare estensioni alle funzionalità preimpostate.
Se qualcuno volesse aggiungere collision object to object o
ombre dovrebbe realizzare soluzioni proprietarie e,
eventualmente, richiedere una successiva modifica dello
standard.
Cristina Donati
X3D
19
Cosa ha portato a definire il nuovo
standard X3D?
A fronte di queste problematiche il Web3D Consortium ha
lanciato la proposta di definizione di un nuovo standard.
Inizialmente denominato VRML-NG (Next-Generation)
È stato poi ribattezzato X3D, dove la X andrebbe a sottolineare
sia l'aspetto di estendibilità che la sua integrazione con XML, il
nuovo standard per la definizione di contenuti per il web.
Cristina Donati
X3D
20
Caratteristiche
X3D ha un ricco insieme di caratteristiche per sostenere
applicazioni come ingegneria e visualizzazione scientifica,
presentazioni multimediali, intrattenimento e titoli didattici, pagine
web e mondi virtuali condivisi. L'insieme di caratteristiche X3D
include:
grafica 3D – geometria poligonale, geometria parametrica, trasformazioni
gerarchiche, illuminazione, materiali e multi-pass/multi-stage texture.
grafica 2D
Animazione
Interazione di utente
Navigazione
Oggetti definiti dall'utente
Scripting
Rete di servizi
Simulazione fisica: animazione Humanoid; geospatial datasets; integrazione
con protocolli Distributed Interactive Simulation (DIS)
Cristina Donati
X3D
21
Caratteristiche
Una caratteristica importante di file X3D è la capacità di
comporre scene includendo e riportando altre scene tramite
l'hyperlinking. Ad esempio, se consideriamo il file earth.wrl,
specifica un mondo che contiene una sfera che rappresenta la
terra, possiamo includere riferimenti ad altri file X3D
rappresentativi delle città sulla terra (per esempio, file
paris.wrl).
L'inclusione di file gerarchici permette la creazione di mondi
arbitrariamente grandi e dinamici. Quindi, X3D assicura che
ogni file sia descritto completamente dagli oggetti contenuti in
esso.
Cristina Donati
X3D
22
Caratteristiche
X3D è stato creato con l'intenzione di essere usato e
distribuito sul web.
Diversi meccanismi e oggetti rendono possibile e
supportano questo obiettivo:
in-lining di altri file X3D o VRML;
hyperlinking ad altri file;
utilizzo di formati standard per altri file
accesso ai mondi X3D da parte di programmi esterni che
utilizzano SAI (scene authoring interface)
definizione di differenti codifiche delle funzionalità
astratte per soddifare svariati utilizzi.
Cristina Donati
X3D
23
Caratteristiche chiave
X3D integra XML
X3D è intercambiabile: supporta geometria, animazioni,
tessiture e accensioni
X3D è estensibile: i componenti possono essere aggiunti
per estendere le funzionalità di applicazioni e servizi, esiste
un set di “Interchange” con script e di proto nodes, ma ne
possono essere aggiunti di nuovi
Cristina Donati
X3D
24
X3D è definito: set standardizzati di
estensioni per soddisfare gli specifici bisogni
delle applicazioni
X3D è basato su VRML: include le capacità
e gli sviluppi del VRML97
X3D è proiettato su diverse applicazioni:
dai cellulari ai supercomputer
Cristina Donati
X3D
25
X3D è tempo reale: grafica di alta qualità,
tempo reale, interattività e inclusione di audio e
video come dati 3D.
X3D è conforme: rende facile costruire
implementazioni prive di bug e consistenti
Cristina Donati
X3D
26
Mercati coinvolti
Il consorzio web 3D focalizza la propria attenzione su tre mercati principali e su
diversimercati secondari.
MERCATI PRINCIPALI:
CAD - (CDF)
L’iniziativa open standards X3D CAD si occupa di proporre ai consumatori l’accesso ai dati
tecnici 3D, integrati nelle loro comuni applicazioni desktopo. Dal lato professionale,
nell’ingegneria ad esempio, X3D renderà possibile creare nuovi profitti, aumentare la
produttività e tagliare i costi grazie all’accesso a dati grafici, animazioni, materiali e
texture. L’aumento di valore nell’area CAD ridurrà I costi delle altre aree. Le applicazioni si
possono riscontrare in diverse aree: visualizzazione cliente, comunicazione del design,
insegnamento, apprendimendo, documentazione tecnica, vendite e marketing e supporto
al cliente.
Cristina Donati
X3D
27
Mercati coinvolti
Medical - MedX3D
Cristina Donati
L'iniziativa medica X3D sta sviluppando uno standard
aperto
interoperabile
per
la
rappresentazione
dell'anatomia umana basata su input generati da una
larga varietà di modalità immagine.
Questo consentirà di esportare le immagini in file
consentendone l'utilizzo sia ai medici che agli studenti sui
loro computer.
Radiologhi e medici potranno dare risultati e anamnesi ai
loro pazienti su CD-ROMS consentendo loro di esaminarli
nella privacy casalinga. Se un paziente si è sottoposto a
diversi tipi di esami questi possono essere visti e
registratidando a medico e paziente un chiaro punto di
vista della situazione clinica. I ricercatori potranno
esportare i dati da diversi tipi di equipaggiamento
fondendoli in una coerente struttura di dati 3D che
potranno essere usati sia per l'educazione del paziente,
per la diagnosi e per la preparazione chirurgica.
X3D
28
Mercati coinvolti
Visual Simulation (XMSF)
Extensible Modeling and Simulation Framework
(XMSF) è destinato a sostenere l'interoperabilità
verso la gamma di modelli e simulazioni
includendo metodi costruttivi, virtuali e reali.
Utilizza X3D e XML Web services per dar vita a una
nuova generazione di simulazioni distribuite.
Cristina Donati
X3D
29
Mercati coinvolti
Geospatial
Education
Technical Training and Documentation
Entertainment and Games
Cristina Donati
X3D
30
Architettura
Archittettura component-based che supporta la creazione di
diversi profili che possono essere individualmente
supportati.
I componenti possono essere singolarmente estesi o
modificati aggiungendo nuovi livelli, o nuovi componenti
possono essere aggiunti introducendo nuove
caratteristiche, ad es. lo streaming. Attraverso questo
meccanismo i vantaggi delle specifiche possono diffondersi
velocemente perchè lo sviluppo in un'area non rallenta
quello delle altre.
Cristina Donati
X3D
31
Architettura
L'architettura X3D descrive l'interazione fra contenuti
multimediali 2D e 3D e applicazioni. Contiene sia elementi
dichiarativi (quali oggetti e e struttura delle relazioni fra oggetti)
che procedure (codice eseguibile). X3D stabilisce una gerarchia
di oggetti rappresentando lo spazio temporale della grafica 3D
e la scena che può essere dinamicamente modificata tramite
diversi meccanismi.
X3D include il supporto per un ricco set di caratteristiche
grafiche 2D e 3D, animazioni, interazioni utente e navigazione
nello spazio 3D.
Cristina Donati
X3D
32
Architettura
Gli autori di contenuti X3D iniziano generalmente scrivendo un file
X3D o una stringa contenente lo stato iniziale dell'applicazione,
contenente gli statements dichiarativi e procedurali che descrivono
il suo comportamento.
Un file X3D può essere:
puramente dichiarativo, descrivendo i comportamenti in termine di oggetti
e di collegamenti fra le proprietà degli stessi
puramente procedurale, con elementi visivi e di comportamento costruiti
dinamicamente come parti dell'applicazione eseguita.
Spesso una scena è una combinazione di entrambe.
Browser è un programma che implementa X3D runtime environment
Generator o authoring tool è un programma che genera contenuti X3D per il
runtime.
Cristina Donati
X3D
33
Architettura
The scene graph
La struttura fondamentale di X3D è scene graph, che descrive
gli elementi visivi e comportamentali (nodes) e le loro relazioni
reciproche. X3D scene graph è un grafo orientato aciclico.
Ogni nodo può contenere uno o più nodi figli, e così via. Un
nodo figlio può avere più di un nodo padre. Non sono permessi
cicli: un nodo non può avere se stesso come antenato nello
scene graph. In aggiunta a questa relazione gerarchica, i nodi
possono referenziarsi a vicenda, ad esempio un nodo può
contenere come campo un puntatore a un altro nodo.
Cristina Donati
X3D
34
Architettura
Runtime environment
Mantiene lo stato dello scene graph, restituire la scena quando
necessario, ricevere input da una varietà di risorse, quali ad
esempio sensori, ed eseguire cambiamenti sullo scene graph
rispondendo alle istruzioni del sistema comportamentale.
Gestisce il ciclo di vita degli oggetti.
Coordina il processo degli eventi
Gestisce l'interoperabilità fra il browser X3D e l'applicazione
host per la consegna dei file, hyperlinking, integrazione delle
pagine e accesso esterno programmatico.
Cristina Donati
X3D
35
Architettura
Network delivery
I contenuti X3D sono progettati per diffondersi nel World Wide Web e
nelle reti a banda larga utilizzando protocolli standard di trasporto, MIME
content type identification, e indirizzamento tramite URL.
Inlining
Tecnica tramite cui è possibile comporre una scena X3D assemblando sul
sistema client per opera del browser diversi file scaricati separatamente.
Questa tecnica permette la creazione di contenuti modulari e riutilizzabili,
migliorando l'esperienza dell'utente grazie alla riduzione del tempo di
risposta successivamente al caricamento della scena iniziale.
Hyperlinking
caratteristica che consente di attaccare URL agli oggetti, queste saranno
caricate dal browseral click dell'utente sull'oggetto.
Cristina Donati
X3D
36
Profili, componenti, livelli
X3D è una specifica complessa e per gestire la complessità ha
adottato un'architettura modulare.
Contrariamente al VRML, che richiedeva l'adozione dell'intero
pacchetto di caratteristiche compliance, X3D permette agli
sviluppatori di supportare un sottoinsieme delle specifiche (Profiles),
composti da blocchi modulari di funzionalità (Components).
Non tutti i contenuti richiedono le stesse qualità di visualizzazione e le
stesse performance, pertando X3D consente alle specifiche di essere
supportate con differenti qualità del servizio (Levels).
Unendo profili, componenti e livelli otteniamo diverse gamme di
confomant implementations a seconda della piattaforma e
dell'applicazione di cui abbiamo bisogno.
Cristina Donati
X3D
37
Profili, componenti, livelli
PROFILES
Sottoinsieme delle specifiche X3D per incontrare le esigenze di applicazioni,
piattoforme e mercati.
Ogni profilo rappresenta un insieme di caratteristiche volte a soddisfare le
esigenze.
Per esempio Interchange profile per scambiare contenuti fra authoring
system: contiene le caratteristiche richieste per specificare geometria,
gruppi, apparenza e animazioni, ma non contiene l'interattività, i controlli di
navigazione, lo scripting e le altre caratteristiche contenute nella specifica
X3D.
Per semplificare l'implementazione o ridurre la memoria richiesta la
descrizione di un profilo deve contenere specifiche restrizioni su certe
caratteristiche, quali la limitazione delle dimensioni degli degli array ad
esempio. Browser e authoring tool sono considerati conformi a un
particolare profilo se non implementano l'intera specifica X3D.
Cristina Donati
X3D
38
Profili, componenti, livelli
COMPONENTI
Le capacità dell'X3D sono definite da blocchi distinti di
funzionalità o componenti. I componenti sono divisi in gruppi
quali Geometry, Grouping, Lighting, Texturing, Pointing Device
Sensors, e Navigation. Rispettando le specifiche necessarie al
contenuto i componenti possono essere mescolati, se il browser
supporta i componenti richiesti non avrà problemi a restituirli.
I Component possono essere supportati a diversi livelli, o
qualità di servizio. Qualsiasi X3D component assegna uno
schema di numerazione dei livelli a seconda della qualità di
servizio da essi fornita, un alto livello indica la presenza (o
assenza)
di
determinate
caratteristiche,
semantiche
maggiormente definite e più severe richieste di conformità.
Cristina Donati
X3D
39
Profili, componenti, livelli
I contenuti e le applicazioni devono specificare il profilo
richiesto e i componenti che devono essere supportati e a quale
livello.
Un browser X3D può usare le informazioni degli header del file
per caricare solo i profili o i componenti richiesti e caricare
dinamicamente i nuovi moduli dei programmi se i contenuti
della scena richiedono componenti aggiuntivi non disponibili sul
client.
Se un profilo, un componente o un livello non è specificato il
browser utilizzerà i valori di default.
Cristina Donati
X3D
40
Application programmer
interfaces (APIs)
X3D fornisce un ricco set di APIs, che forniscono alla scena l'accesso
all'esecuzione. Le APIs offrono estensioni delle funzionalità per i
browser e l'integrazione di risorse interne ed esterne per generare
comportamenti dinamici.
L'accesso può essere interno -usato per creare elementi
personalizzati dentro lo scene graph
o esterno -connettendo al programma elementi esterni alla scena,
per esempio collocati su un applicazione host quale il web browser.
X3D APIs sono specificate come un set di servizi indipendenti dal
linguaggio nella Interface Definition Language (IDL). I servizi delle
API X3D sono limitate a differenti e popolari linguaggi di
programmazione e di scripting, incluso Java e ECMAScript, e
interoperabili con componenti tecnologici quali COM, DOM and
CORBA.
Cristina Donati
X3D
41
Data encodings
I contenuti e le applicazioni X3D possono essere codificate in
diversi formati.
L'ISO 19775 contiene alcune specifiche al riguardo, definendo tre
formati concreti di codifica:
Extensible Markup Language (XML)
Virtual Reality Modeling Language (VRML97) utf-8
Binary
Questi possono esser a loro volta compressi utilizzando gzip oppure
non compressi.
I browser e i generators possono supportare uno o tutti i formati di
codifica, a seconda delle necessità delle applicazioni e delle richieste di
conformità di uno specifico componente o profilo.
Cristina Donati
X3D
42
Field
Field è una proprietà o un attributo di un nodo.
Ci sono due classi generali di field:
che contengono un singolo valore (dove un valore può
essere un singolo numero, un vettore, o un'immagine). Il
loro nome inizia per SF
che contengono una lista ordinata di multipli valori. Se field
ha zero valori, il valore è vuoto ma continua a essere
rappresentato. Il loro nome inizia con MF.
Cristina Donati
X3D
43
Conformità
Di un file X3D
Come primo elemento contiene X3D header statement
Tutte le entità sono contenute all'interno della specifica funzione della
corrispondente entità dell' ISO/IEC 19775 e il file X3D segue le
relazioni definite dalla grammatica e dalla sintassi.
La sequenza delle entità segue le relazioni specificate dall'ISO/IEC
19775 riproducendo la struttura da esso specificata.
Tutti i field values nel file X3D seguono le relazioni specificate
dall'ISO/IEC 19775 producendo la struttura specificata dalla stesso.
Nessun nodo nel file X3D è diverso da quello specificato per il profilo
applicabile, a meno che sia richiesto per la codifica o per quelli definiti
da entità PROTO o EXTERNPROTO.
Il file X3D è codificato secondo le regole dell'ISO/IEC 19776.
Non rientra nei comportamenti descritti come undefined dall' ISO/IEC
19775.
Cristina Donati
X3D
44
Conformità
Di un generatore
È conforme all'ISO/IEC 19775 se tutti i file X3D da esso
generati sono sintatticamente corretti e soddisfano le richieste
della conformità dei file X3D.
Cristina Donati
X3D
45
Conformità
Di un browser
È capace di leggere qualsiasi file X3D conforme al profilo
supportato dal browser
Implementa le funzionalità specificate per tutte le abstract
interfaces
Presenta le caratteristiche grafiche e audio dei nodi X3D in
qualunque file X3D conforme alle al profilo applicabile.
Gestisce correttamente l'interazione utente e generazione
di eventi come specificato per il profilo applicabile.
Soddisfa i requisiti minimi di supporto per browser inerenti
al profilo applicabile come elencati dalle relative tabelle.
Cristina Donati
X3D
46
Browser
Il browser si occupa dell'interpretazione, dell'esecuzione e
della presentazione del file X3D, mostrando le figure e i suoni
presenti nello scene graph. Questa presentazione è nota come
virtual world e la navigazione ha luogo tramite l'utente.
Viewer è la posizione e l'orientamento del mondo, e i browser
forniscono paradigmi di navigazione quali walking o flying per
consentire all'utente il movimento nel mondo virtuale.
Cristina Donati
X3D
47
Browser
Oltre alla navigazione, il browser fornisce una serie di meccanismi che
consentono all'utente l'interazione con il mondo tramite i sensor nodes
definiti nello schema gerarchico della scena. I sensori rispondono
all'interazione con l'utente tramite oggetti geometrici nel mondo, il
movimento attraverso il mondo e il passare del tempo. Inoltre, Scene
Access Interface (SAI) fornisce meccanismi per prendere gli input
dell'utente e modificare il viewpoint corrente.
Gli autori possono anche usare linguaggi di programmazione o script,
vincolati al SAI, per implementare il loro algoritmo di navigazione.
La visualizzazione degli oggetti geometrici nel mondo X3D segue il
modello concettuale sviluppato per riprodurre le caratteristiche fisiche
della luce. X3D lighting model descrive quindi come l'apparenza e la
luce nel mondo si combinano per creare i colori visualizzati.
Cristina Donati
X3D
48
Browser
Cortona (Parallel Graphics)
Contact (blaxxun)
Piveron/CosmoPlayer (Nexternet)
Octagon free player (Octaga)
Xj3D (Yumetech)
Flux (Media Machines)
Cristina Donati
X3D
49
Development Tools
Text Editor
XML Editors
X3D-Edit
VizX3D
VRML-X3D Translators
Cristina Donati
X3D
50
The scene graph
Unità base del X3D runtime environment è lo scene graph.
Questa struttura contiene tutti gli oggetti del sistema e le loro
relazioni, che sono contenute su diversi assi dello scene graph.
Le relazioni nello spazio degli oggetti eseguiti sono descritte nella
Transformation hierarchy. Tramite questa gerarchia, infatti,
vengono descritte tutte le parti percebili direttamente del mondo
virtuale.
Le connessioni fra valori (routes) e flusso di eventi sono descritte
nel Behavior graph.
Cristina Donati
X3D
51
The scene graph
Root nodes -nodi radiceUn file X3D può avere zero o più nodi radice. I nodi radice
sono definiti dala dichiarazione dei nodi, dalla
dichiarazione di uso o dalla dichiarazione dei PROTO.
Cristina Donati
X3D
52
Runtime
environment
Mantiene lo stato corrente dello scene graph
Processa le scene occorrenti
Riveve input dai sensori, o da altre fonti
Esegue i cambiamenti sullo scene graph rispondendo alle istruzioni
del sistema comportamentale
Gestisce il ciclo di vita degli oggetti, inclusi quelli predefiniti (built-in
objects quali SFVec3F3D per valori vettoriali, Cylinder per i geometry
nodes...), quelli definiti dagli utenti (creazione di nuovi nodi tramite
meccanismi di prototyping, i quali diventano poi parti del runtime
environment comportandosi esattamente come i nodi built-in) e gli
script
Coordina il processo degli eventi
Gestisce l'interazione fra browserX3D e applicazione host per la
consegna
Gestisce l'hyperlinking, l'integrazione delle pagine e l'accesso a
programmi esterni
Cristina Donati
X3D
53
Object model
Tutti gli oggetti in X3D derivano dal tipo base “X3DObject”
Caratteristiche di un oggetto:
Type name (Backround, SFVec3F, MFColor, SFGroup) unico in tutto il file e per i
nodi creati dall'autore non si possono usare i type name dei nodi built-in (se così
fosse otterremmo undefined come risultato)
Zero o più field
Implementation ovvero la definizione per ogni oggetto dei modi di reagire ai
cambiamenti delle proprietà dei field, delle ulteriori proprietà modificate a causa
di tali cambiamenti, e come tutto ciò avrà effetto sull'esecuzione
Se un oggetto deriva da un nodo X3D deve avere altre caratteristiche aggiuntive:
Un set di eventi che è in grado di ricevere e spedire
Un nome che verrà poi utilizzato dagli altri statement per richiamare lo
specifico nodo istanziato o per posizionare il nodo internamente alla scena
Cristina Donati
X3D
54
Object model
Esistono diversi modi di implementazione dei nodi, i nodi built-in
sono disponibili agli autori senza descrizioni aggiuntive.
Profili e componenti differenti hanno diversi set di Object built-in
Prototypes object sono gli oggetti creati dall'autore tramite PROTO
o EXTERNPROTO statements. Aggiungono un nuovo tipo di oggetto
disponibile solo durante il ciclo di vita della sessione nella quale
sono caricati.
Native node extentions sono gli oggetti aggiunti usando
EXTERNPROTO statament, con implementazione scritta in
un'estensione (linguaggio) supportata, quale Java o C++. una volta
aggiunte hanno la stessa accessibilità e ciclo di vita degli oggetti
definiti dagli autori.
55
Cristina Donati
X3D
Object model
Ciclo di vita degli oggetti
I nodi sono creati, usati ed eventualmente distrutti.
Un nodo è considerato in vita se una o più di queste
condizioni sono vere:
1.
2.
3.
4.
il nodo è un nodo radice della scena
il nodo è collegato da valori a un nodo in vita
il nodo è collegato a uno script in vita
esiste un collegamento esterno al nodo
Cristina Donati
X3D
56
Prototype
semantics
La semantica prototype è utile e serve ogni volta che voglio creare
un nuovo nodo o oggetto.
EXTERNPROTOTYPE definisce un nuovo tipo di nodo come PROTO,
ma implemetando il nodo esternamente e non partendo da valori di
default dati, è, infatti, l'implementazione a definire i propri defaut.
Gli statement di EXTERNPROTO possono anche riferirsi a URL di file
VRML, consentendo la creazione di librerie di definizioni PROTO
riutilizzabili, che i browser dovrebbero riconoscere dall'argomento in
fondo all'URL “#name” che indica lo statement PROTO per “name”
in un dato file VRML.
Cristina Donati
X3D
57
Prototype
semantics
#VRML V2.0 utf8
PROTO Gold [] { Material { ... } }
PROTO Silver [] { Material { ... } }
#VRML V2.0 utf8
EXTERNPROTO GoldFromLibrary []
"http://.../materials.wrl#Gold"
...
etc.
...
Un materiale da
questa libreria
può essere
usato così:
Shape {
appearance Appearance { material
GoldFromLibrary {} }
geometry ...
Cristina Donati
}
X3D
58
Component
La specifica ISO 19775 contiene la serie dei component suddivisi
in categorie.
Core component
Fornisce le funzionalità minime necessarie a rendere un
documento X3D conforme
Prerequisito di tutti gli altri componenti X3D
Fornisce costrutti astratti quali X3DNode,
X3DPrototypeInstance, X3DRoute, X3DScene...
Cristina Donati
X3D
59
Component
Time component
Il browser controlla il passare del tempo in un mondo tramite
il TimeSensors che genera eventi.
Alcuni browser possono accelerare o rallentare il tempo, ma
generalmente quello generato dai TimeSensor si avvicina a
quello reale. Un'implementazione ideale di X3D dovrebbe
generare un numero infinito di campioni per cambiamenti
continui, ognuno dei quali dovrebbe essere processato
immediatamente.
Nodi dipendenti dal tempo sono AudioClip, MovieTexture e
TimeSensor ad esempio. Questi sono eseguiti in cicli e alla
fine di ognuno viene attribuito un valore a loop, in caso sia
true l'esecuzione continua durante il ciclo successivo, se il
valore attribuito è false l'esecuzione si ferma.
Cristina Donati
X3D
60
Component
Networking component
Include URL, URL relative, protocolli di linguaggio di scripting,
opzioni browser. Ne sono esempio X3DNetworkSensorNode,
X3DUrlObject, Anchor, Inline e LoadSensor
Grouping component
Include una lista di nodi collegati a essa come nodi figli.
Consentono di stabilire relazioni fra nodi collegando i valori
assunti da essi.
Rendering component
Include i nodi che forniscono i servizi di base per costruire
tipi di geometrie. La maggior parte dei componenti presenti nelle
classi Geometry3D component e Geometry2D component sono
implementati come una combinazione di questi nodi.
Cristina Donati
X3D
61
Component
Shape component
Sono associati ai Geometry nodes per definire l’aspetto
della geometria. Sono contenuti nella gerarchia della
trasformazione, per poter osservare dei risultati è
necessario rendere visibile la geometria. Ne sono
esempio: X3DAppearance nodes, X3DMaterialNode,
X3DShapeNode.
Geometry 3D component
Consistono in 4 tipi di nodi: shape, geometry,
geometry property e appearance. Insieme sono
usati per descrivere gli elementi visivi del mondo
X3D.
Cristina Donati
X3D
62
Component
Geometry 2D component
Usa i nodi di shape component ma solo per creare
oggetti piani, ovvero coordinati solo su due dimensioni, x
e y, mentre z ha sempre valore 0
Text component
Il testo in X3D è processato come una geometria. Posso
definirne l’aspetto tramite texture, scegliere il tipo di
carattere, lo stile, la direzione, la giustificazione e la
lingua (codifica, ad esempio cirillico…)
Sound component
Sono preferibili i file .mid e .wav perchè implementati di
norma dai browser, è possibile però scegliere qualsiasi
tipo di file inserendoli tramite reference nodes e URL
Cristina Donati
X3D
63
Component
Lighting component
Contiene i nodi fonti di illuminazione per tutti gli oggetti shape
dando un’approssimazione di come l’ambiente rifletta la luce in
natura. Tutte le luci hanno intensità, colore e intensità ambientale.
Vi sono diversi nodi fonte di illuminazione:
DirectionalLight –illumina solo i nodi discendentiPointLight –definita in raggi, l’illuminazione parte dal centroSpotLight –definita come influenza angolare
Texturing component
Tipi di nodo che specificano la texture di un oggetto. Le texture
maps sono definite da immagini 2D e usate in combinazione ai
lighting component che ne definiscono l’illuminazione fornendo le
giuste gradazioni di colore. Contengono node reference quali:
ImageTexture, MovieTexture, MultiTexture, TextureCoordinate…
Cristina Donati
X3D
64
Component
Navigation component
Ogni scena può avere più viewpoint e la navigazione
consente all’utente di spostarsi attraverso questi. Sono
nodi che rapprentano la capacità di interagire dell’utente
con il mondo. Paradigmi di navigazione sono:
•Walking: adatto per architetture nelle quali si “cammina attraverso”
•Examination: uso comune per le scene con uno o più oggetti in cui
l’utente può cambiare il suo punto di vista da angolature e distanze
diverse
•Flying: è il migliore nel caso di applicazioni che esplorano uno spazio
Geospatial component
Componenti che forniscono il supporto per applicazioni geografiche
e geospaziali. Ne sono esempio i nodi Geocoordinate,
GeoElavationGrid, GeoLocation, GeoLOD, GeoMetadata, GeoOrigin,
GeoTouchSensor, GeoViewpoint, ….
Cristina Donati
X3D
65
Component
Humanoid component
Include i nodi necessari a rappresentare figure umane
tridimensionali animate.
Nurbs (Non-uniform Rational B-Splines) component
Forniscono un metodo efficiente e conveniente di
generare linee curve e superfici complesse.
Scripting component
Descrivono i meccanismi di scripting access
Cristina Donati
X3D
66
Component
Sensor component
Pointing device sensor component
Si attivano puntando o cliccando una geometria
TouchSensor
SphereSensor
PlaneSensor
CylinderSensor
Key device sensor component
Si attivano quando cambia lo stato di una chiave o
termina una stringa
KeySensor
StringSensor
Cristina Donati
X3D
67
Struttura
I file X3D sono pagine XML
La struttura è composta da:
Dichiarazione XML
Dichiarazione DTD
Dichiarazione X3D
Tipo profilo
XMLNS
XSD
Scena
Cristina Donati
X3D
68
Visualizzazione della pagina
tramite Cortona VRML Client
Cristina Donati
X3D
69
Codice XML
Cristina Donati
X3D
70
Come creare un file X3D
Dichiarazione versione XML e tipo di codifica:
<?xml version="1.0" encoding="UTF-8"?>
Il tipo di codifica per questo standard è UTF-8
•Dichiarazione del Doctype
<!DOCTYPE X3D PUBLIC "http://www.web3d.org/specifications/x3d3.0.dtd"
"file:///www.web3d.org/TaskGroups/x3d/translation/x3d3.0.dtd">
Eventuali commenti
ad esempio:
<!--Warning: transitional DOCTYPE in source .x3d file-->
Cristina Donati
X3D
71
Come creare un file X3D
Dichiarazione del profilo X3D dopo l’apertura del tag X3D
<X3D profile="Immersive"
xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance"
xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifica
tions/x3d-3.0.xsd">
Esistono diversi tipi di profili in questo standard:
Core
Interchange
Interactive
MPEG-4 interactive
Immersive
Full
Dichiarazione dei componenti
non sempre è necessaria, serve nel caso in cui i
componenti utilizzati
all’interno del mondo non siano contenuti nel profilo utilizzato.
Del tipo: COMPONENT <name> <level>
Cristina Donati
X3D
72
Come creare un file X3D
Dichiarazione dei metadati sul mondo
<head>
<meta content=“Turn the World.x3d" name="filename"/>
<meta content=“Cristina Donati" name="author"/>
<meta content=“15 Maggio 2004" name="created"/>
<meta content=“24 Maggio 2004" name="revised"/>
<meta
content="Semplice esempio di globo in rotazione e testo in
movimento" name="description"/>
<meta content="http://api.ei.unibo.it/~cristina/TurnTheWorld.x3d"
name="url"/>
<meta content="X3D-Edit,
http://www.web3d.org/x3d/content/README.X3D-Edit.html"
name="generator"/>
</head>
Ovvero dichiarazione delle informazioni circa l’autore, il nome del file, la
data di creazione e modifica,l’URL e il generatore utilizzato ad esempio
Cristina Donati
X3D
73
Come creare un file X3D
Dichiarazione della scena
<Scene>
<WorldInfo info="an introductory scene" title=“Turn the World"/>
Inserimento del viewpoint
<Viewpoint description="Hello, world" orientation="0 1 0 3.14159"
position="0 0 -8"/>
Questo nodo consente la visualizzazione, fornendo posizione e direzione
specifiche in cui la scena può essere vista dall’utente. Nessun oggetto è
visibile senza il suo inserimento.
Orientation è la rotazione (asse, angolo in radianti) del Viewpoint,
relativamente alla direzione dell’asse di default -Z nel sistema locale di
coordinate. Questo è il cambiamento dalla direzione di orientazione di
default (0 0 -1).
Position è la posizione (x, y, z in metri) relativamente al sistema locale di
coordinate.
Cristina Donati
X3D
74
Come creare un file X3D
Navigationinfo
<NavigationInfo type="&quot;EXAMINE&quot; &quot;ANY&quot;"/>
NavigationInfo descrive la visuale e le caratteristiche fisiche dell’avatar
dell’utente. Per l’ispezione di oggetti singoli, l’usabilità viene di solito
migliorata con type="EXAMINE" "ANY“. I tipi di NavigationInfo '"WALK"
"FLY"' supportano la rilevazione di collisioni telecamera-oggetto.
•Transform
<Transform DEF="EarthCoordinateSystem">
Transform è un nodo di raggruppamento che può contenere la maggior
parte di tipi di nodi. Il valore attribuito a DEF indica l’ID del nodo,
pertanto una scelta di carattere descrittivo è la più indicata.
•Definizione di un gruppo
<Group DEF="MiniWorld">
Group è un nodo di raggruppamento, i nodi appartenente ad esso sono i
relativi children nodes.
Cristina Donati
X3D
75
Come creare un file X3D
Ancora nel nostro file X3D non c’è niente di visibile.
•
Introduciamo ora il nodo shape, al quale associeremo dei geometry nodes
che ne definiscano l’aspetto:
<Shape>
<Appearance>
<ImageTexture url="&quot;earth-topo.png&quot; &#10;&quot;earthtopo.gif&quot; &#10;&quot;earth-topo-small.gif&quot;
&#10;&quot;http://www.web3d.org/x3d/content/examples/course/earth
-topo.png&quot;
&#10;&quot;http://www.web3d.org/x3d/content/examples/course/earth
-topo.gif&#10;&quot;http://api.ei.unibo.it/~cristina/earth-topo.png&quot;
&#10;&quot;http://api.ei.unibo.it/~cristina/earth-topo.gif&quot;"/>
</Appearance>
<Sphere/>
anteprima
</Shape>
Una volta aperto il tag shape si va a definire l’aspetto, in questo caso si è scelta una
texture basata su immagine (poteva essere anche un semplice colore) è consigliabile
indicare più URL alternative ove reperirla. Chiuso il tag Appearance immettiamo
l’oggetto cui si applicherà, ovvero una sfera.
Cristina Donati
X3D
76
Come creare un file X3D
Ora passiamo a introdurre un sensore
<TouchSensor DEF="Trigger" description="touch globe to start
animation"/>
</Group>
TouchSensor tiene traccia della posizione e dello stato del dispositivo di
puntamento, e rileva quando l’utente punta una geometria.
Una volta inserito il sensore possiamo chiudere il gruppo usato per
includere la forma e passare a crearne uno nuovo per la scritta animata.
Transform
<Transform DEF="SimpleGeoStationarySatellite" rotation="1 0 0 .3"
scale="0.1 0.3 0.1" translation="0 0 5">
In questo caso il nodo di raggruppamento Transform serve per
raggruppare gli elementi che comporranno la scritta animata.
Cristina Donati
X3D
77
Come creare un file X3D
Come comporre la scritta animata:
<Shape>
<Appearance>
<Material diffuseColor="0.9 0.1 0.1"/>
</Appearance>
<Text string=“Enjoy turn the World !!">
<FontStyle size="3"/>
Anteprima non avendo
</Text>
ancora imposto rotazioni il
</Shape>
testo è fermo dietro la sfera,
</Transform>
anche perché non sono state
</Transform>
create connessioni fra nodi
Dichiaro il nodo shape al cui interno definisco l’aspetto, il materiale in
questo caso un colore, il testo della stringa e lo stile del carattere, a
questo punto posso chiudere il tag shape, transform e anche il
transform aperto per includere il gruppo rappresentante il globo
sommato a quest’ultimo.
Cristina Donati
X3D
78
Come creare un file X3D
Ora devo definire le animazioni, per prima cosa inserisco un
timesensor:
<TimeSensor DEF="OrbitalTimeInterval" cycleInterval="12.0"
loop="true"/>
Questo serve per generare eventi in modo continuo con lo scorrere del
tempo.
Si devono definire ora le animazioni
<ROUTE fromField="touchTime" fromNode="Trigger" toField="startTime"
toNode="OrbitalTimeInterval"/>
<OrientationInterpolator DEF="SpinThoseThings"
key="0.00 0.25 0.50 0.75 1.00" keyValue="0 1 0 0, 0 1 0 1.5708, 0 1
0 3.14159, 0 1 0 4.7123889, 0 1 0 6.2831852"/>
ROUTE connette dei campi di nodi diversi per permettere la trasmissione di eventi
OrientationInterpolator genera una serie di valori di rotazione Il risultato
può essere inviato (tramite ROUTE) all’attributo 'rotation' di un nodo
<Transform> oppure a un altro attributo di tipo Rotation Input tipico
Cristina Donati
X3D
79
Come creare un file X3D
Prosegue la connessione dei campi per permettere la
trasmissione di eventi
<ROUTE fromField="fraction_changed“
fromNode="OrbitalTimeInterval"
toField="set_fraction" toNode="SpinThoseThings"/>
<ROUTE fromField="value_changed"
fromNode="SpinThoseThings"
toField="rotation" toNode="EarthCoordinateSystem"/>
</Scene>
Una volta terminate le connessioni posso chiudere la scena
Una volta chiuisa la scena proseguo chiudendo il file X3D
</x3d>
Vedi output
Vedi codice
Cristina Donati
X3D
80
Come creare un file X3D
Questo è un esempio base di animazione. Utilizzando programmi
con interfaccia grafica, quale Vizx3d, posso creare animazioni di
testo più complesse.
Questo programma considera ogni lettera come elemento a sè e come
gruppo a sè stante.
Vedi output
Vedi codice
Cristina Donati
X3D
81
Alcuni esempi completi
Dal sito del Web3DConsortium:
•
Scacchi su otto livelli
•
Networking rerouting alternates routes
•
Desk lamp
Cristina Donati
X3D
82
Come creare un file X3D
È possibile inserire anche sfondi che rapprensentino il mondo
tridimensionale, vediamone un esempio corredato anche da un
suono *.mid che si ripete in ciclo loop e si riproduce dal
caricamento della pagina.
Vedi output
Vedi codice
Cristina Donati
X3D
83
Alcuni esempi completi
Sul Web:
•
Brat
- http://www.octaga.com/brat.html -
•
Dining Room
- http://www.vizx3d.com/samples/DinningRoom/DinningRoomX3D.html -
•
Gammy World
- http://www.vizx3d.com/samples/GammyWorld/GammyWorld.html -
Cristina Donati
X3D
84
Bibliografia
•
•
•
•
•
•
•
•
Web3D Consortium, www.web3d.org, 30 maggio 2004
It-web3D, http://eureka.lucia.it/vrml/it2000/atti/materiali.html, 30 maggio
2004
Ignazio Locatelli, Paper X3D, reperibile all’indirizzo
http://eureka.lucia.it/vrml/it2000/atti/materiali.html, 30 maggio 2004
Web3D Consortium, www.web3d.org/x3d/content/x3dtooltipsitalian.html,
30 maggio 2004
HTML.IT, www.html.it/vrml/vrml_05.htm, 30 maggio 2004
X3dabstractspecification, ISO-IEC-19775, disponibile all’indirizzo
www.web3d.org/documentation/specification, 30 maggio 2004
Don Brutzman, X3D-Edit Authoring Tool for Extensible 3D Graphics,
presentazione .ppt reperibile all’indirizzo http://www.web3D.org/x3d.html,
30 maggio 2004
Leonard Daly, Introducing X3D Authoring X3D, presentazione .ppt,
scaricata dal sito www.web3d.org, 10 gennaio 2004
Cristina Donati
X3D
85