Massimiliano Piscozzi –

Slides:



Advertisements
Presentazioni simili
Introduzione ad XML Mario Arrigoni Neri.
Advertisements

XML Prof. Barbara Pernici Politecnico di Milano. Introduzione a XML.
Fabio Massacci Programmazione ad Oggetti
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Virtual Reality Modeling Language
Table View. Problemi ricorrenti Una situazione ricorrente è quella in cui il controller potrebbe avere un’altezza superiore a quella dello schermo. In.
Giuditta Cantoni, 4 E S.I.A I DATABASE. Definizione databese In informatica, il termine database, banca dati o base di dati (a volte abbreviato con il.
POLITECNICO DI MILANO FACOLTA’ DI INGEGNERIA SEDE DI CREMONA TESI DI DIPLOMA IN INGEGNERIA INFORMATICA RELATOREAUTORI Prof. Vittorio TrecordiDemicheli.
CORSO elementare su DATABASE Applicativo utilizzato OpenOffice 3.0.
Titolo della Slide: 28pt Arial, Grassetto, Rossso R 240 | G0 | B0 Lunghezza massima consigliata: 2 linee Numero della slide E’ elemento fisso e non modificabile:
Presentazione della piattaforma e - learning MOODLE a cura di Davide Afretti Bologna, 24 aprile 2013.
PGDay 2009 FSGateway Ing. Torello Querci Resp. Architetture SW - Negens S.r.l. 4 Dicembre 2009, Pisa.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Basi di dati - Fondamenti
Sistemi e Applicazioni per l’Amministrazione Digitale
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Massimiliano Piscozzi –
Fotogrammetria - Lezione 3
Html =HyperText Markup Language
Hyper Text Markup Language
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Corso di Laurea in Ingegneria Informatica
Linguaggi di markup: CSS
GeoGebra QuizFaber Formazione tra pari
Programmazione per la Musica | Adriano Baratè
Terza Lezione → Navigare nel file System → parte 2
Il Binding Nicolò Sordoni.
Condividere dati di Excel tramite l'esportazione in un sito di SharePoint
Regione Lombardia Data Base Topografico
Massimiliano Piscozzi –
Organizzazione fisica
I FILES AD ACCESSO SEQUENZIALE
* Il Sistema Operativo GNU/Linux * Sistema Operativo e Applicazioni
Tipo di dato: array Un array è un tipo di dato usato per memorizzare una collezione di variabili dello stesso tipo. Per memorizzare una collezione di 7.
I tag essenziali.
DTD Document Type Definition per XML
Creazione di pagine per Internet
A cura di Ivano Stranieri
Corso di Ingegneria del Web A A Domenico Rosaci 1
Introduzione a JavaScript
OBJECT ORIENTED DATABASE
Access.
Introduzione alla normalizzazione
Basi di dati - Fondamenti
Programmare.
HYPER TEXT MARK-UP LANGUAGE
Corso di Laurea in Ingegneria Informatica
Massimiliano Piscozzi –
SQL per la modifica di basi di dati
ADO Per gestire i database con tecnologia ASP si utilizzano strumenti ADO (ActiveX Data Objects): un'architettura che fornisce oggetti.
Introduzione agli Algoritmi e alle Strutture Dati
Alberi n-ary Lezioni di C.
File System ed Input/Output
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
OpenLayers Client di mappe “non solo” WMS
DOM Document Object Model.
8. Altri oggetti JavaScript
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Gli archivi e le basi di dati
MAYA BASICS.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Liceo Scientifico «P.S.Mancini» Avellino
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Unità 1 Programmi base.
Ing. Maurizio Bassani LOGISTICA - Capitolo 3 - Modulo 1
Array e Stringhe Linguaggio C.
Transcript della presentazione:

Massimiliano Piscozzi – piscozzi@dico.unimi.it Sistemi multimediali Massimiliano Piscozzi – piscozzi@dico.unimi.it

Links utili Web 3D Consortium Viewers e plugin Specifiche ed esempi: www.web3d.org Viewers e plugin Windows Octagon Free Player: www.octaga.com BS Contact VRML 6.1: www.bitmanagement.de OpenWorlds: www.openworlds.com Flux v.1.1.: www.mediamachines.com Linux FreeWrl: freewrl.sourceforge.net Octagon Free player e Bs Contact VRML 6.1 consigliati Consigli su installazione (ActiveX)

Riassunto lezione precedente X3D/VRML files, streams Node A Node B Node C Node D Node E Node F Node G XML In file .X3D definiamo la scena virtuale attraverso una serie di istruzioni dichiarative; esse sono codificate in XML e permettono di creare gli oggetti nello scene graph e di organizzarli fra loro Abbiamo 3 nodi radice.... DAG Transformation hierarchy Connessioni tra campi (non distinguibili nello schema) Le connessioni fra campi settate in modo opportuno definiscono dei comportamenti nella scena virtuale Scene graph

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

Componenti, profili Componente Profilo Insieme di oggetti X3D e servizi che fornisce delle funzionalità fra loro collegate Ex: Rendering component, Sound component, Scripting component Specifica uno o più livelli  qualità dei servizi Profilo Insieme di funzionalità e requisiti che devono essere supportati affinché un’implementazione sia conforme a tale profilo Ex: Core profile, Interactive profile, Full profile Definito come un insieme di componenti e di corrispondenti livelli Abbiamo finora parlato di oggetti.. Vediamo come sono organizzati fra loro (oggetti di vari tipi, ma alcuni hanno caratteristiche comuni).................. Profile: conforme  ricordiamoci che X3D è uno standard che può essere implementato in modi diversi  ciò permette implementazioni incrementali I profili vanno specificati anche nei nostri file X3D

Profili BaseVRML97 Interchange Interactive Extensible Full0x NURBS Text Extrusion Switch Sensor Spot light Script, PROTO Key Sensor Extensible Full0x

Struttura astratta di X3D Header (dipendente dalla codifica utilizzata): Identificazione dello standard supportato (“X3D”) Identificazione del sistema di codifica dei caratteri (“UTF-8”) Dichiarazione del profilo Dichiarazione dei componenti aggiuntivi (opzionale) Dichiarazione dei metadata (opzionale) Non modificano lo scene graph Specificano informazioni aggiuntive Dichiarazioni per la creazione e l’organizzazione dei nodi nello scene graph Mondo X3D concettualmente organizzato nel seguente modo Saranno le parti che identificheremo in un file X3D e che andremo a scrivere creando un nostro file X3D

Esempio di file X3D-XML Dichiarazione XML, codifica caratteri <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE X3D PUBLIC "http://www.web3d.org/x3d/content/x3d-3.0.dtd"> <X3D profile="Full"> <head> <meta name="filename" content="SimpleTest.x3d"/> <meta name="description" content="Simple X3D example"/> <meta name="created" content="25 aprile 2004"/> </head> <Scene> <Transform> <Shape> <Cylinder/> <Appearance> <Material diffuseColor="0.6 0.3 0.1"/> </Appearance> </Shape> </Transform> </Scene> </X3D> Dichiarazione XML, codifica caratteri File DTD necessario per la codifica XML Profilo Metadata Tag <Scene> che racchiude tutte le dichiarazioni necessarie a creare oggetti nello scene graph Non aspettatevi riga per riga quello che ho detto prima.... ANALISI XML!!!!

XML Linguaggio di marcatura (mark-up language) aperto e basato su testo Fornisce informazioni di tipo strutturale e semantico relative ai dati veri e propri <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Rubrica SYSTEM "C:/rubrica.dtd"> <Rubrica> <Persona> <Nome> Marco </Nome> <Telefono> 339-1111111 </Telefono> <Email> marco@provider.it </Email> </Persona> <Nome> Chiara </Nome> <Telefono> 339-2222222 </Telefono> <Email/> </Rubrica> E’ un metalinguaggio che permette di creare dei linuaggi di markup personalizzati DTD: insieme di regole che stabiliscono rigorosamente la struttura di un tipo di documento

XML: tipi di documento <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE X3D PUBLIC "http://www.web3d.org/x3d/content/x3d-3.0.dtd"> <X3D profile="Full"> <head> <meta name="filename" content="SimpleTest.x3d"/> <meta name="description" content="Simple X3D example"/> <meta name="created" content="25 aprile 2004"/> </head> <Scene> <Transform> <Shape> <Cylinder/> <Appearance> <Material diffuseColor="0.6 0.3 0.1"/> </Appearance> </Shape> </Transform> </Scene> </X3D> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE Rubrica SYSTEM "C:/rubrica.dtd"> <Rubrica> <Persona> <Nome> Marco </Nome> <Telefono> 339-1111111 </Telefono> <Email> marco@provider.it </Email> </Persona> <Nome> Chiara </Nome> <Telefono> 339-2222222 </Telefono> <Email/> </Rubrica>

XML: sintassi (1) Tutti i tag devono essere racchiusi in un tag radice Tutti i tag devono chiudersi Tag di apertura e chiusura: <tag>...</tag> Tag vuoto: <tag/> I tag sono case sensitive <myTag> e <MYTAG> non sono equivalenti I valori degli attributi devono essere racchiusi da virgolette <myTag height=“5” description=“BlaBlaBla”> I tag devono essere corretamente innestati fra loro Corretto: <firstTag><secondTag>...</secondTag></firstTag> Non corretto: <firstTag><secondTag>...</firstTag></secondTag>

XML: sintassi (2) Caratteri speciali &  & <  < >  &rt; ‘  &apos; “  " Commenti compresi fra i tag <!-- e --> <!-- Questo è un commento --> CDATA compresi fra i tag <![CDATA[ e ]]> <![CDATA[ Testo non analizzato dal parser “XML” ]]>

Nodi principali <Transform> <Shape> <Cylinder/> <Appearance> <Material diffuseColor="1.0 0.4 0.0"/> </Appearance> </Shape> </Transform> Transform: crea un sistema di coordinate locale per operare delle trasformazioni geometriche Shape: crea una forma composta da un oggetto geometrico e da un aspetto Cylinder: una delle varie primitive geometriche Material: definizione delle proprietà della superficie Transform: per adesso nessuna traformazione; utile racchiudere in un transform ogni oggetto geometrico che si vuole gestire independentemente

Nodo Transform (1) Transform : X3DGroupingNode { MFNode [in,out] children [] [X3DChildNode] MFNode [in] addChildren [X3DChildNode] MFNode [in] removeChildren [X3DChildNode] SFVec3f [in,out] center 0 0 0 SFVec3f [in,out] translation 0 0 0 SFRotation [in,out] rotation 0 0 1 0 SFVec3f [in,out] scale 1 1 1 SFRotation [in,out] scaleOrientation 0 0 1 0 ... } Transform children addChildren removeChildren center rotation translation scale scaleOrientation · · · Esaminare nei dettagli la specifica: SF... MF... Valori iniziali, campi solo input come eventi in entrata, interfacce astratte ScaleOrientation di tipo Rotation La presenza di un attributo del tipo SFNode o MFNode indica che questo nodo sarà padre di altri nodi Definisce un sistema di coordinate locale per i nodi contenuti in children Effettua una trasformazione geometrica data da: Un ridimensionamento (anche non-uniforme) rispetto ad un punto arbitrario Una rotazione rispetto ad un asse e ad un punto arbitrari Una traslazione

Nodo Transform (2) Regole generali: Transform : X3DGroupingNode { MFNode [in,out] children [] [X3DChildNode] MFNode [in] addChildren [X3DChildNode] MFNode [in] removeChildren [X3DChildNode] SFVec3f [in,out] center 0 0 0 SFVec3f [in,out] translation 0 0 0 SFRotation [in,out] rotation 0 0 1 0 SFVec3f [in,out] scale 1 1 1 SFRotation [in,out] scaleOrientation 0 0 1 0 ... } <Transform DEF = “” USE = “” center = “0 0 0” translation = “0 0 0” rotation = “0 0 1 0” scale = “1 1 1” scaleOrientation = “0 0 1 0” ... > Nodi discendenti da X3DChildNode (campo children) </Transform> Esaminare nei dettagli la specifica: SF... MF... Valori iniziali, campi solo input come eventi in entrata, interfacce astratte ScaleOrientation di tipo Rotation La presenza di un attributo del tipo SFNode o MFNode indica che questo nodo sarà padre di altri nodi Regole generali: I campi di tipo SFNode o MFNode sono compresi tra il tag di apertura e quello di chiusura Tutti gli altri campi sono definiti come attributi del tag Gli attributi DEF e USE permettono di attribuire un nome al nodo e di instanziarlo successivamente

Esempio <Transform translation=“-2 0 0”> <Transform DEF=“Cilindro Ruotato” rotation=“0 0 1 0.78”> <Shape> <Cylinder/> <Appearance> <Material diffuseColor=“1.0 0.4 0.0”/> </Appearance> </Shape> </Transform> <Transform translation=“2 0 0”> <Transform USE=“Cilindro Ruotato”/> Cilindro Ruotato Cilindro Ruotato ATTENZIONE!!!! Ho usato due Transform per poterne riutilizzare una... In questo caso avrei potuto anche utilizzarne una sola perché l’ordine delle trasformazioni corrisponde a quello desiderato, ma non è sempre così!!!!

Nodo Shape Shape Shape : X3DShapeNode { SFNode [in,out] geometry NULL [X3DGeometryNode] SFNode [in,out] appearance NULL [X3DAppearanceNode] ... } Shape geometry appearance · · · <Shape DEF = “” USE = “” ... > Un nodo discendente da X3DGeometryNode (campo geometry) X3DAppearanceNode (campo appearance) </Shape> Dire che inserire più di un nodo di un tipo tra i tag genera errore!!!! Campo SF.. e non MF..!!!!

Nodo Appearance Appearance Appearance : X3DAppearanceNode{ SFNode [in,out] material NULL [X3DMaterialNode] SFNode [in,out] texture NULL [X3DTextureNode] SFNode [in,out] textureTransform 0 0 1 0 [X3DTextureTransformNode] ... } Appearance material texture textureTransform · · · <Appearance DEF = “” USE = “” ... > Un nodo discendente da X3DMaterialNode (campo material) X3DTextureNode (campo texture) X3DTextureTransformNode (campo textureTransform) </Appearance>

Nodo Material (1) Material Material : X3DMaterialNode{ SFFloat [in,out] ambientIntensity 0.2 SFColor [in,out] diffuseColor 0.8 0.8 0.8 SFColor [in,out] emissiveColor 0 0 0 SFFloat [in,out] shininess 0.2 SFColor [in,out] specularColor 0 0 0 SFFloat [in,out] transparency 0 ... } Material ambientIntensity diffuseColor emissiveColor shininess specularColor transparency · · · <Material DEF = “” USE = “” ambientIntensity = “0.2” diffuseColor = “0.8 0.8 0.8” emissiveColor = “0 0 0” shininess = “0.2” specularColor = “0 0 0” transparency = “0” ... > </Material>

Nodo Material (2) diffuseColor specularColor shininess emissiveColor Dipendente dall’angolo tra la normale e il raggio luminoso incidente specularColor Dipendente dall’angolo tra la direzione dello sguardo e il raggio luminoso riflesso shininess Determina l’ampiezza del riflesso emissiveColor Colore dato da una auto-illuminazione dell’oggetto stesso (indipendente dalle sorgenti luminose) ambientIntensity Fattore moltiplicativo del colore (indipendente dalla posizione delle fonti luminose)

Primitive geometriche (1) Semplici forme geometriche derivate dal nodo X3DGeometryNode e utilizzabili nel nodo Shape: Box : X3DGeometryNode{ SFVec3f [] size 2 2 2 SFBool [] solid TRUE ... } Cone : X3DGeometryNode{ SFFloat [] bottomRadius 1 SFFloat [] height 2 SFBool [] bottom TRUE SFBool [] side TRUE SFBool [] solid TRUE ... } È importante capire il posizionamento rispetto agli assi

Primitive geometriche (2) Cylinder : X3DGeometryNode{ SFFloat [] height 2 SFFloat [] radius 1 SFBool [] bottom TRUE SFBool [] top TRUE SFBool [] side TRUE SFBool [] solid TRUE ... } Sphere : X3DGeometryNode{ SFFloat [] radius 1 SFBool [] solid TRUE ... } È importante capire il posizionamento rispetto agli assi Campo solid: se TRUE i poligono si vedono solo in direzione della normale Dato che i campi sono di tipo InputOnly si agirà su Transform per variarne le dimensioni!!!!!!!!!!!!! Esempio!!!!!!!!!!! Commento su PivotPoint Introduzione a NavigationInfo e Viewpoint Tutti i nodi discendenti da X3DGeometryNode hanno un campo solid (SFBool) I campi sono tutti di tipo InitializeOnly