La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Esempi di Java 3D. Elementi di grafica digitale - Java 3D - Gobbo Dario2 di 28 SimpleBehavior //L'implementazione del Behavior personalizzato di un programma.

Presentazioni simili


Presentazione sul tema: "Esempi di Java 3D. Elementi di grafica digitale - Java 3D - Gobbo Dario2 di 28 SimpleBehavior //L'implementazione del Behavior personalizzato di un programma."— Transcript della presentazione:

1 Esempi di Java 3D

2 Elementi di grafica digitale - Java 3D - Gobbo Dario2 di 28 SimpleBehavior //L'implementazione del Behavior personalizzato di un programma che //renderizza un cubo che ruota ad ogni pressione di un tasto public class SimpleBehavior extends Behavior { private TransformGroup targetTG; private Transform3D rotation=new Transform3D(); private double angle=0.0; public SimpleBehavior(TransformGroup targetTG) { this.targetTG=targetTG; } public void initialize() { //Questo Behavior risponderà ad eventi di tastiera sul key pressed this.wakeupOn(new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED)); } public void processStimulus(Enumeration criteria) { //Incrementa l'angolo angle+=0.1; //Evita problemi di overflow if (angle>2*Math.PI) angle=0; //imposta la rotazione dell'angolo rotation.rotY(angle); targetTG.setTransform(rotation); //Reseta il Behavior per continuare a rispondere ad eventi di tastiera this.wakeupOn(new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED)); }

3 Elementi di grafica digitale - Java 3D - Gobbo Dario3 di 28 Alcune classi utili –com.sun.j3d.utils.behaviors.keyboard.KeyNavigatorBehavior –com.sun.j3d.utils.behaviors.mouse.* traslazione zooming rotazione –com.sun.j3d.utils.universe.Billboard –com.sun.j3d.utils.universe.OrientedShape3D –com.sun.j3d.utils.universe.DistanceLOD –com.sun.j3d.utils.universe.Morph

4 Elementi di grafica digitale - Java 3D - Gobbo Dario4 di 28 MouseRotate import java.awt.*; import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.behaviors.mouse.*; import javax.media.j3d.*; import javax.swing.*; //Renderizza un cubo rotabile interattivamente public class MouseRotateApp extends JFrame { public MouseRotateApp() { //Recupera le configurazioni grafiche del computer GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration(); //Crea il Canvas3D e lo aggiunge al frame Canvas3D canvas3D=new Canvas3D(config); this.getContentPane().add(canvas3D,BorderLayout.CENTER); BG TG Canvas3DScreen3DView Universo Virtuale Locale Nodi BranchGroups Nodi TrasformGroups View Platform Physical Body Physical Enivironment BranchGroup this.getContentPane().add(canvas3D,BorderLayout.CENTER); //Crea la scena BranchGroup scene=createSceneGraph(); //Crea il SimpleUniverse SimpleUniverse simpleU=new SimpleUniverse(canvas3D); //Compila la scena (subito prima di renderla viva) scene.compile(); //Aggiunge la scena all'universo simpleU.addBranchGraph(scene); }

5 Elementi di grafica digitale - Java 3D - Gobbo Dario5 di 28 createScheneGraph() BG TG Canvas3DScreen3D S TG View Universo Virtuale Locale Nodi BranchGroups Nodi TrasformGroups View Platform Physical Body Physical Enivironment //Crea la scena private BranchGroup createSceneGraph() { //Crea la radice del branch graph BranchGroup objRoot=new BranchGroup(); //Crea un gruppo per le trasformazioni affini TransformGroup objRotate=new TransformGroup(); objRotate.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); objRotate.setCapability(TransformGroup.ALLOW_TRANSFORM_READ); //Aggiunge al gruppo un cubo colorato objRotate.addChild(new ColorCube(0.4)); //Crea il behavior per ruotare il cubo MouseRotate myMouseRotate=new MouseRotate(objRotate); //Imposta un raggio d'azione del behavior myMouseRotate.setSchedulingBounds(new BoundingSphere()); //assembla la scena objRoot.addChild(myMouseRotate); objRoot.addChild(objRotate); return objRoot; }

6 Elementi di grafica digitale - Java 3D - Gobbo Dario6 di 28 Altri esempi Simile al precedente ma invece di usare il mouse usa un Behavior sulla tastiera. Questo programma visualizzautilizza un loader che carica un file che rappresenta un oggetto. –Questo è il segmento di codice che carica il file ObjectFile f=new ObjectFile(ObjectFile.RESIZE); try { //Carica il galeone Scene s=f.load(galleon.obj"); //Inserisce il galeone nello SceneGraph objScale.addChild(s.getSceneGroup()); } catch (Exception e) {System.out.println(e);}


Scaricare ppt "Esempi di Java 3D. Elementi di grafica digitale - Java 3D - Gobbo Dario2 di 28 SimpleBehavior //L'implementazione del Behavior personalizzato di un programma."

Presentazioni simili


Annunci Google