Massimiliano Piscozzi – Sistemi multimediali.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

UNO STRUMENTO PER INTERAGIRE CON GLI UTENTI DELLE PAGINE WEB
I Frames Fabrizio Sacco.
Introduzione ad XML Mario Arrigoni Neri.
A. Ferrari Alberto Ferrari. Un form html è una sezione di documento che contiene Testo normale e markup Elementi speciali chiamati controlli (checkbox,
A. FERRARI Alberto Ferrari. L'HyperText Markup Language (HTML) (traduzione letterale: linguaggio di marcatura per ipertesti) è un linguaggio usato per.
JavaScript 2. JavaScript nelle pagine web. HTML e XHTML Gli script JavaScript sono utilizzabili sia in pagine HTML che XHTML XHTML impone che il codice.
Capitolo 4 Trasformazioni Geometriche
Introduzione al linguaggio C
Fondamenti di Informatica
XML Prof. Alfredo Pulvirenti. XML XML (eXtensible Markup Language) è un meta linguaggio. Può essere definito come un insieme di regole e convenzioni che.
Università La Sapienza Web programming e programmazione multimediale 1 Web Programming e comunicazione multimediale Lezione 10: PHP.
Il quadrifoglio ovvero quando girano le lampadine Una lampadina può essere considerata sorgente puntiforme isotropa? Obiettivi -indagare il fenomeno -ipotizzare.
Modulo o Form in Html.
Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A
Energia Potenziale Elettrica
Costruzione di Interfacce Lezione 4 Sistemi di riferimento e trasformazioni
Costruzione di Interfacce Lezione 4 Nozioni di geometria per la grafica
Costruzione di Interfacce Lezione 4 Geometria per la grafica
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
GIS on the WEB: un esempio di grafica vettoriale 3D
Animazione di un cubo in Java 3D
Open Inventor In questa lezione impareremo a:
Il linguaggio ASP Lezione 4 Manipolare i database con ASP Lutilizzo dei FORM per laggiunta dei dati.
Esercizio 1 Convertire il seguente DTD (esercizio 1 sui DTD) in XML Schema:
Corso di PHP.
XSLT Trasformazioni XSL Ing. Luca Sabatucci. XSLT Uno dei vantaggi principali nell'utilizzo dell'Extensible Markup Language è la facilità con cui si possono.
Gerarchie Nella lezione precedente abbiamo imparato creare una gerarchia di oggetti usando i gruppi (edit>group)
Test Reti Informatiche A cura di Gaetano Vergara Se clicchi sulla risposta GIUSTA passi alla domanda successiva Se clicchi sulla risposta ERRATA passi.
Illuminamento e Shading
Corso di tecniche della modellazione digitale computer 3D A.A. 2010/2011 docente Arch. Emilio Di Gristina 04.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
BIOINFO3 - Lezione 121 Alter Table Alter table permette di cambiare la struttura di tabelle esistenti. Ad esempio e` possibile aggiungere o cancellare.
Creare pagine web Xhtlm. Struttura di una pagina.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Corso di tecniche della modellazione digitale computer 3D A.A. 2010/2011 docente Arch. Emilio Di Gristina 03.
BIOINFO3 - Lezione 111 CGI-BIN CGI-BIN sono chiamati i programmi la cui esecuzione può essere richiesta attraverso il WEB. Il server web (httpd) della.
OBIETTIVI: Introduzione ai driver ODBC Creazione di alcune tabelle del database Creazione query Creazione report Lezione del 13/11/2009 Bray Francesco.
Il Linguaggio HTML “Profe, ma io a casa l’HTML non ce l’ho!“
Intersezioni e distanze
Intersezioni e distanze
Intersezioni e distanze Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Web Form Presentazione 2.3 Comunicazione integrata in rete| Prof. Luca A. Ludovico.
TAG e CSS Ricalcare la grgilia di impaginazione. UNA STRUTTURA PER I CONTENUTI Oltre a caratterizzare i contenuti (titoli, paragrafi, liste, collegamenti),
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
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.
Virtual Reality Modeling Language
CORSO Di WEB DESIGN prof. Leonardo Moriello
1 Liste e Combo Liste e combo (lista chiusa) hanno una struttura simile: utilizzano gli stessi due tag: e Il primo tag contiene il secondo. deve essere.
Programma delle lezioni LABORATORIO B  Lezione 01: 27/02martedi  Lezione 02: 06/03martedi  Lezione 03: 13/03martedi  Lezione 04:
Internet e HTML Diffusione di informazioni mediante la rete Internet.
Introduzione a Javascript
HTML 4.01 Apogeo. I tag di base Capitolo 1 I tag SintassiEsempi:
Tecnologie di InternetDocument Type Definition Dott. Nicola Dragoni Document Type Definition  Document Type Definition (DTD)  Documento XML valido 
Tag FRAMESET. I frame sono un particolare tipo di struttura HTML, che consente di suddividere la finestra del browser in diversi riquadri distinti. Un'insieme.
PROGETTO… Internet Providers, registrazione del dominio Costruire una home page … e renderla visibile sul Web.
Creazione di pagine per Internet Brevi note a cura di Emanuele Lana
I tag di intestazione. I tag di intestazione sono: e.
Lezione 6: Form.  In alcuni documenti HTML può essere utile creare dei moduli (form) che possono essere riempiti da chi consulta le pagine stesse (es.
XML (eXtensible Markup Language). XML è stato progettato per descrivere dati HTML è stato progettato per visualizzare dati XML (eXtensible Markup Language)
Access Breve introduzione. Componenti E’ possibile utilizzare Access per gestire tutte le informazioni in un unico file. In un file di database di Access.
Progetto WELL-FIR Manuale Utente del Web GIS Versione 0.1.
Massimiliano Piscozzi –
Massimiliano Piscozzi –
Massimiliano Piscozzi –
Transcript della presentazione:

Massimiliano Piscozzi – Sistemi multimediali

Riassunto lezione precedente Sintassi XML –Tag case-sensitive –Tag di apertura e chiusura –Tag correttamente innestati –Caratteri speciali –... <!DOCTYPE X3D PUBLIC " Struttura di un file X3D-XML Nodi principali di X3D (specifiche e codifica XML) –Transform –Shape –Appearance –Material –Nodi derivati da X3DGeometryNode

Trasformazioni e pivot point d Creazione di una primitiva geometrica nel centro del sistema di coordinate locale Utilizzo di due trasformazioni geometriche in modo da posizionare il pivot point al centro della base del cilindro

Esercizio Creazione di un piano –Box: 10m x 1cm x 10m Creazione di una colonna –Raggio: 30cm –Altezza: 2.5m –Appoggiata sul piano –Pivot point nella base Clonazione della colonna –Posizionamento nel piano di varie istanze della colonna

Nodo NavigationInfo (1) Descrive quali paradigmi di navigazione abilitare: –Walk –Examine –Fly –... Descrive le caratteristiche fisiche dellavatar –Dimensioni dellavatar rilevamento collisioni Abilita o disabilita una sorgente luminosa direzionale diretta nella direzione di osseravzione Limite di visibilità E un nodo derivato da X3DBindableNode –Può essere attivo solo un oggetto di quel tipo

Nodo NavigationInfo (2) Esempi – NavigationInfo : X3DBindableNode{ SFBool [in] set_bind SFTime [out] bind_time SFBool [out] isBound MFString [in,out] type[EXAMINE ANY] SFFloat[in,out]speed1.0 SFBool [in,out] headlightTRUE MFFloat [in,out] avatarSize[ ]... } Attenzione! La lista dei valori è racchiusa da singoli apici: I singoli valori sono racchiusi da doppi apici:

Nodo Viewpoint (1) Permette di definire dei punti di vista: –Posizione rispetto al sistema di coordinate del nodo padre –Direzione dello sguardo Permette di associare ad un punto di vista una descrizione: –Menu dei punti di vista nel browser X3D Definisce lampiezza del campo visivo Definisce un centro di rotazione per il modo EXAMINE E un nodo derivato da X3DBindableNode –Può essere attivo solo un oggetto di quel tipo

Nodo Viewpoint (2) Esempi –<Viewpoint description= Dall&apos;alto position= orientation= /> – Viewpoint : X3DBindableNode{ SFBool [in] set_bind SFTime [out] bind_time SFBool [out] isBound SFString [in,out] description SFVec3f[in,out]position SFRotation[in,out] orientation SFFloat [in,out] fieldOfViewpi / 4... } &apos;

Nodo Viewpoint (3) Il punto di vista è definito attraverso gli attributi: –Position: posizione nel sistema di coordinate locale –Orientation: rotazione del vettore direzione di osservazione, inizialmente diretto lungo –z Per stabilire in modo più semplice un punto di vista è consigliabile ricorrere alle trasformazioni geometriche y x z Direzione di osservazione d <Transform DEF="TargetPoint" translation="..." rotation="..."> <Viewpoint description="Punto di vista" position="0 0 d"/> Posizione viewpoint –Il nodo Transform TargetPoint rappresenta il punto osservato dal Viewpoint –Spostando e ruotando TargetPoint è possibile modificare la direzione di osservazione, la quale punterà sempre al centro del sistema di coordinate di TargetPoint

Esercizio Viewpoints definiti attraverso posizione e orientamento Viewpoints inseriti in trasformazioni geometriche Impostazione dei metodi di navigazione –Provare a disabilitare la headlight: la scena diventa completamente nera poiché non sono state definite delle sorgenti luminose

Illuminazione (1) 3 tipi di luci –DirectionalLight : raggi paralleli generati da una sorgente luminosa ad inifinita distanza –PointLight: sorgente luminosa puntiforme, attenuazione –SpotLight: sorgente luminosa puntiforma (faretto), attenuazione DirectionalLight : X3DLightNode{ SFFloat [in,out] ambientIntensity0 SFColor [in,out] color1 1 1 SFFloat [in,out] intensity1 SFVec3f[in,out] direction SFBool [in,out] onTRUE... }

Illuminazione (2) Attenuazione: 1/max(a + b × r + c × r 2, 1) PointLight : X3DLightNode{ SFFloat [in,out] ambientIntensity0 SFVec3f[in,out]attenuation1 0 0 SFColor [in,out] color1 1 1 SFFloat [in,out] intensity1 SFVec3f[in,out] location0 0 0 SFFloat[in,out]radius100 SFBool [in,out] onTRUE... } SpotLight : X3DLightNode{ SFFloat [in,out] ambientIntensity0 SFVec3f[in,out]attenuation1 0 0 SFColor [in,out] color1 1 1 SFFloat [in,out] intensity1 SFVec3f[in,out] location0 0 0 SFVec3f[in,out] direction SFFloat[in,out]radius100 SFFloat[in,out]beamWidthpi/2 SFFloat[in,out]cutOffAnglepi/4 SFBool [in,out] onTRUE... }

Anchor Permette di creare dei link attivabili cliccando sui suoi oggetti figli: –Link a file distribuiti sulla rete e a viewpoint di scene X3D url = fileName url = fileName.x3d#viewpointName url = #viewpointName Permette di specificare dei parametri al Browser –keyword=value (ex: target = name_of_frame) Anchor: X3DGroupNode{ MFNode [in] addChildren MFNode [in] removeChildren MFNode [in] children SFString[in,out] description MFString [in,out] url[] MFString [in,out] parameter[]... }

Animazioni time-based Timers –Sensori che generano eventi al passare del tempo Interpolatori –Interpolazione lineare fra: Posizioni Rotazioni Colori Scalari... –Definiscono un insieme di valori chiave (posizioni, colori,...) associati a valori compresi nellintervallo [0,1] 01 01

Nodo TimerSensor (1) TimerSensor : X3DTimeDependentNode, X3DSensorNode{ SFBool [in,out] enabledTRUE SFTime [in,out] cycleInterval1 SFBool [in,out] loopFALSE SFTime [in,out] startTime0 SFTime[in,out]stopTime0 SFTime[in,out] pauseTime0 SFTime [in,out] resumeTime0 SFFloat[out]fraction_changed SFTime[out]cycleTime SFTime[out]time SFTime[out]elapsedTime SFBool[out]isActive SFBool[out]isPaused... } –Il passare del tempo è basato su cicli temporali –E possibile stabilire in che momento far partire e fermare il timer –Il timer genera un evento fraction_changed: valore compreso tra 0 (inizio del ciclo) e 1 (fine del ciclo)

Nodo TimeSensor (2) Inizialmente un TimeSensor è inattivo: –Viene attivato impostando loop a true –Oppure impostando appropriatamente il valore di startTime Il TimeSensor si disattiva al primo dei seguenti eventi: –Raggiungimento della fine di un ciclo e loop=false –now >= stopTime, se stopTime >= startTime t startTime stopTime loop = true isActive = true cycleInterval

Nodo TimeSensor (2) Inizialmente un TimeSensor è inattivo: –Viene attivato impostando loop a true –Oppure impostando appropriatamente il valore di startTime Il TimeSensor si disattiva al primo dei seguenti eventi: –Raggiungimento della fine di un ciclo e loop=false –now >= stopTime, se stopTime >= startTime t startTime stopTime loop = false isActive = true isActive = false cycleInterval

Nodo TimeSensor (2) Inizialmente un TimeSensor è inattivo: –Viene attivato impostando loop a true –Oppure impostando appropriatamente il valore di startTime Il TimeSensor si disattiva al primo dei seguenti eventi: –Raggiungimento della fine di un ciclo e loop=false –now >= stopTime, se stopTime >= startTime t startTime loop = true isActive = true isActive = false cycleInterval stopTime Alla fine di ogni ciclo viene generato un evento cycleTime: utile per la sincronizzazione di animazioni Gli eventi isActive=true e isActive=false vengono generati allinizio e alla fine dellintervallo temporale

Nodi interpolatori PositionInterpolator : X3DInterpolatorNode{ SFFloat [in] set_fraction MFFloat [in,out] key[] MFVec3f [in,out] keyValue[] SFVec3f [out] value_changed... } Analogamente per: –ColorInterpolator –OrientationInterpolator –ScalarInterpolator –... key keyValue set_fractionvalue_changed

Route Il tag permette di connettere due campi di due nodi distinti al fine di descrivere il behaviour graph Sintassi: I campi fromNode e toNode contengono i nomi dei due nodi –essi devono quindi essere nominati attraverso lattributo DEF I campi specificati negli attributi fromField e toField devono essere dello stesso tipo Il campo specificato nellattributo fromField deve essere –o di tipo outputOnly –o di tipo inputOutput Il campo specificato nellattributo toField deve essere –o di tipo inputOnly –o di tipo inputOutput

Route: esempio TimeSensor cycleTime fraction_changed · · · PositionInterpolator set_fraction key · · · Transform translation · · · Animazione della traslazione di un nodo transform keyValue value_changed <TimeSensor DEF="Timer" cycleInterval="5" loop="true"/> <PositionInterpolator DEF="Interpolatore" key=" " keyValue="0 0 0, 0 3 0, 3 0 0, 0 0 0"/> <Transform DEF="Trasformazione"> Nodi Figli <ROUTE fromField="fraction_changed" fromNode="Timer" toField="set_fraction" toNode="Interpolatore"/> <ROUTE fromField="value_changed" fromNode="Interpolatore" toField="set_translation" toNode="Trasformazione"/>

Esercizio (1) Animazione (in contemporanea) della rotazione di un parallelepipedo, del colore di una sfera e della traslazione di un cono TimeSensor cycleInterval · · · loop fraction_changed OrientationInterp. set_fraction · · · key keyValue value_changed ColorInterpolator set_fraction · · · key keyValue value_changed PositionInterp. set_fraction · · · key keyValue value_changed Transform rotation · · · Transform translation · · · Material diffuseColor · · ·

Esercizio (2) <Material diffuseColor="1 0 0"/> Creazione dei tre oggetti distribuiti lungo lasse X <Material DEF="sphereMaterial" diffuseColor="1 0 1"/> <Cone bottomRadius="1" height="2"/> <Material diffuseColor="0 0 1"/> Creazione di un TimeSensor

Esercizio (3) Creazione dei 3 interpolatori Routing degli eventi

TouchSensor Rileva quando lutente punta ad un oggetto figlio del nodo padre del sensore Utile soprattutto per la creazione di pulsanti TouchSensor : X3DTouchSensorNode{ SFString [in,out] description SFBool[in,out] enabledTRUE SFVec3f [out] hitNormal_changed SFVec3f [out] hitPoint_changed SFVec3f[out]hitTexCoord_changed SFBool[out]isActive SFBool[out]isOver SFTime[out]touchTime... }

Esercizio Spostamento di una piccola sfera sulla superficie di un cono Creazione della sfera Creazione del cono e del sensore Routing dellevento <ROUTE fromNode="sensor" fromField="hitPoint_changed" toNode="sphereTransform" toField="set_translation"/>

Esercizio (1) Creazione di un pulsante per far apparire un oggetto TouchSensor touchTime · · · Transform · · ·... TimeSensor cycleInterval loop · · · startTime ScalarInterpolator set_fraction · · · key keyValue value_changed Material diffuseColor · · · fraction_changed children

Esercizio (2) Creazione del pulsante Creazione delloggetto da far apparire <Material DEF="sphereMaterial" diffuseColor="1 1 0" transparency="1"/>

Esercizio (3) Creazione del timer Creazione dellinterpolatore <ScalarInterpolator DEF="interpolator" key="0 1" keyValue="1 0"/> Routing degli eventi <ROUTE fromNode="touchSensor" fromField="touchTime" toNode="timer" toField="startTime"/> <ROUTE fromNode="timer" fromField="fraction_changed" toNode="interpolator" toField="set_fraction"/> <ROUTE fromNode="interpolator" fromField="value_changed" toNode="sphereMaterial" toField="set_transparency"/>

PlaneSensor : X3DDragSensorNode{ SFString[in,out]description SFBool [in,out] autoOffsetTRUE SFVec3f[in,out] offset0 0 0 SFBool[in,out] enabledTRUE SFVec2f [in,out] minPosition0 0 SFVec2f[in,out]maxPosition SFBool[out]isActive SFBool[out]isOver SFVec3f[out]trackPoint_changed SFVec3f[out]translation_changed... } Altri sensori (1) Sensori per il dragging: –PlaneSensor: dragging rispetto ad un piano (z=0 nel sistema di coordinate locali) –SphereSensor: dragging di tipo rotazionale rispetto ad un punto (il centro del sistema di coordinate locale) –CylinderSensor: dragging di tipo rotazionale rispetto allasse Y del sistema di coordinate locali x y z minPosition maxPosition

Altri sensori (2) SphereSensor : X3DDragSensorNode{ SFString[in,out]description SFBool [in,out] autoOffsetTRUE SFVec3f[in,out] offset0 0 0 SFBool[in,out] enabledTRUE SFBool[out]isActive SFBool[out]isOver SFVec3f[out]trackPoint_changed SFRotation[out]rotation_changed... } CylinderSensor : X3DDragSensorNode{ SFString[in,out]description SFBool [in,out] autoOffsetTRUE SFVec3f[in,out] offset0 0 0 SFBool[in,out] enabledTRUE SFFloat [in,out] minAngle0 SFFloat[in,out]maxAngle -1 SFFloat[in,out]diskAngle pi/12 SFBool[out]isActive SFBool[out]isOver SFVec3f[out]trackPoint_changed SFRotation[out]rotation_changed... } x y z x y z diskAngle

Esercizio Utilizzo del nodo SphereSensor per ruotare un oggetto Creazione di un cubo Creazione di un cubo e di un sensore sphereSensor ad esso associato Routing dellevento <ROUTE fromNode="sensor" fromField="rotation_changed" toNode="boxTransform" toField="set_rotation"/>

Definizione di nuovi nodi E possibile definire nuovi tipi di nodo a partire da nodi esistenti (built-in o definiti dallutente) PROTOTYPE –Nome –Interfaccia –Corpo Zero o più campi: –Nome –Tipo –Tipo di accesso (input/output per il routing degli eventi) –Valori di default Uno o più nodi: –Deve esistere un nodo radice –Il nodo radice determina quando il prototipo può essere istanziato A differenza di USE il prototipo può possedere dei campi il cui valore può variare per ogni istanza

colore Esempio di prototipo Prototipo Colonna caratterizzato da un colore e un raggio Transform · · · Shape geometry · · · Appearance · · · appearance Cylinder radius · · · Material diffuseColor · · · children material raggio Colonna

Prototipi (1) Codifica in XML della dichiarazione di prototipi <field name=... type=... accessType=... value=.../> Interfaccia costituita da campi <connect nodeField=... protoField=.../> Corpo costituito da dichiarazioni di nodi - Il collegamento tra i campi dei nodi e i campi dellinterfaccia avviene attraverso i tag e

Prototipi (2) Codifica in XML della creazione di istanze di un prototipo... Lista dei valori dei campi Se il valore di un campo non viene specificato esso assume il valore di default (specificato nellinterfaccia o in base alle specifiche X3D)

Prototipi: esempio <field name="raggio" accessType="inputOutput" type="SFFloat" value="0.3"/> <field name="colore" accessType="inputOutput" type="SFColor" value=" "/>