Massimiliano Piscozzi – Sistemi multimediali.

Slides:



Advertisements
Presentazioni simili
JavaScript 6. Oggetti e JavaScript. Linguaggio ad oggetti JavaScript è un linguaggio orientato agli oggetti In JavaScript sono presenti oggetti predefiniti.
Advertisements

Classe III A A.s – 2010 Programma di Informatica
Classe III A A.s – 2011 Programma di Informatica 5 ore settimanali (3 laboratorio) Docenti –Prof. Alberto Ferrari –Prof. Alberto Paganuzzi.
PHP.
2/11/2004Laboratorio di Programmazione - Luca Tesei1 Punto della situazione Da dove veniamo, dove andiamo.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Algoritmi e Programmazione
Introduzione al linguaggio C
Fondamenti di Informatica
Fondamenti di Informatica
Università La Sapienza Web programming e programmazione multimediale 1 Web Programming e comunicazione multimediale Lezione 10: PHP.
JAVASCRIPT DIFFERENZA TRA JAVASCRIPT E JAVA TAG LO SCRIPT OGGETTI LE CLASSI FUNZIONE GESTORE DI EVENTI ELEMENTI DEL LINGUAGGI è un vero e proprio linguaggio.
Linguaggio MATLAB: costrutti tipici (IF,WHILE…)
Algebra di Boole ed elementi di logica
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Introduzione al linguaggio C++ 5 lezioni
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab m-file m-file script script Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali.
MATLAB.
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Indipendenza lineare,
MATLAB. …oggi… Programmare in Matlab Programmare in Matlab Funzioni Funzioni Cicli Cicli Operatori relazionali Operatori relazionali Esercizi vari Esercizi.
Creazione di matrici Delimititatore di riga Delimititatore di matrice
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Soluzione Esercizio - Classe Vettore
Introduzione alla programmazione lll
Corso di Informatica A.A
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
GIS on the WEB: un esempio di grafica vettoriale 3D
Le funzioni.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Lezione 2 Programmare in ASP
Corso di PHP.
Javascript 6 Funzioni. Una funzione sarà eseguita in risposta ad un evento o ad una chiamata diretta. Le funzioni possono essere inserite comodamente.
INTRODUZIONE A MATLAB.
Javascript: fondamenti, concetti, modello a oggetti
File ad accesso casuale o random
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
JavaScript Oggetti. Linguaggio a oggetti Alice Pavarani2  JavaScript è Object Oriented  Sono presenti oggetti predefiniti del linguaggio  E’ possibile.
Esercizi.
Anno accademico Le istruzioni di controllo in C.
PHP - PHP: Hypertext Preprocessor. Introduzione PHP (acronimo ricorsivo per "PHP: Hypertext Preprocessor") è un linguaggio di scripting general-purpose.
LABVIEW Sommario Che cosa è uno strumento virtuale (VI) creato con LABVIEW Parti di un VI: pannello frontale diagramma a blocchi Confronto tra il principio.
JavaScript Generalità Cos'è JavaScript?
Introduzione a Javascript
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (II) Istruzioni e strutture di controllo.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
1 PROGRAMMAZIONE IN SHELL The Unix Programming Environment Kernigham - Pike.
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
Tecnologie lato Client: Javascript © 2005 Stefano Clemente I lucidi sono in parte realizzati con materiale tratto dal libro di testo adottato tradotto.
13 ottobre Decisioni F. Bombi 13 ottobre 2002.
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Linguaggio C: Le basi Stefano Cagnoni e Monica Mordonini
Copyright © Istituto Italiano Edizioni Atlas
Eprogram informatica V anno. Introduzione a PHP Introduzione La diffusione di PHP ha avuto un notevole incremento dalla fine degli anni Novanta a oggi,
Massimiliano Piscozzi –
Massimiliano Piscozzi –
Transcript della presentazione:

Massimiliano Piscozzi – Sistemi multimediali

Prototipi (3) La definizione di un prototipo può essere contenuta in un file diverso da quello in cui vengono create le istanze File A File X3D-XML contenente la dichiarazione di uno o più prototipi File B File X3D-XML contenente la dichiarazione di uno o più prototipi File C File X3D-XML contenente la dichiarazione di uno o più prototipi File D File X3D-XML che utilizza istanze di prototipi definiti esternamente Maggiore riusabilità dei nodi definiti dallutente Semplificazione nella scrittura dei file X3D-XML

ExternProtoDeclare La dichiarazione di un prototipo definito esternamente avviene attraverso il tag ExternProtoDeclare Nome utilizzato localmente per la creazione di istanze del prototipo Indirizzo del file in cui è definito il prototipo + nome del prototipo: nomeFile#nomePrototipo FileA.x3d Esempio FileB.x3d... <ExternProtoDeclare name=oggettoEsterno url=FileA.x3d#oggetto/>

Scripting Uno script: –E un nodo facente parte dello scene graph –Contiene un comportamento definito attraverso funzioni scritte in ECMAScript –Può generare eventi Lutilizzo di scripts permette di: –Programmare comportamenti più evoluti rispetto a quelli ottenibili tramite i nodi predefiniti (ex: pulsanti a più stati) –Definire matematicamente delle traiettore (ex: parabole, ellissi) –Automatizzare comportamenti (ex: creazione di un gran numero di istanze di un oggetto) –Convertire eventi (ex: rollOver button) –Modificare dinamicamente lo scene graph e il behaviour graph –...

Nodo Script Per gestire gli eventi in input occorre definire delle funzioni associate ai campi InputOnly o InputOutput Per spedire degli eventi associati ai campi OutputOnly o InputOutput è sufficiente modificarne i valori allinterno delle funzioni... <![CDATA[... ]]> <field name=... type=... accessType=... value=.../> Interfaccia costituita da campi <![CDATA[ ecmascript:...lista funzioni... ]]> Funzioni definite in ECMAScript

ECMAScript (1) Variabili –Linguaggio debolmente tipizzato –Tipi predefiniti: boolean, number, string, object,... Operatori –Unari: ! (NOT), -, ++ (incremento), -- (decremento) –Binari: +, -,*,/,% (modulo) –Relazionali:, =, ==, != –Logici: && (AND), || (OR) Strutture di controllo –Condizionali: if..else, switch –Iterative: for, while, do..while var a; a = 5; print(a); a = Hello World! print(a); if (condition) { statements } else { statements } switch (expr) { case label: statements break;... default: statements } for (expr1; epr2; expr3) { statements } while (condition) { statements } do { statements } while (condition)

ECMAScript (2) Funzioni –Non occorre specificare il tipo del valore restituito Oggetto Array –Array dinamico costituito da elementi di qualsiasi tipo –Proprietà: length Oggetto Math –Oggetto globale: non va istanziato tramite new –Costanti matematiche (proprietà): PI, E, SQRT2, LN2, LN10,... –Funzioni matematiche (metodi): max(), min(), pow(), sqrt(), sin(), cos(), tan(), random() function myFunction(parameters) {... } function somma(a,b) { return (a+b); } var a = new Array(); a[0] = 4; a[1] = BlaBlaBla; for (i=0; i < a.length; i++) { print(a[i]); }

ECMAScript (3) ECMAScript e nodi Script (X3D) –I tipi di dato booleani (SFBool), scalari (SFFloat, SFDouble, SFInt32, SFTime) e le stringhe (SFString) sono rappresentati attraverso i tipi base di ECMAScript (boolean, number, string) –I restanti tipi di dato singoli (SFColor, SFVec3f,...) sono rappresentati attraverso degli oggetti Ex: verde = new SFColor(0,1,0); Ex: origine = new SFVec3f(0,0,0); –I tipi di dato multipli (MFInt32, MFVec3f,...) sono rappresentati attraverso degli array Ex: v = new MFInt32(2,5,1,-3);

ECMAScript (4) ECMAScript e nodi Script (X3D) –Per ogni campo di tipo InputOnly e InputOutput bisogna definire una funzione con lo stesso nome –E possibile definire due funzioni richiamate quando lo script è caricato o eliminato dal Browser: initialize() e shutdown() –La funzione print() permette di scrivere sulla console (debug) –Tramite loggetto globale Browser() è possibile modificare dinamicamente lo scene graph e il behaviour graph Browser.createFromVRMLString(stringVRML) Browser.addRoute(fromNode,fromField,toNode,toField) Browser.deleteRoute(fromNode,fromField,toNode,toField)

Script: esempio Movimento sinusoidale di un cubo TimeSensor cycleInterval loop · · · fraction_changed Script set_fraction value_changed · · · Transform · · · translation <![CDATA[ ecmascript: function initialize() { print(Script inizializzato!); } function set_fraction(value) { value_changed[0] = * value; value_changed[1] = 2 * Math.Sin(value*6.28); value_changed[2] = 0; } ]]> set_fraction(value) oppure set_fraction(value, timestamp)

Button geometry Esempio (1) Creazione di un prototipo di un pulsante a due stati –Lo stato del pulsante deve essere rappresentato dal suo colore (variazione del diffuseColor) –Il pulsante deve illuminarsi al passaggio del mouse (variazione dellemissiveColor) –Il pulsante può avere forme diverse Transform · · · Shape · · · Sphere · · · Appearance · · · Material diffuseColor emissiveColor · · · TouchSensor isOver touchTime · · · Script isOver touchTime · · · diffuseColor emissiveColor

Esempio (2) Dichiarazione del prototipo... Campo costituito da un nodo: il valore di default non viene specificato nellattributo value, ma attraverso un tag innestato Connessione del campo geometry del prototipo......

Esempio (3) Nodo Script <field name="isOver" type="SFBool" accessType="inputOnly"/> <field name="touchTime" type="SFTime" accessType="inputOnly"/> <field name="state" type="SFBool" accessType="inputOutput"/> <field name="emissiveColor_changed" type="SFColor" accessType="outputOnly"/> <field name="diffuseColor_changed" type="SFColor" accessType="outputOnly"/> <![CDATA[ ecmascript:... ]]>

Esempio (4) Funzioni definite allinterno del nodo Script function state(value) {} function touchTime(value) { state = !state; if (state) { diffuseColor_changed = new SFColor(1, 0.2, 0.5); } else { diffuseColor_changed = new SFColor(0.2, 1, 0.5); } function isOver(value) { if (value) { emissiveColor_changed = new SFColor(0.2, 0.2, 0.2); } else { emissiveColor_changed = new SFColor(0, 0, 0); }

Esempio (5) Creazione di istanze del prototipo Campo costituito da un nodo: il valore di default non viene specificato nellattributo value, ma attraverso un tag innestato Routing degli eventi allinterno di <ROUTE fromNode="Sensor" fromField="isOver" toNode="MyScript" toField="isOver"/> <ROUTE fromNode="Sensor" fromField="touchTime" toNode="MyScript" toField="touchTime"/> <ROUTE fromNode="MyScript" fromField="emissiveColor_changed" toNode="MaterialButton" toField="set_emissiveColor"/> <ROUTE fromNode="MyScript" fromField="diffuseColor_changed" toNode="MaterialButton" toField="set_diffuseColor"/>

ProximitySensor ProximitySensor : X3DEnvironmentalSensorNode { SFBool[in,out]enabledTRUE SFVec3f [in,out] center0 0 0 SFVec3f[in,out] size0 0 0 SFTime[out] enterTime SFTime [out] exitTime SFRotation[out]orientation_changed SFVec3f[out]position_changed SFBool[out]isActive... } Rileva quando lavatar entra (ed esce) in una zona rappresentata da un parallelepipedo Quando lutente si trova allinterno del parallelepipedo il sensore traccia la sua posizione e orientazione Permette di far iniziare (terminare) delle animazioni quando lavatar si avvicina (allontana) ad un particolare oggetto Permette di muovere un oggetto in modo da replicare il movimento dellavatar (utile per la creazione di interfacce)

Esempio (1) Animazione di un parallelepipedo in base alla vicinanza dellavatar Shape · · · Box · · · Appearance · · · ProximitySensor enterTime exitTime · · · Transform scale · · · Material · · · PositionInterp. set_fraction value_changed · · · TimeSensor startTime fraction_changed · · · PositionInterp. set_fraction value_changed · · · TimeSensor startTime fraction_changed · · ·

Esempio (2) Posizionamento di un oggetto in base alla posizione dellavatar ProximitySensor position_changed orientation_changed · · · Transform translation rotation · · · Transform · · · La grandezza del sensore (campo size) deve essere tale da racchiudere tutta la scena virtuale Sistema di coordinate locali corrispondente alla posizione dellavatar Collision · · · Occorre disabilitare il rilevamento delle collisioni:...

VisibilitySensor VisibilitySensor : X3DEnvironmentalSensorNode { SFBool[in,out]enabledTRUE SFVec3f [in,out] center0 0 0 SFVec3f[in,out] size0 0 0 SFTime[out] enterTime SFTime [out] exitTime... } Rileva quando unarea rappresentata da un parallelepipedo è visibile allavatar Permette di far iniziare (terminare) delle animazioni quando lavatar può o meno vedere un particolare oggetto (utile per attirare lattenzione dellutente)