Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
1
Esempi di Java 3D
2
SimpleBehavior Elementi di grafica digitale - Java 3D - Gobbo Dario
//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 Elementi di grafica digitale - Java 3D - Gobbo Dario
3
Alcune classi utili com.sun.j3d.utils.universe.Billboard
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 Elementi di grafica digitale - Java 3D - Gobbo Dario
4
MouseRotate Elementi di grafica digitale - Java 3D - Gobbo Dario
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); BranchGroup Universo Virtuale Locale Nodi BranchGroups Nodi TrasformGroups BG TG View Canvas3D Screen3D View Platform this.getContentPane().add(canvas3D,BorderLayout.CENTER); //Crea la scena BranchGroup scene=createSceneGraph(); Physical Body Physical Enivironment //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); } Elementi di grafica digitale - Java 3D - Gobbo Dario
5
createScheneGraph() //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; } Universo Virtuale Locale Nodi BranchGroups Nodi TrasformGroups BG BG TG TG S View Canvas3D Screen3D View Platform Physical Body Physical Enivironment Elementi di grafica digitale - Java 3D - Gobbo Dario
6
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);} Elementi di grafica digitale - Java 3D - Gobbo Dario
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.