24
Seminario per il corso “Elementi di Grafica Digitale” Dott. Federico ELIA A.A. 2008-2009

Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Embed Size (px)

Citation preview

Page 1: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Seminario per il corso“Elementi di Grafica Digitale”

Dott. Federico ELIAA.A. 2008-2009

Page 2: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Set di API aggiuntive per JRE / JDK specifiche per la grafica 3D

Circa 30 Package, alcuni già deprecated nella attuale versione 1.5.2

Disponibilità per le principali piattaforme Wrapper per OpenGL / Direct3D Sintassi 100% Java™ Documentazione in formato HTML Tutorial online sul sito di Sun

Microsystems

Page 3: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Potenzialità? Definizione di oggetti 2D, 3D in varie modalità Aggiunta di suoni alla scena Luci direzionali, ambientali, omnidirezionali,

spot Gestione eventi tastiera/mouse/periodici Background, nebbia Rotazione, scala, rotazione Testurizzazione, materiale, trasparenza

Visualizzazione: Canvas3D (Applet oppure finestra Swing/Awt)

Page 4: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Valori floating point (float) Unità di misura: metro

Page 5: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Struttura “ad albero” Nodo radice: VirtualUniverse Nodi gruppo: BranchGroup Nodi trasformazione: TransformGroup Nodi per la selezione fra due figli: Switch Foglie: Shape3D e derivati Ramificazione iniziale:

Content Branch: Oggetti contenuti nella scena View Branch: Oggetti per la visualizzazione

Page 6: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009
Page 7: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Un nodo inserito nell’albero diventa “vivo” La scena può esser “compilata” per

migliorare le prestazioni Di default se si tenta di modificare un nodo

già attached all’albero, viene generata un’eccezione RestrictedAccessException.

È spesso necessario modificare l’aspetto od il comportamento dei nodi: alla creazione dell’oggetto occorre aggiungere le istruzioni che abilitino le operazioni sul nodo: nodo.setCapability(…);

Page 8: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Metodo più veloce: Disegnare su carta l’albero Nella codifica, si creano i nodi e si associano al

parent partendo dalle foglie, risalendo l’albero fino alla radice

Metodo più versatile (necessario per le modifiche successive della scena): Dal disegno su carta dell’albero si codificano i

nodi Si aggiungono le necessarie istruzioni

setCapability(…); per ogni nodo e si può costruire l’albero secondo il criterio più conveniente

Page 9: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Diagramma della scena:

Page 10: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009
Page 11: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

ColorCube OrientedShape3D Text2D / Text3D Box / Cone / Cylinder / Sphere CompressedGeometry / GeometryArray Raster LineStripArray / LineArray / PointArray TriangleArray / QuadArray …

Page 12: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Appearance: Descrive completamente un oggetto shape

ColoringAttributes: Definisce il colore ed il metodo di colorazione

LineAttributes: Definisce spessore, pattern ed antialiasing per le linee

PointAttributes: Definisce spessore ed uso di antialiasing per i punti

PolygonAttributes: Definisce come disegnare le primitive dei poligoni

(triangoli, quadrilateri…) Texture:

Definisce l’immagine da applicare ad una shape e la modalità

Page 13: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

A video viene mostrato solo il contenuto nel volume del Frustum, compreso fra il Front Clip Plane ed il Back Clip Plane

Gli oggetti che intersecano i piani vengono tagliati

Page 14: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

È possibile personalizzare la posizione dei piani agendo sul View Branch dell’universo: void View.setBackClipDistance(double); void View.setFrontClipDistance(double); double View.getBackClipDistance(); double View.getFrontClipDistance();

Page 15: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

AmbientalLight: Luce omogenea nel suo bound in tutte le direzioni Interagisce con l’AmbientColor del Material

DirectionalLight: Sorgente di luce a raggi paralleli, senza

attenuazione Interagisce con lo SpecularColor ed il DiffuseColor

PointLight: Sorgente puntuale omnidirezionale (con

attenuazione) Interagisce con lo SpecularColor ed il DiffuseColor

SpotLight: Simile a PointLight, ma “a faretto”: fascio conico Interagisce con lo SpecularColor ed il DiffuseColor

Page 16: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Basate su Matrici di trasformazione 4x4 (double) Manipolabili con gli oggetti di tipo Transform3D È possibile combinare più trasformazioni insieme Un oggetto shape, per esser trasformato, deve

esser figlio di un oggetto TransformGroup associato ad un Transform3D

I TransformGroup possono esser figli di altri TransformGroup, in tal caso gli shape subiscono tutte le trasformazioni, a partire da quella superiore

Page 17: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Gli attributi di una forma cambiano nel tempo in base a: Interazione dell’utente Tempo

Animazioni controllate con oggetti Behavior, normalmente associati a TransformGroup

Behavior caratterizzati da: inizializzazione stimolo (il verificarsi di un evento)

Page 18: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Behavior comuni per l’interazione con l’utente: KeyNavigationBehavior: Consente la

navigazione utilizzando la tastiera MouseBehavior: Permette di traslare e ruotare PickMouseBehavior: Consente di selezionare col

click del mouse l’oggetto su cui operare traslazione o rotazione

OrbitBehavior: Rotazione, traslazione, zoom della scena con l’uso del mouse (click, drag&drop, scroll)

Page 19: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Behavior comuni basati sul tempo (Alpha): ColorInterpolator: Modifica uno dei colori

(Speculare, Emissione, Diffuso e/o Ambiente) di un Material

SwitchValueInterpolator: Cambia la visualizzazione dei nodi figlio di un oggetto Switch

PositionInterpolator/RotationInterpolator/ ScaleInterpolator: Cambiano la posizione / angolo di rotazione / fattore di scala di un nodo

TransparencyInterpolator: Varia la trasparenza del nodo target, interessandone i TransparencyAttributes dell’Appearance

Page 20: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Oggetto di classe Alpha: Fornisce dei metodi per convertire un valore

temporale in un valore Alpha, nel range [0,1] Parametri da configurare: numero di volte che si deve eseguire l’operazione tempo in ms fra il tempo di partenza ed il primo trigger ulteriore tempo in ms prima della partenza modalità di funzionamento incremento e/o decremento periodo in ms durante il quale l’oggetto Alpha va da 0 a 1 (/da 1 a 0) accelerazione costante dell’incremento / decremento il periodo in ms per il quale l’oggetto Alpha resta ad 1 (/0)

Page 21: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Java è un linguaggio (semi?)interpretato Java3D poggia su librerie grafiche native e vi

accede attraverso chiamate a DLL Il funzionamento del Garbage Collector non è

prevedibile Non è possibile utilizzare direttamente alcune

funzioni native degli adattatori grafici (Bump Mapping, ad esempio), è richiesto l’impiego di tempo CPU per sopperire a questa mancanza, a meno di usare ShaderProgram

Non sempre le prestazioni sono accettabili…

Page 22: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Documentazione “cristallina” Sintassi di facile comprensione ed

apprendimento API aperta all’ estensione delle classi Moltissime primitive grafiche Utilità per la manipolazione di immagini Facile costruzione delle scene Perfettamente integrata con le classi base di Java Multipurpose: usato in C.A.D., giochi, e-

commerce, simulazione, cinema, biomedicina, … Forse ideale per l’avvicinamento alla Computer

Graphics

Page 23: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009

Sun Microsystems - Java 3D™ API Specification

F. Milanese - Introduzione a Java 3D G. Di Blasi – Java3D

Page 24: Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A. 2008-2009