Virtual Reality Modeling Language

Slides:



Advertisements
Presentazioni simili
Moti Circolari e oscillatori
Advertisements

Come si crea un Sito Web a cura del Prof. Sampognaro Giuseppe
Introduzione all’HTML
Gli ipertesti del World Wide Web Funzionamento e tecniche di realizzazione a cura di Loris Tissìno (
JavaScript 8. Altri oggetti JavaScript. history Contiene lelenco delle pagine visitate Sintassi: window.history frame.history history Proprietà length.
Power Point Lezione breve.
(Appunti da Scott Mitchell, James Atkinsons - Active Server Pages 3.0 – ed. Apogeo) Le pagine ASP.
HTML LE PAGINE WEB COME SI SA, INTERNET E UN SISTEMA MONDIALE DI RETI DI COMPUTER CHE PERMETTE DI UTILIZZARE UN SISTEMA DI CONNESSIONE TRA COMPUTER.
PHP.
INTERNET : ARPA sviluppa ARPANET (rete di computer per scopi militari)
NESSUS.
Come creare e gestire siti web con Kompozer, editor HTML
Ordine dei Dottori Commercialisti e degli Esperti Contabili di Ivrea, Pinerolo, Torino1 effettuate le operazioni di generazione dell'Ambiente di sicurezza.
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
Esempi sui CSS.
Architettura del World Wide Web
Dinamica di corpi deformabili basata sulle posizioni
Applicazioni progettuali di grafica computerizzata a.a. 2008/2009 Rendering grafico.
Internet Explorer Il browser.
CORSO DI INFORMATICA LAUREA TRIENNALE-COMUNICAZIONE & DAMS
Fabio Massacci Programmazione ad Oggetti 1 Fondamenti di Informatica per Ingegneria Prof. Ing. Fabio Massacci (A-L) Ing. Enrico Blanzieri (M-Z) Lezione.
Fabio Massacci Programmazione ad Oggetti
PHP – Un’introduzione Linguaggi e Traduttori 2003 Facoltà di Economia
GIS on the WEB: un esempio di grafica vettoriale 3D
Animazione di un cubo in Java 3D
Posta elettronica : per iniziare : per iniziare Primi passi con la posta elettronica Primi passi con la posta elettronica
ASP Lezione 1 Concetti di base. Introduzione ad ASP ASP (che è la sigla di Active Server Pages) è un ambiente di programmazione per le pagine web. La.
Corso di PHP.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
Gerarchie Nella lezione precedente abbiamo imparato creare una gerarchia di oggetti usando i gruppi (edit>group)
WORLD WIDE WEB Il World Wide Web (Web, WWW o W3) è un'architettura software utilizzata per fornire l'accesso e la navigazione ad un insieme molto vasto.
Costruire pagine per il WEB
Riservato Cisco 1 © 2010 Cisco e/o i relativi affiliati. Tutti i diritti sono riservati.
Internet L’essenziale.
Test Reti Informatiche A cura di Gaetano Vergara Se clicchi sulla risposta GIUSTA passi alla domanda successiva Se clicchi sulla risposta ERRATA passi.
VRML97 -Appendice- Cristina Donati 1 VRML97. Il Virtual Reality Modeling Language (VRML) è un formato di file volto alla descrizione degli oggetti interattivi.
HTML Lezione 5 Immagini. URL Un Uniform Resource Locator o URL (Localizzatore di risorsa uniforme) è una sequenza di caratteri che identifica univocamente.
Corso di tecniche della modellazione digitale computer 3D A.A. 2010/2011 docente Arch. Emilio Di Gristina 04.
HTML Lezione 8 I collegamenti ipertestuali (link).
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Creare pagine web Xhtlm. Struttura di una pagina.
Massimiliano Piscozzi – Sistemi multimediali.
I formati nella Computer Grafica
2. Meccanica Fisica Medica – Giulio Caracciolo.
Testi e dispense consigliati
HTML HyperText Markup Language Linguaggio per marcare un’Ipertesto
Prof. Reale Nicola Studentessa Parcesepe Federica
Reactor Prof. F. Corato. Utilizziamo 1 come frame/key.
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Controllare la prospettiva
HTML I Form in HTML5.
Modulo 6 Test di verifica
INTRODUZIONE A JAVASCRIPT
Introduzione a Windows Lezione 2 Riccardo Sama' Copyright  Riccardo Sama'
HTML Gli elementi principali di una pagina Web. Titolo: 2  Attribuisce un titolo alla pagina  Il titolo è visibile nella “barra del titolo” del browser.
Corso Web CSV – Andiamo on-line 1 Andiamo on-line Corso di formazione Elementi base per la costruzione di un sito web.
HTML I tag HTML (parte 1). I tag HTML  I comandi che il browser interpreta  Etichette per marcare l’inizio e la fine di un elemento HTML  Formato e.
Le isometrie.
Clicca e vai..buona navigazione. Conoscere Mind Manager Per iniziare La barra della mappa La barra della formattazione Mappa della formattazione avanzata.
Realizzazione Sito Web
Internet e HTML Diffusione di informazioni mediante la rete Internet.
HTML 4.01 Apogeo. I tag di base Capitolo 1 I tag SintassiEsempi:
1 Corso di idoneità informatica Autore: G. Lorusso URL: Università del Piemonte Orientale.
MySQL Database Management System
Servizi Internet Claudia Raibulet
Massimiliano Piscozzi –
Massimiliano Piscozzi –
Massimiliano Piscozzi –
Transcript della presentazione:

Virtual Reality Modeling Language VRML Virtual Reality Modeling Language

Questi mondi possono essere animati Che cos’è il VRML E’ un linguaggio di programmazione che consente la simulazione di mondi virtuali tridimensionali. E’ possibile descrivere ambienti virtuali contenenti oggetti, sorgenti luminose, immagini, suoni, filmati. Questi mondi possono essere animati presentare interattività e link a URL remoti

E’ costituito da file .wrl, semplici file di testo (caratteri ASCII) Che cos’è il VRML E’ costituito da file .wrl, semplici file di testo (caratteri ASCII) E’ un formato standard che descrive scene tridimensionali. Un file VRML pubblicato su Internet è accessibile da qualsiasi macchina indipendentemente dalla piattaforma (richiede solo un plug-in).

Che cos’è il VRML Esempi: http://www.bbc.co.uk/history/3d/iron/ironbridge.wrl http://www.bbc.co.uk/history/3d/viking/ribble.wrl http://www.bbc.co.uk/history/3d/bridge/lon_bridge.wrl http://www.bbc.co.uk/history/3d/abbey/abbey.wrl http://www.bbc.co.uk/history/3d/fort/fort.wrl http://www.smeenk.com/vrml/elevators/elevatorshigh.wrl http://collections.ic.gc.ca/rondes/vrml/parcours/wrl/final.WRL http://www.int3d.com/data/savoye.wrl http://www.int3d.com/scenes3d.html http://www.int3d.com/models3d.html http://www.3dcafe.com/asp/textures.asp http://www.3dcafe.com/asp/vrml.asp http://www.ocnus.com/models/models.html http://eureka.lucia.it/vrml/p_indice.html

Cortona 3.1- Parallel Graphics Contact 5.0- Blaxxun I player per il VRML Informazioni e plug-in reperibili presso il sito virtuworlds (http://www.virtuworlds.com) Ad esempio: Cortona 3.1- Parallel Graphics Contact 5.0- Blaxxun OpenWorlds Horizons - DRaW Computing Viscape 5.6x Cosmo Player 2.1.1 - Computer Associates WorldView - Computer Associates Cortona VRML Client: sul CD cortvrml.exe

I player per il VRML Controlli per muoversi, ruotare, fare una panoramica, ecc.

I tools per lo sviluppo del VRML 1. Editor: VRMLPad Sul CD: vpad20.exe

I tools per lo sviluppo del VRML 2. Authoring: Internet Space Builder Sul CD: isben.exe

I tools per lo sviluppo del VRML 3. Authoring: CiteMap Sul CD: 3DCMB10a.exe

I tools per lo sviluppo del VRML 4. Authoring: VGE Sul CD: VGE.exe

appearance Appearance { material Material { emissiveColor 1 0 0 } } Il primo file VRML obbligatoria nodo Shape due campi: appearence geometry colore raggio #VRML V2.0 utf8 # sfera VRML  Shape { appearance Appearance { material Material { emissiveColor 1 0 0 } } geometry Sphere { radius 1 }

Il primo file VRML Quindi: Shape è un nodo che può contenere due campi: appearance e geometry. In ciascuno di questi campi si può dichiarare un nodo: - per appearance si può dichiarare il nodo Appearance; per geometry se ne possono dichiarare diversi: Box, Cone, Cylinder, ElevationGrid, Extrusion, IndexedFaceSet, IndexedLineSet, PointSet, Sphere, Text Ciascuno di questi nodi può contenere diversi campi (ad esempio: Sphere può contenere solo radius, Appearence può contenere material, texture e textureTransform). Per material si può definire il nodo Material, che può contenere diversi campi, tra i quali emissiveColor. I campi emissiveColor e radius sono quelli per i quali si definisce il valore.

Il primo file VRML

Vedi Node Reference (sul cd) Esempio: Shape { I nodi e i loro campi Esistono molti nodi (node): alcuni (come Shape) possono esistere indipendentemente, altri (come Sphere) solo come “property node” di un campo (field) di un altro nodo. Vedi Node Reference (sul cd) Esempio: Shape { appearance NULL # exposedField SFNode geometry NULL # exposedField SFNode }

1. Provare il primo esempio con VRMLPad. Esercizi 1. Provare il primo esempio con VRMLPad. #VRML V2.0 utf8 # sfera VRML  Shape { appearance Appearance { material Material { emissiveColor 1 0 0 } } geometry Sphere { radius 1 } 2. Cambiare il colore. 3. Cambiare le dimensioni.

4. Modificare la figura geometrica: Box { size x y z } Esercizi 4. Modificare la figura geometrica: Box { size x y z } Cone { bottomRadius r height h } Cylinder { radius r n.b.: al posto di x, y, z, r, h si devono usare dei valori numerici 5. Nel field geometry si può usare anche un nodo Text: Text { string “Buongiorno” } x y z

Posizione e orientamento degli oggetti Gli oggetti vengono automaticamente posizionati nell’origine degli assi (0,0,0). Inserendo più oggetti nella stessa pagina questi vengono tutti posizionati nello stesso modo. Es.: Shape { appearance Appearance { material Material { emissiveColor 1 0 0 } } geometry Cylinder { radius 2 height } material Material { emissiveColor 0 1 0 } geometry Sphere { radius 2.5 }

Posizione e orientamento degli oggetti Per spostare un oggetto in un’altra posizione si deve inserirlo in un nodo Transform: Transform { translation 0 2 0 children [ Shape { appearance Appearance { material Material { emissiveColor 1 0 0 } } geometry Sphere { radius 2.5 } ] Shape è contenuto come argomento del campo children (parentesi quadre)

Posizione e orientamento degli oggetti Lo spostamento di un oggetto dipende da: I tre valori indicano lo spostamento lungo gli assi x, y e z. translation 2 2 0 y 2 x 2 z

Posizione e orientamento degli oggetti E’ possibile orientare un oggetto: nel nodo Transform è possibile usare un campo rotation: Transform { rotation 1 1 0 –1,56 children [ Shape { appearance Appearance { material Material { emissiveColor 1 0 0 } geometry Box { size 2 2 2 } ] Valori del campo rotation: i primi tre indicano l’asse (o gli assi) attorno a cui effettuare la rotazione, il quarto l’angolo di rotazione (in radianti)

Posizione e orientamento degli oggetti Esempi di rotazione x y z rotation 1 0 0 .78 rotation 1 0 0 -.78 rotation 0 0 1 -.78 rotation 1 1 0 .78

Posizione e orientamento degli oggetti E’ possibile utilizzare translation e rotation in un unico Transform E’ possibile anche inserire una Transform in una Transform E’ possibile realizzare un oggetto complesso, composto da più oggetti, alcuni dei quali spostati (o ruotati) con una Transform e inserire il tutto entro un’altra Transform che lo ruoti o lo sposti Transform { translation …… rotation ….. children [ ……… ] }

Realizzare i seguenti oggetti complessi Esercizi Realizzare i seguenti oggetti complessi Realizzare e ruotare i seguenti oggetti complessi

Creare oggetti complessi Per realizzare oggetti più complessi è necessario usare i nodi IndexedLineSet e IndexedFaceSet. Esempio (un quadrato): x y z Shape { appearance Appearance { material Material {emissiveColor 1 .5 0 } } geometry IndexedLineSet { coord Coordinate { point [ 0 0 0, 0 1 0, 1 1 0, 1 0 0, 0 0 0] coordIndex [ 0 1 2 3 0 ] 1 2 3 Coordinate dei punti Numero dei vertici

Creare oggetti complessi x y z Esempio (una piramide): 4 Shape { appearance Appearance { material Material {emissiveColor 1 .5 0 } } geometry IndexedFaceSet { coord Coordinate { point [-1 0 1, 1 0 1, 1 0 -1, -1 0 -1, 0 2 0 ] coordIndex [ 0, 3, 2, 1, -1 0, 1, 4, -1 1, 2, 4, -1 2, 3, 4, -1 3, 0, 4, -1 ] 2 3 1 Coordinate dei 5 punti Elenco delle facce (5), elenco dei vertici (in senso antiorario) delle facce (-1 conclude la faccia)

Le luci Negli esempi finora non erano presenti luci: gli oggetti erano visibili perché c’era il campo emissiveColor (che è luminoso). E’ possibile invece utilizzare un materiale diffuseColor, aggiungendo un nodo DirectionalLight: Per le direzioni: si riferiscono agli assi (x y z), 1 nella direzione dell’asse, -1 nella direzione opposta DirectionalLight { direction 1 -1 0 } … material Material { diffuseColor 1 0.5 0 }

Le luci Un altro nodo “luminoso” è SpotLight, che deve anche essere posizionato (per default è nell’origine): Transform { translation 3 0 0 children [ SpotLight { direction 1 1 0 location -2 1 2 radius 12 beamWidth 1 cutOffAngle 1 } ] Posizione dello spot

Le luci Un altro nodo “luminoso” è PointLight, che emette in tutte le direzioni: PointLight { radius 6 location 0 0 0 }

verificarne la visibilità. Esercizi Riprendere alcuni file degli esercizi precedenti e modificare il materiale degli oggetti, usando: diffuseColor (colori a piacere) verificarne la visibilità. Aggiungere quindi delle luci di tipo diverso, posizionate a piacere.

come ImageTexture si può usare un file .gif o .jpg Le superfici Per rendere più realistiche le superfici è possibile utilizzare il campo texture di Appearence: come ImageTexture si può usare un file .gif o .jpg Shape { appearance Appearance { material Material { } texture ImageTexture { url "mondo.jpg“ } } geometry Sphere { radius 2 }

Si possono usare anche immagini trasparenti (.gif) e animate: Le superfici Si possono usare anche immagini trasparenti (.gif) e animate: Shape { appearance Appearance { material Material { } texture MovieTexture { url “movie.mpg“ loop TRUE startTime 1 } …

scale (modifica la dimensione dell’immagine) Le superfici Per una corretta gestione delle Texture è possibile utilizzare un campo del nodo Appearence: textureTransform, che contiene il nodo TextureTransform con i campi: scale (modifica la dimensione dell’immagine) rotation (ruota l’immagine) center (posizione del centro di rotazione translation (trasla l’immagine) Esempio: textureTransform TextureTransform { scale 2 2 }

Senza textureTransform Le superfici Senza textureTransform scale 2 2 scale 2 1 center 0 0 translation 0.2 0.2 rotation .78

Lo spazio Per creare spazi più realistici si possono dare dei colori allo sfondo, oppure utilizzare immagini, utilizzando il nodo BackGround, che ha i seguenti campi: BackGround { backUrl [ “nome”] bottomUrl [ “nome”] frontUrl [ “nome”] leftUrl [ “nome”] rightUrl [ “nome”] topUr [ “nome”] skyAngle [ angoli ] skyColor [ colori ] groundAngle [ angoli ] groundColor [ colori ] } Lo spazio viene considerato come l’interno di un box Lo spazio viene considerato come l’interno di una sfera

Esercizi Riprendere alcuni file degli esercizi precedenti e aggiungere delle texture e degli sfondi.

La navigazione E’ possibile definire diversi punti di vista (gestiti con il menù contestuale) con il nodo Viewpoint: Viewpoint{ position 0 -1.25 7.5 orientation 0 0 0 0 description "Distante" } Posizione dello sguardo Con il nodo NavigationInfo è posssibile definire alcune caratteristiche del “visitatore” del mondo: NavigationInfo { avatarSize [ 3.8, 3, 0.5 ] headlight FALSE speed 1 type "WALK" visibilityLimit 10 } Raggio di collisione, altezza occhi, massimo salto Luce Velocità Modalità di navigazione Limite di visibilità

La navigazione Con il nodo Collision si può evitare che l’utente passi le superfici; il nodo Collision deve contenere tutti gli oggetti che si vuole rendere solidi: Collision { children [ … ] }

Anche Anchor deve contenere tutti gli oggetti attivi: La navigazione Con il nodo Anchor è possibile realizzare link: si possono collegare url anche remoti, aprire altri file .wrl, aprire altri file html in un altro frame, ecc. Anche Anchor deve contenere tutti gli oggetti attivi: Anchor { url “nomefile” description “descrizione” parameter “target=nometarget” children [ … ] }

<embed src=“miofile.wrl" width=100% height=100%> Esercizi Riprendere alcuni file degli esercizi precedenti e effettuare le seguenti modifiche: aggiungere dei viewpoints rendere solide le superfici Creare un file .wrl che funzioni da menu per aprire altri file .wrl Inserire un file .wrl che funzioni da menu in una pagina html, e utilizzarlo come menu per aprire altre pagine html in un altro frame. n.b.: per inserire un file .wrl in una pagina html: <embed src=“miofile.wrl" width=100% height=100%>

DEF e USE Con il comando DEF è possibile realizzare dei nuovi nodi (in genere oggetti complessi), da duplicare poi con USE. Ad esempio: DEF Casa […] Transform { translation -12 0 30 children [ USE Casa ] }

Animazione Per realizzare un’animazione è necessario per prima cosa introdurre il “tempo”, con il nodo TimeSensor: DEF Tempo TimeSensor { cycleInterval 5 enabled TRUE loop TRUE startTime 1 } E’ necessario poi poter modificare i valori di qualche campo degli oggetti (es. posizione, colore, ecc.). Un nodo Interpolator si preoccupa di calcolare valori diversi di un campo (ad es. la posizione) in funzione dei valori di un altro campo (di solito il campo time di un nodo di tipo TimeSensor)

CoordinateInterpolator, NormalInterpolator, OrientationInterpolator, Animazione Si possono usare 6 nodi interpolatori per effettuare i cambiamenti dei valori dei campi: ColorInterpolator, CoordinateInterpolator, NormalInterpolator, OrientationInterpolator, PositionInterpolator, ScalarInterpolator Per ciascuno di questi nodi si possono definire i campi key (i tempi del cambiamento, almeno 2), keyvalue (i valori dei punti chiave), set_fraction (riceve il valore di un evento), value_changed (il risultato del cambiamento)

TimeSensor scandisce il tempo Animazione Quindi: TimeSensor scandisce il tempo Un nodo Interpolator fornisce i valori da cambiare Con il comando ROUTE si passa il contenuto di un nodo ad un altro: ROUTE campo sorgente TO campo destinazione

Esempio (una sfera si sposta lungo l’asse x): Animazione Esempio (una sfera si sposta lungo l’asse x): DEF SferaBlu Transform { translation 0 0 0 children [ Shape { appearance Appearance {material Material { diffuseColor 0 0 1 } } geometry Sphere { radius 1.4 } } ] } DEF Tempo TimeSensor { cycleInterval 4 enabled TRUE loop TRUE startTime 1 } DEF Posizione PositionInterpolator { key [0 .5 1] keyValue [-3 0 0, 3 0 0, -3 0 0] } ROUTE Tempo.fraction_changed TO Posizione.set_fraction ROUTE Posizione.value_changed TO SferaBlu.set_translation Tempo scandisce il tempo; Posizione fornisce i tempi del cambiamento e i valori di posizione ROUTE mette in comunicazione Tempo con Posizione e Posizione con SferaBlu

Realizzare un movimento circolare (quasi). Esercizi Modificare l’animazione precedente in modo da avere un precorso più complesso (più punti nel campo keyValue) e con velocità diverse per i diversi tratti (frazioni di tempo uguali nel campo key e distanze diverse, o viceversa). Realizzare un movimento circolare (quasi). Realizzare un movimento contemporaneo di più oggetti.

Esempio (un orologio): Animazione Esempio (un orologio): Viewpoint { position 0 1.5 2 } # il quadrante DEF orologio Transform { translation 0 1.5 -1 children [ Transform { rotation 1 0 0 1.57 Shape { appearance Appearance { material Material {diffuseColor .55 .55 .60} } geometry Cylinder { radius 1 height .1 } ]

Animazione # sfera che funge da perno per la lancetta dei secondi DEF perno_secondi Transform { children [ Shape { appearance Appearance { material Material { diffuseColor 1 0 0 } } geometry Sphere { radius .05 } # lancetta dei secondi Transform { translation 0 .25 .15 material Material { diffuseColor .75 .25 0 } geometry Box { size .01 .75 .001 } } ] } ] } ] } # i tre sensori di tempo DEF secondi TimeSensor { cycleInterval 60 enabled TRUE loop TRUE } DEF minuti TimeSensor { cycleInterval 3600 DEF ore TimeSensor { cycleInterval 86400 loop TRUE} # i 3 interpolatori DEF rotsec OrientationInterpolator { key [0 .25 .5 .75 1] keyValue [0 0 1 0, 0 0 1 -1.57, 0 0 1 -3.14, 0 0 1 -4.71, 0 0 1 -6.28] DEF rotmin OrientationInterpolator DEF rotore OrientationInterpolator # indirizzamento gli eventi in uscita ROUTE secondi.fraction_changed TO rotsec.set_fraction ROUTE rotsec.value_changed TO perno_secondi.set_rotation