Java 3D.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Ombre e riflessioni in tempo reale
BUMP MAPPING dott.ing.jun Alex Zupan –
Recupero debito quarto anno Primo incontro
Universita di Camerino
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
CONOSCIAMO IL WINDOWS '95.
Cinematica diretta Un manipolatore è costituito da un insieme di corpi rigidi (bracci) connessi in cascata tramite coppie cinematiche (giunti). Si assume.
GLUT & OpenGL Ing. Tommaso Coviello Politecnico di Bari
JavaScript Laboratorio di Applicazioni Informatiche II mod. A.
Progettare un Motore 3D Marco Trivellato
Texture Mapping.
Seminario per il corso Elementi di Grafica Digitale Dott. Federico ELIA A.A
Sistemi Multimediali II Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 prove.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2005/06 prove generali.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2006/07 Lezione.
Computer Graphics Marco Tarini Università dellInsubria Facoltà di Scienze MFN di Varese Corso di Laurea in Informatica Anno Accademico 2004/05 Lezione.
Costruzione di Interfacce - Paolo Cignoni1 Costruzione di Interfacce Lezione 30 MMeditor e collision detection
Corso di Informatica (Programmazione)
Animazione di un cubo in Java 3D
Esempi di Java 3D.
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Sistemi Operativi GESTIONE DEI PROCESSI.
1 Superfici nascoste Daniele Marini. 2 Ray casting adatto a CSG o superfici parametriche dipende dal punto di vista è una sorta di campionamento spaziale.
Smoothing Daniele Marini.
1 Effetti impressionistici Daniele Marini. 2 Tecniche discrete di manipolazione del frame buffer: –Texture mapping –Antialiasing –Compositing –Alpha blending.
Infomatica Grafica a.a DICGIM – University of Palermo Dipartimento di Ingegneria Chimica, Gestionale, Informatica e Meccanica Environment Mapping.
Relatore: Laureando: Prof. Luca Zaccarian Roberto Antonelli
Gerarchie Nella lezione precedente abbiamo imparato creare una gerarchia di oggetti usando i gruppi (edit>group)
GRAFICA DIGITALE Silvia Lombardi Trento, 18 Maggio 2012
Illuminamento e Shading
Iniziamo a usare il computer
Il Sistema Operativo: il File System
Studente: Banovaz Diego Trieste, 15/12/2008AA: 2008/2009.
Effetti fotorealistici
Daniele Marini, Maurizio Rossi
Le ombre proiettate Daniele Marini.
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Corso di tecniche della modellazione digitale computer 3D A.A. 2010/2011 docente Arch. Emilio Di Gristina 09.
Corso di tecniche della modellazione digitale computer 3D A.A. 2010/2011 docente Arch. Emilio Di Gristina 03.
Programmazione grafica 1
Superfici nascoste Daniele Marini.
Strumenti di Presentazione (Microsoft PowerPoint 2000)
I nomi in Java F. Bombi 18 novembre novembre 2003.
1 Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Controllare le proiezioni
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Intersezioni e distanze
Corso di Programmazione Grafica e Laboratorio Daniele Marini
Architettura di OGL e pipe-line Daniele Marini Corso Di Programmazione Grafica.
Display list e scene graph Daniele Marini Dipartimento di Informatica e Comunicazione.
Architettura di OGL e pipe-line Daniele Marini Davide Gadia Davide Selmo Corso Di Programmazione Grafica aa2005/2006.
Ombre e riflessioni in tempo reale Daniele Marini Parzialmente tratte de: Haines-M ö ller Corso di Programmazione Grafica aa2005/2006.
Ottimizzazione della scena: culling (decimazione) Daniele Marini.
Ottimizzazione della scena: culling (decimazione) Daniele Marini Corso di Programmazione Grafica per il Tempo Reale.
Percorso didattico per l’apprendimento di Microsoft Access Modulo 5
AUTOCAD Corso Base 1/2/3 luglio
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
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 Processi e Thread Processi Thread Meccanismi di comunicazione fra processi (IPC) Problemi classici di IPC Scheduling Processi e thread in Unix Processi.
Daniele Marini Con contributi di Maurizio Rossi
1 Smoothing Daniele Marini. 2 Calcoli sui vettori Vettore normale equazione del piano: ax+by+cz+d=0; si può anche scrivere come luogo: e p è un qualunque.
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
Un sito con Wordpress Includere Digital-mente – Corso livello 4 docente: prof.ssa MANUELA MARSILI.
UNIMORE University of Modena and Reggio Emilia Scratch Simone Calderara
Sprite Script/Codice Area Script/Codice Costumi Suoni L’ambiente di programmazione Stage.
Introduzione alle Classi e agli Oggetti in Java 1.
La LIM permette di: accedere a quantità infinite di informazioni visualizzare filmati o immagini interagire con testi ed esercizi (costruzione di testi.
Transcript della presentazione:

Java 3D

Cos’è Java 3D Java 3D è un API grafica 3d ad alto livello. Il programmatore lavora con costrutti di alto livello con cui crea e manipola oggetti 3D. Il rendering è gestito in modo automatico. Sfruttando thread e metodi di ottimizzazione il motore si rendering migliora le prestazioni. Gli oggetti creati risiedono in un “Universo virtuale” Elementi di grafica digitale - Java 3D - Gobbo Dario

Package Il core Utility Altre classi utili La libreria fornisce oltre 100 classi presenti nel package javax.media.j3d Utility Oltre al core sono presenti altri package tra cui com.sun.j3d.utils. L’utilizzo di queste classi permette di ridurre le linee di codice di un programma 3D Altre classi utili java.awt : per gli elementi 2d. java.vecmath : per punti, linee, matrici e altre classi matematiche. Elementi di grafica digitale - Java 3D - Gobbo Dario

Universo virtuale Come detto gli oggetti java3D sono inseriti in un Universo virtuale che viene creato tramite uno “scene graph”. Uno scene graph è una struttura ad albero composta da nodi e archi. I nodi rappresentano oggetti java3D Gli archi rappresentano le relazioni tra gli oggetti relazione padre-figlio reference Elementi di grafica digitale - Java 3D - Gobbo Dario

Un esempio di “Scene Graph” Universo Virtuale Locale Nodi BranchGroups Nodi TrasformGroups BG BG TG TG TG S S View Canvas3D Screen3D View Platform Geometry Apparance Geometry NodeComponent Physical Body Physical Enivironment Elementi di grafica digitale - Java 3D - Gobbo Dario

SimpleUniverse Per ridurre le operazione da eseguire è possibile usare la classe SimpleUniverse. Questa classe permette di alleggerire la procedura di creazione dell’universo virtuale. Per usare il SimpleUniverse è necessario: Creare un oggetto Canvas3D Creare un oggetto SimpleUniverse e collegarlo al Canvas3D Costruire e compilare i BranchGroups Collegare quest’ultimi al Locale del SimpleUniverse Elementi di grafica digitale - Java 3D - Gobbo Dario

Il piano di rendering Il SimpleUniverse crea un view contenente anche un image plate. Un image plate è il rettangolo dove l’universo viene proiettato e renderizzato Il Canvas3D può essere pensato come un image plate. L’image plate è centrato nell’origine con asse z uscente dallo schermo, asse x orizzontale verso destra, asse y verticale verso l’alto Elementi di grafica digitale - Java 3D - Gobbo Dario

Classi Alcune classi : Node : superclasse astratta che rappresenta ogni nodo dello scene graph. Group : supereclasse usata per specificare posizioni e orientamenti degli oggetti. sottoclassi comuni: BranchGroup, TransformGroup. Leaf : superclasse usata per specificare forme, aspetti, suoni, comportamenti. non hanno figli, ma riferimenti a NodeComponent. NodeComponent : superclasse usata per specificare geometrie, aspetto, texture, materiale. non sono parte dello scene graph ma sono collegate tramite reference. Possono essere collegate a più di un nodo. Elementi di grafica digitale - Java 3D - Gobbo Dario

La classe Shade3D Shade3D è una sottoclasse di Leaf, quindi può essere solo una foglia dello scene graph. Un nodo Shade3D rappresenta un oggetto visuale. Non contiene informazioni su forma e colore. queste vengono conservate negli oggetti NodeComponent collegate allo Shade3D. Elementi di grafica digitale - Java 3D - Gobbo Dario

Geometry e Classi matematiche La classe Geometry o sue sottoclassi descrivono primitive basate sui vertici, come punti, linee, poligoni. Per definire un vertice sono necessarie le classi matematiche che rappresentano: Point* : coordinate dei vertici. Color* : colore di un vertice, una proprietà di un materiale, una nebbia, ecc. Vector* : vettori, usati per le normali ai vertici, direzioni sorgenti di luce, traslazioni. TextCood* : coordinate di una texture ad un vertice. Elementi di grafica digitale - Java 3D - Gobbo Dario

Aspetto ed Attributi (Apparance) I dati di una Geometry, spesso sono insufficienti per descrivere l’aspetto di un oggetto: è necessario utilizzare la classe Apparance Un oggetto Apparance non contiene le informazioni sull’aspetto dello Shade3D ma referenzia sottoclassi di NodeComponent (gli attributi), dove sono memorizzate tali informazioni. Gli oggetti referenziabili possono essere: PointAttributes/LineAttributes/PolygonAttributes ColoringAttributes/ TrasparencyAttributes RenderingAttributes/Material TextureAttributes/Texture/TexCoordGenerator Elementi di grafica digitale - Java 3D - Gobbo Dario

Condivisione di Attributi È possibile che due oggetti Shade3D facciano riferimento allo stesso Apparance. È possibile che due oggetti Apparance facciano riferimento allo stesso attributo. La condivisione può migliorare le performance. S S S Geometry Geometry Apparance Apparance Geometry ColoringAttributes Material LineAttributes Elementi di grafica digitale - Java 3D - Gobbo Dario

Alcuni Attributi PointAttributes : gestisce il rendering dei punti. LineAttributes : gestisce il rendering delle linee. PolygonAttributes : gestisce il rendering dei poligoni. Per default il poligono è pieno. ColoringAttributes : controlla la colorazione degli oggetti. Se il colore è definito anche nella geometry, prevale quello della geometry. TrasparencyAttributes : gestisce la trasparenza. 0.0 opaco, 1.0 trasparente SCREEN_DOOR : alcuni pixel sono completamente opachi. BLENDED : ogni pixel ha la trasparenza impostata. Elementi di grafica digitale - Java 3D - Gobbo Dario

Bound Un bound definisce una regione dove un nodo agisce. Un bound è definito usando le classi: BondingSphere : il più semplice, crea boun sferici. BoundingBox : crea bound rettangolari, bisogna definire i due punti estremi. BoundingPolytope : crea bound poliedrici usando l’intersezioni di quattro o più semispazi, bisogna elencare i piani dell’intersezione. Se opportunamente usati permettono di incrementare le performance, riducendo le operazioni svolte del motore di rendering Elementi di grafica digitale - Java 3D - Gobbo Dario

Scope Lo Scope è una collezione di oggetti Group sui quali un nodo ha influenza. Bound e scope forniscono una funzionalità simile ma in modo diverso: Un Bound definisce una regione spaziale. Uno Scope definisce dei raggruppamenti di oggetti Elementi di grafica digitale - Java 3D - Gobbo Dario

Performance (compile) La rappresentazione di uno scene graph costruito da java non è molto efficiente. La flessibilità nel realizzare universi virtuali viene pagata in termini di prestazioni Per ovviare a ciò java3D utilizza internamente una rappresentazione più efficiente. Invocando il metodo compile() del BranchGroup esso viene convertito e ottimizzato in una rappresentazione interna. Conviene sempre compilare il BranchGroup prima di renderlo vivo (cioè di inserirlo in un Locale). Elementi di grafica digitale - Java 3D - Gobbo Dario

Performance (capability) La conversione in una rappresentazione interna blocca il valore delle trasformazioni e di altri oggetti dello scene graph. È necessario specificare prima cosa si vuole cambiare. Una caratteristica di un oggetto che può essere modificata è detta capability. Impostando o azzerando una certa capability si decide se una particolare caratteristica può essere modificata dopo che l’oggetto e diventato vivo. Elementi di grafica digitale - Java 3D - Gobbo Dario

Interazioni In Java3D sia le animazioni che le interazioni sono definite utilizzando la classe Behavior: Questa classe modifica lo scene graph in risposta ad uno stimolo (tastiera, mouse, tempo, collisioni..) I cambiamenti prodotti possono essere l'aggiunta o rimozione di oggetti dallo scene graph oppure il cambiamento di attributi degli oggetti. Le possibilità sono limitate soltanto dalle capability degli oggetti stessi. Elementi di grafica digitale - Java 3D - Gobbo Dario

Behavior Un behavior personalizzato deve implementare i metodi initialization e processStimulus della classe astratta Behavior. initialization() : invocato quando lo scene graph contenete il behavior diventa vivo. Deve inizializzare il trigger degli eventi. processStimulus() : invocato dal trigger quando si verifica la condizione specificata, occupandosi anche della decodifica dell’evento. Deve resettare il trigger. Elementi di grafica digitale - Java 3D - Gobbo Dario

Wake up I behavior vengono attivati non appena si verificano gli stimoli a cui devono rispondere. Gli oggetti per definire gli stimoli sono le condizzioni di wake up che vengono definite nelle classi WakeupCondition. WakeupCondition WakeupOr WakeupAnd WakeupAndOfOrs WakeupOrOfAnds WakeupCriterion } Per la composizione di condizioni multiple. Elementi di grafica digitale - Java 3D - Gobbo Dario

WakeupCriterion WakeupOnActivation WakeupOnDeactivation WakeupOnAWTEvent WakeupOnBehaviorPost WakeupOnCollisionEntry WakeupOnCollisionExit WakeupOnCollisionMovement WakeupOnElapsedFrames WakeupOnElapsedTime WakeupOnSensorEntry WakeupOnSensorExit WakeupOnTransformChange WakeupOnViewPlatformEntry WakeupOnViewPlatformExit Elementi di grafica digitale - Java 3D - Gobbo Dario

Navigare Il view branch graph di un universo virtuale contiene una view platform. Se tale trasformazione cambia, l’effetto è quello di muovere e orientare l’osservatore. Quindi, per navigare, è sufficiente aggiungere un behavior che cambia la view platform in risposta agli eventi Elementi di grafica digitale - Java 3D - Gobbo Dario

Picking Il picking permette all’utente di interagire con i singoli oggetti della scena e viene implementato con un behavior che risponde agli eventi del mouse. Per recuperare l’oggetto selezionato, un raggio viene proiettato dal mouse verso il mondo virtuale. Viene calcolata l’intersezione del raggio con gli oggetti e si seleziona l’oggetto più vicino all’image plate. Elementi di grafica digitale - Java 3D - Gobbo Dario

Picking mouse pointer pick ray object image plate Il test di intersezione è costoso, e tale costo cresce con la scena. È possibile selezionare inizialmente gli oggetti “acchiappabili”, gli altri non verranno considerati nel calcolo. Per ridurre il costo del calcolo è possibile limitare lo scope del test. Nell’indicare il nodo radice del test invece di indicare la root dello scene graph si specifica la radice del sottografo degli oggetti “acchiappabili”. Elementi di grafica digitale - Java 3D - Gobbo Dario

Animazioni Come l’interazione anche l’animazione è implementata tramite behavior Inoltre esiste un particolare tipo di classi per l’animazione, dette interpolatori. Un oggetto Interpolator manipola alcuni parametri dello scene graph per crea animazioni basate sul tempo. Queste classi sono basate sui behavior. Usano un oggetto Alpha. È un particolare oggetto che produce un valore tra zero e uno con il variare del tempo. Produce un fronte d’onda. Elementi di grafica digitale - Java 3D - Gobbo Dario

Luci Il modello d’illuminazione gestisce tre tipi di luce: Ambientale : luce costante e molto leggera Diffusa : riflessione su un oggetto opaco Speculare : riflessione su un oggetto speculare Purtroppo alcuni fenomeni non vengono modellati: Inter-riflessioni Ombre Java3D non limita il numero di luci utilizzabili contemporaneamente, tuttavia potrebbe essere la scheda video o la libreria basso livello a farlo (OpenGl limita ad 8). Elementi di grafica digitale - Java 3D - Gobbo Dario

Classi Light L’Api Java3D fornisce 4 classi di per le luci: AmbientLight : stessa intensità in tutte le posizioni. DirectionalLigth : raggi paralleli con intensità costante. PointLight : sorgente in un punto, intensità variabile. SpotLight: sottoclasse di PointLight, luce lungo una direzione all’interno di un angolo con intensità variabile. Lo stato della luce è un valore booleano per indicare se è accesa o spenta. Elementi di grafica digitale - Java 3D - Gobbo Dario

Colori Ci sono tre modi per specificare il colore di un oggetto: Metodo setColor() di Geometry. Attributo ColoringAttributes. Classe Material Specifica colori(ambientale, diffuso, speculare ed emissivo) e la lucentezza di un oggetto. Se viene usato più di un metodo: Material viene usato in presenza di luce, ColoringAttributes in assenza di luce. Il colore di Geometry sovrascrive gli altri. Elementi di grafica digitale - Java 3D - Gobbo Dario

Normali Per concludere è necessario sottolineare che per illuminare un oggetto è necessario che esso stesso abbia definito le sue normali alle superfici. Quando si creano oggetti e possibile specificare le normali usando il metodo setNormal() della Geometry. Usando un oggetto GeometryInfo è possibile utilizzare la classe NormalGenerator per ottenere in automatico le normali. Elementi di grafica digitale - Java 3D - Gobbo Dario