Docstoc

Java 3D - PowerPoint

Document Sample
Java 3D - PowerPoint Powered By Docstoc
					    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
   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)
   Valori floating point (float)
   Unità di misura: metro
   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
   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(…);
   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
   Diagramma della scena:
   ColorCube
   OrientedShape3D
   Text2D / Text3D
   Box / Cone / Cylinder / Sphere
   CompressedGeometry / GeometryArray
   Raster
   LineStripArray / LineArray / PointArray
   TriangleArray / QuadArray
   …
   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à
   …
   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
   È 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();
   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
   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
   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)
   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)
     …
   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
   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)
   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…
 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
   Sun Microsystems - Java 3D™ API Specification
   F. Milanese - Introduzione a Java 3D
   G. Di Blasi – Java3D

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:24
posted:10/12/2011
language:Italian
pages:24