Massimiliano Piscozzi –

Slides:



Advertisements
Presentazioni simili
Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A
Advertisements

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
Open Inventor In questa lezione impareremo a:
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Massimiliano Piscozzi – Sistemi multimediali.
Virtual Reality Modeling Language
INFORMATICA GRAFICA – SSD ING-INF/05 Sistemi di elaborazione delle informazioni a.a. 2007/2008 CAP 4 Primitive e strutture grafiche.
Prof.ssa Rossella Petreschi Lezione del 29/10/2012 del Corso di Algoritmi e Strutture Dati Riferimenti: Capitolo 19 del testo Cormen, Leiserson, Rivest,
Fondamenti di Informatica A - Massimo Bertozzi ALBERI E ALBERI BINARI DI RICERCA (BST)
1 1 gvSIG per la Provincia Autonoma di Bolzano: motivazioni, stato attuale, futuro Martin Zambaldi Fulvia Gambalonga Helmuth Leitner.
1 Elementi DI INFORMATICA Università degli Studi di Cagliari Corso di Laurea in Ingegneria Elettronica Linguaggio C A.A. 2011/2012
Si ricavano informazioni dallo studio delle proprietà magnetiche dei nuclei.
Fondamenti di Informatica A - Massimo Bertozzi LE RAPPRESENTAZIONI CONCATENATE.
.  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
Ereditarietà Uno dei principi della programmazione orientata agli oggetti (OOP) è il riuso Le classi dovrebbero essere progettate come componenti riutilizzabili.
Algoritmi e Strutture dati a.a.2010/2011 Prof.ssa Rossella Petreschi
Massimiliano Piscozzi –
Sensori di posizione.
Primo corso per operatore ALPE NILDE hot topics
Massimiliano Piscozzi –
Microsoft Access E’ un programma utile per lo sviluppo di applicazioni gestionali che si appoggiano a una base dati.
Microsoft Access E’ un programma utile per lo sviluppo di applicazioni gestionali che si appoggiano a una base dati.
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Tutorato Elementi di Informatica 2013
how to use Windows SharePoint Services
Bergamini, Trifone, Barozzi – La matematica del triennio
Ritenuto una svolta decisiva della storia dell’arte contemporanea.
Alberi binari Definizione Sottoalberi Padre, figli
Il Binding Nicolò Sordoni.
INDIGO-DataCloud MidnightBlue Tutorial Days
Universita’ di Milano Bicocca Corso di Basi di dati 1 in eLearning C
Drupal tipi di contenuto
Esercizi.
Programmazione a oggetti
VELOCITA’ E ACCELERAZIONE ANGOLARE
Organizzazione fisica
I solidi.
Per modificare questa pagina
DTD Document Type Definition per XML
POWER POINT Il programma, all'interno del pacchetto Office della Microsoft, è quello dedicato alla realizzazione di audiovisivi. Consente di creare documenti.
OBJECT ORIENTED DATABASE
suggerimenti Alma (solo per uso interno)
Cinematica Rotazionale
ABAP Objects ALV Grid Mantova, 30 dicembre 2018.
Oggetti Java.
Geometria descrittiva dinamica
Massimiliano Piscozzi –
Il cilindro DEFINIZIONE. Si dice cilindro il solido generato dalla rotazione completa di un rettangolo attorno ad uno dei suoi lati. Analizzando la figura.
Introduzione agli Algoritmi e alle Strutture Dati
ASTRONOMIA La sfera celeste.
Progetto 1 Input Creare una Funzione commentata che prenda come input:
DOM Document Object Model.
Ottimizzazione distribuita
8. Altri oggetti JavaScript
APPUNTI SUL LINGUAGGIO C
APPUNTI SUL LINGUAGGIO C Allocazione dinamica della memoria
MAYA BASICS.
UNIT 12 INTERFACCIA SERIALE.
Capacità di un conduttore
INDICO Corso di Legnaro 1 – 2 Marzo 2012 Esercitazioni 02/07/2019
Lezione 7 Editing digitale della partitura Creazione di plug-in con interfaccia grafica Laboratorio di Informatica Musicale – Prof. Luca A. Ludovico.
Corso di Fondamenti di Informatica
Transcript della presentazione:

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

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

Esercizio (2) Creazione dei tre oggetti distribuiti lungo l’asse X <Transform translation="-3 0 0"> <Transform DEF="boxTransform"> <Shape> <Box size="1 3 1"/> <Appearance> <Material diffuseColor="1 0 0"/> </Appearance> </Shape> </Transform> <Transform> <Shape> <Sphere radius="1"/> <Appearance> <Material DEF="sphereMaterial" diffuseColor="1 0 1"/> </Appearance> </Shape> </Transform> <Transform translation="3 0 0"> <Transform DEF="coneTransform"> <Shape> <Cone bottomRadius="1" height="2"/> <Appearance> <Material diffuseColor="0 0 1"/> </Appearance> </Shape> </Transform> Creazione di un TimeSensor <TimeSensor DEF="timer" cycleInterval="4" loop="true"/>

Esercizio (3) Creazione dei 3 interpolatori Routing degli eventi <OrientationInterpolator DEF="interpolator1" key="0 0.2 1" keyValue="0 0 1 0, 0 0 1 1.57, 0 0 1 0"/> <ColorInterpolator DEF="interpolator2" key="0 0.2 0.7 1" keyValue="1 0 1, 1 1 1, 1 1 0, 1 0 1"/> <PositionInterpolator DEF="interpolator3" key="0 0.25 0.75 1" keyValue="0 0 0, 0 2 0, 0 -2 0, 0 0 0"/> Routing degli eventi <ROUTE fromNode="timer" fromField="fraction_changed" toNode="interpolator1" toField="set_fraction"/> <ROUTE fromNode="interpolator1" fromField="value_changed" toNode="boxTransform" toField="set_rotation"/> <ROUTE fromNode="timer" fromField="fraction_changed" toNode="interpolator2" toField="set_fraction"/> <ROUTE fromNode="interpolator2" fromField="value_changed" toNode="sphereMaterial" toField="set_diffuseColor"/> <ROUTE fromNode="timer" fromField="fraction_changed" toNode="interpolator3" toField="set_fraction"/> <ROUTE fromNode="interpolator3" fromField="value_changed" toNode= "coneTransform" toField="set_translation"/>

TouchSensor Rileva quando l’utente “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] enabled TRUE 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 <Transform DEF="sphereTransform"> <Shape> <Sphere radius="0.1"/> <Appearance> <Material diffuseColor="0 0 1"/> </Appearance> </Shape> </Transform> Creazione del cono e del sensore <Transform> <Shape> <Cone bottomRadius="1" height="3"/> <Appearance> <Material diffuseColor="1 0 0"/> </Appearance> </Shape> <TouchSensor DEF="sensor"/> </Transform> Routing dell’evento <ROUTE fromNode="sensor" fromField="hitPoint_changed" toNode="sphereTransform" toField="set_translation"/>

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

Esercizio (2) Creazione del pulsante <Transform translation="-3 0 0"> <Shape> <Sphere radius="1"/> <Appearance> <Material diffuseColor="0.7 0.7 0.7"/> </Appearance> </Shape> <TouchSensor DEF="touchSensor"/> </Transform> Creazione dell’oggetto da far apparire <Transform translation="3 0 0"> <Shape> <Sphere radius="1"/> <Appearance> <Material DEF="sphereMaterial" diffuseColor="1 1 0" transparency="1"/> </Appearance> </Shape> </Transform>

Esercizio (3) Creazione del timer Creazione dell’interpolatore <TimeSensor DEF="timer" cycleInterval="3" loop="false"/> Creazione dell’interpolatore <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"/>

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 all’asse Y del sistema di coordinate locali PlaneSensor : X3DDragSensorNode{ SFString [in,out] description “” SFBool [in,out] autoOffset TRUE SFVec3f [in,out] offset 0 0 0 SFBool [in,out] enabled TRUE SFVec2f [in,out] minPosition 0 0 SFVec2f [in,out] maxPosition -1 -1 SFBool [out] isActive SFBool [out] isOver SFVec3f [out] trackPoint_changed SFVec3f [out] translation_changed ... } x y z minPosition maxPosition

Altri sensori (2) y x z y x z diskAngle SphereSensor : X3DDragSensorNode{ SFString [in,out] description “” SFBool [in,out] autoOffset TRUE SFVec3f [in,out] offset 0 0 0 SFBool [in,out] enabled TRUE SFBool [out] isActive SFBool [out] isOver SFVec3f [out] trackPoint_changed SFRotation [out] rotation_changed ... } x y z CylinderSensor : X3DDragSensorNode{ SFString [in,out] description “” SFBool [in,out] autoOffset TRUE SFVec3f [in,out] offset 0 0 0 SFBool [in,out] enabled TRUE SFFloat [in,out] minAngle 0 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 diskAngle

Esercizio Utilizzo del nodo SphereSensor per ruotare un oggetto Creazione di un cubo <Transform translation="3 0 0"> <Shape> <Box size="2 2 2"/> <Appearance> <Material diffuseColor="0 0 1"/> </Appearance> </Shape> </Transform> Creazione di un cubo e di un sensore sphereSensor ad esso associato <Transform translation="-3 0 0"> <Transform DEF="boxTransform"> <Shape> <Box size="2 2 2"/> <Appearance> <Material diffuseColor="1 0 0"/> </Appearance> </Shape> </Transform> <SphereSensor DEF="sensor"/> Routing dell’evento <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 dall’utente) 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

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

Prototipi (1) Codifica in XML della dichiarazione di prototipi <ProtoDeclare name=“nomePrototipo”> <ProtoInterface> ... </ProtoInteface> <ProtoBody> </ProtoBody> </ProtoDeclare> <field name=“...” type=“...” accessType=“...” value=“...”/> Interfaccia costituita da campi <unNodo> <IS> <connect nodeField=“...” protoField=“...”/> </IS> </unNodo> Corpo costituito da dichiarazioni di nodi - Il collegamento tra i campi dei nodi e i campi dell’interfaccia avviene attraverso i tag <IS> e <connect>

Prototipi (2) Codifica in XML della creazione di istanze di un prototipo <ProtoInstance name=“nomePrototipo”> ... </ProtoInstance> <fieldValue name=“...” value=“...”/> Lista dei valori dei campi  Se il valore di un campo non viene specificato esso assume il valore di default (specificato nell’interfaccia o in base alle specifiche X3D)

Prototipi: esempio <ProtoDeclare name="Colonna"> <ProtoInterface> <field name="raggio" accessType="inputOutput" type="SFFloat" value="0.3"/> <field name="colore" accessType="inputOutput" type="SFColor" value="0.8 0.7 0.3"/> </ProtoInterface> <ProtoBody> <Transform translation="0 1.25 0"> <Shape> <Cylinder height="2.5"> <IS> <connect nodeField="radius" protoField="raggio"/> </IS> </Cylinder> <Appearance> <Material diffuseColor="0.8 0.7 0.3"> <connect nodeField="diffuseColor" protoField="colore"/> </Material> </Appearance> </Shape> </Transform> </ProtoBody> </ProtoDeclare> <ProtoInstance name="Colonna"/> <ProtoInstance name="Colonna"> <fieldValue name="colore" value="0 0 2"/> </ProtoInstance> <fieldValue name="raggio" value="0.1"/>