Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un...

17
Leghissa Simon

Transcript of Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un...

Page 1: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Leghissa Simon

Page 2: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Descrizione proggettoIl proggetto prevede la visualizzazione e l’animazione di un

cubo in ambiente Java 3D.

Fasi:- creazione di un’ applicazione grafica Java 3D- inserimento di un cubo nella scena - creazione di una o più animazioni

Page 3: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Classi e LibrerieClassi implementate:

- AnimazioneCubo3D (classe principale con metodo main)- MioBehavior (gestione eventi da tastiera)

Principali librerie utilizzate: - javax.media.j3d.* (Core di Java 3D) - com.sun.j3d.utils.* (Classi di utility per Java 3D)

- javax.swing.* (Libreria grafica J2SE)

Page 4: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

SimpleUniverse

1. Creare un oggetto Canvas3D2. Creare un oggetto SimpleUniverse e collegarlo al Canvas3D 3. Personalizzare l'oggetto SimpleUniverse:

Costruire un content branch graph, contente un cubo e tutti gli oggetti relativi all’animazione

Compilare il content branch graph4. Collegare il content branch graph al SimpleUniverse

Il metodo più semplice per creare una scena in Java 3D è quello di utilizzare la classe SimpleUniverse.

Page 5: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Le classi delle primitive geometriche Esistono tre modi per creare nuove geometrie:

– usare le classi di utility per box, coni, cilindri e sfere– specificare le coordinate dei vertici per punti, linee e superfici– usare i loader di geometrie

Il metodo più semplice per creare un cubo è l’utilizzo della classe Box.

Page 6: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

La classe BoxCrea un “box” 3D: le dimensioni di

default per lunghezza, larghezza ed altezza sono 2,con il centro posto nell'origine

La figura di default è quindi un cubo con gli

spigoli a ( -1, -1, -1) e ( 1, 1, 1)Le dimensioni posso essere

specificate all'atto della creazioneBox(float xdim, float ydim, float zdim,

Appearance appearance)

Page 7: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Aspetto ed attributi Uno Shape3D (Box è una estensione di Shape3D) può

fare riferimento sia ad un oggetto Geometry sia ad un oggetto AppearanceLa Geometry specifica le informazioni spaziali e (opzionale) di colore sui vertici Tuttavia i dati di una Geometry sono spesso insufficienti per descrivere l'aspetto di un oggetto: è

necessario utilizzare un oggetto Appearance

Page 8: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Aspetto ed attributi Gli oggetti a cui può referenziarsi un Appearance sono molteplici, i principali sono:

PointAttributes/LineAttributesPolygonAttributesColoringAttributes/TransparencyAttributesRenderingAttributes/MaterialTextureAttributes/Texture/TexCoordGeneration

Per ogni attributo esiste un metodo per impostare/recuperare il suo valore

Page 9: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Classe Behavior In Java3D sia le animazioni sia le interazioni sono definite

utilizzando la classe Behavior. Scopo di un Behavior è modificare uno scene graph in

risposta a qualche stimolo. Uno stimolo può essere la pressione di un tasto, un movimento del mouse, la collisione tra oggetti, il passare del tempo, ecc.

I cambiamenti prodotti possono essere l'aggiunta e/o la rimozione di oggetti dallo scene graph, il cambiamento di attributi degli oggetti,…

Page 10: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Le animazioni in Java3D Teoricamente è possibile creare qualsiasi animazione

personalizzata usando i Behavior, in ogni caso Java3D fornisce una serie di classi di utility per le animazioni più comuni. Ovviamente queste classi sono basate sui Behavior.

Un particolare insieme di classi per le animazioni sono gli interpolatori: un oggetto Interpolator manipola alcuni parametri di uno scene graph per creare animazioni basate sul tempo.

Page 11: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Gli InterpolatoriGli Interpolator sono Behavior personalizzati che usano un

oggetto Alpha. Le azioni degli Interpolator comprendono il cambiamento di :posizioneorientamentodimensionecolore trasparenza di un oggetto

Esistono Interpolator anche per altre azioni, incluse le combinazioni delle precedenti azioni.

Page 12: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

La classe AlphaUn oggetto Alpha produce un valore, detto valore alpha,

compreso tra zero ed uno, estremi inclusi. Il valore alpha cambia nel tempo in base ai parametri dell'oggetto stesso. Fissati i parametri di Alpha ed un particolare istante di tempo, c'è un solo valore alpha che l'oggetto Alpha può produrre.

Associando un oggetto Alpha ad un Interpolator, quest’ultimo modificherà gli oggetti a lui sottostanti nello scene graph (target) a seconda del valore di alpha.

Page 13: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

La classe Alpha

Page 14: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Alcune classi InterpolatorClasse Interpolator Usato per Oggetto target

ColorInterpolator Cambiare il colore di unoggetto

Material

PathInterpolator (Astratta)

Creare percorsi TransformGroup

PositionInterpolator Cambiare la posizione di unoggetto

TransformGroup

RotationInterpolator Cambiare l'orientamento diun oggetto

TransformGroup

ScaleInterpolator Cambiare le dimensioni diun oggetto

TransformGroup

SwitchValueInterpolator

Scegliere un oggetto tra unacollezione

Switch

TransparencyInterpolator

Cambiare la trasparenza diun oggetto

TransparencyAttributes

Page 15: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Demo

Page 16: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

see

file

LeghissaAnimaCuboJava3D.avi

Page 17: Leghissa Simon. Descrizione proggetto Il proggetto prevede la visualizzazione e lanimazione di un cubo in ambiente Java 3D. Fasi: - creazione di un applicazione.

Bibliografia Programmazione.it – Introduzione a Java 3D

http://programmazione.it/index.php?entity=eitem&idItem=37338 Getting Started with the Java 3D™ API

http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch1.pdf Creating Geometry in Java 3D

http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch2.pdf Easier Content Creation

http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch3.pdf Interaction

http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch4.pdf Animation

http://java.sun.com/developer/onlineTraining/java3d/j3d_tutorial_ch5.pdf Lezioni di Java 3D http://www.dmi.unict.it/~gdiblasi/didattica/cg/