X3D X3D Cristina Donati 1
Percorso Introduzione a X3D Obiettivi di progettazione Un po’ di storia Obiettivi principali della specifica X3D Caratteristiche Mercati coinvolti Architettura Componenti Esempi X3D Cristina Donati 2
Introduzione X3D è uno standard di formato di file potente ed estensibile per descrivere ambienti virtuali tridimensionali distribuiti per la rete. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 5
Introduzione X3D è il successore di VRML (standard ISO -ISO/IEC 14772-1: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. X3D Cristina Donati 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 X3D Cristina Donati 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. X3D Cristina Donati 8
Un po' di storia X3D Cristina Donati 9 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 12
Un po' di storia X3D Cristina Donati 13 PROPOSITI SCADENZA Specification draft 30/04/04 Implementazione browser 08/08/04 Dimostrazione Fine giugno Valutazione Inizio ISO submission I settimana di luglio II round valutazione ISO submission X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 16
Obiettivi principali della specifica X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 20
Caratteristiche X3D Cristina Donati 21 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) X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 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 X3D Cristina Donati 24
X3D è basato su VRML: include le capacità e gli sviluppi del VRML97 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 X3D Cristina Donati 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 X3D Cristina Donati 26
Mercati coinvolti X3D Cristina Donati 27 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. X3D Cristina Donati 27
Mercati coinvolti X3D Cristina Donati 28 Medical - MedX3D 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. Medical - MedX3D X3D Cristina Donati 28
Visual Simulation (XMSF) 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. X3D Cristina Donati 29
Technical Training and Documentation Entertainment and Games Mercati coinvolti Geospatial Education Technical Training and Documentation Entertainment and Games X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 34
Architettura Runtime environment X3D Cristina Donati 35 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. X3D Cristina Donati 35
Architettura X3D Cristina Donati 36 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 38
Profili, componenti, livelli 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à. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 41
Data encodings X3D Cristina Donati 42 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. X3D Cristina Donati 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. X3D Cristina Donati 43
Conformità Di un file X3D X3D Cristina Donati 44 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 47
Browser X3D Cristina Donati 48 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. X3D Cristina Donati 48
Browser Cortona (Parallel Graphics) Contact (blaxxun) Piveron/CosmoPlayer (Nexternet) Octagon free player (Octaga) Xj3D (Yumetech) Flux (Media Machines) X3D Cristina Donati 49
Text Editor XML Editors X3D-Edit VizX3D VRML-X3D Translators Development Tools Text Editor XML Editors X3D-Edit VizX3D VRML-X3D Translators X3D Cristina Donati 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. X3D Cristina Donati 51
Root nodes -nodi radice- The scene graph Root nodes -nodi radice- Un 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. X3D Cristina Donati 52
Runtime environment X3D Cristina Donati 53 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 X3D Cristina Donati 53
Caratteristiche di un oggetto: 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 X3D Cristina Donati 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. X3D Cristina Donati 55
Ciclo di vita degli oggetti 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: 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 X3D Cristina Donati 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. X3D Cristina Donati 57
Prototype semantics #VRML V2.0 utf8 PROTO Gold [] { Material { ... } } PROTO Silver [] { Material { ... } } ... etc. #VRML V2.0 utf8 EXTERNPROTO GoldFromLibrary [] "http://.../materials.wrl#Gold" ... Shape { appearance Appearance { material GoldFromLibrary {} } geometry ... } Un materiale da questa libreria può essere usato così: X3D Cristina Donati 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... X3D Cristina Donati 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. X3D Cristina Donati 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. X3D Cristina Donati 61
Component Shape component Geometry 3D 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. X3D Cristina Donati 62
Component Geometry 2D component Text component Sound component X3D 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 X3D Cristina Donati 63
Component Lighting component Texturing component X3D Cristina Donati 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 discendenti- PointLight –definita in raggi, l’illuminazione parte dal centro- SpotLight –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… X3D Cristina Donati 64
Component Navigation component Geospatial component X3D 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, …. X3D Cristina Donati 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 X3D Cristina Donati 66
Component Sensor component X3D Cristina Donati 67 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 X3D Cristina Donati 67
Struttura Tipo profilo XMLNS XSD I file X3D sono pagine XML La struttura è composta da: Dichiarazione XML Dichiarazione DTD Dichiarazione X3D Tipo profilo XMLNS XSD Scena X3D Cristina Donati 68
Visualizzazione della pagina tramite Cortona VRML Client X3D Cristina Donati 69
Codice XML X3D Cristina Donati 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/x3d- 3.0.dtd" "file:///www.web3d.org/TaskGroups/x3d/translation/x3d-3.0.dtd"> Eventuali commenti ad esempio: <!--Warning: transitional DOCTYPE in source .x3d file--> X3D Cristina Donati 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> X3D Cristina Donati 72
Come creare un file X3D Dichiarazione dei metadati sul mondo X3D <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 X3D Cristina Donati 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. X3D Cristina Donati 74
Come creare un file X3D Navigationinfo Transform <NavigationInfo type=""EXAMINE" "ANY""/> 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. X3D Cristina Donati 75
Come creare un file X3D X3D Cristina Donati 76 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=""earth-topo.png" "earth-topo.gif" "earth-topo-small.gif" "http://www.web3d.org/x3d/content/examples/course/earth-topo.png" "http://www.web3d.org/x3d/content/examples/course/earth-topo.gif "http://api.ei.unibo.it/~cristina/earth-topo.png" "http://api.ei.unibo.it/~cristina/earth-topo.gif""/> </Appearance> <Sphere/> </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. anteprima X3D Cristina Donati 76
Come creare un file X3D Ora passiamo a introdurre un sensore Transform <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. X3D Cristina Donati 77
Come creare un file X3D Come comporre la scritta animata: X3D <Shape> <Appearance> <Material diffuseColor="0.9 0.1 0.1"/> </Appearance> <Text string=“Enjoy turn the World !!"> <FontStyle size="3"/> </Text> </Shape> </Transform> 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. Anteprima non avendo ancora imposto rotazioni il testo è fermo dietro la sfera, anche perché non sono state create connessioni fra nodi X3D Cristina Donati 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 X3D Cristina Donati 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 X3D Cristina Donati 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 X3D Cristina Donati 81
Dal sito del Web3DConsortium: Alcuni esempi completi Dal sito del Web3DConsortium: Scacchi su otto livelli Networking rerouting alternates routes Desk lamp X3D Cristina Donati 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 X3D Cristina Donati 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 - X3D Cristina Donati 84
Bibliografia X3D Cristina Donati 85 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 X3D Cristina Donati 85