Utilisateur:Gene.arboit/bac à sable
Java3D
[modifier | modifier le wikicode]Le nom du fichier Java contenant le code d'une des sous-sections suivantes doit être mon_premier_prog_Java3D.java
.
Ouvrir une fenêtre
[modifier | modifier le wikicode]
import java.applet.Applet;
import java.awt.Frame;
import com.sun.j3d.utils.applet.MainFrame;
public class mon_premier_prog_Java3D extends Applet {
public static void main(String[] args) {
Frame frame = new MainFrame(new mon_premier_prog_Java3D(), 256, 256);
}
}
Initialiser la fenêtre
[modifier | modifier le wikicode]
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class mon_premier_prog_Java3D extends Applet {
public mon_premier_prog_Java3D() { // Constructeur
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform(); // plan de projection en arriere de l'origine
}
public static void main(String[] args) {
Frame frame = new MainFrame(new mon_premier_prog_Java3D(), 256, 256);
}
}
Créer un graphe de scène vide
[modifier | modifier le wikicode]
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class mon_premier_prog_Java3D extends Applet {
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
objRoot.compile();
return objRoot;
}
public mon_premier_prog_Java3D() { // Constructeur
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform(); // plan de projection en arriere de l'origine
// Créer le graphe de scène
BranchGroup scene = createSceneGraph();
simpleU.addBranchGraph(scene);
}
public static void main(String[] args) {
Frame frame = new MainFrame(new mon_premier_prog_Java3D(), 256, 256);
}
}
Ajouter un cube au graphe de scène
[modifier | modifier le wikicode]
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class mon_premier_prog_Java3D extends Applet {
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
objRoot.addChild(new ColorCube(0.4));
objRoot.compile();
return objRoot;
}
public mon_premier_prog_Java3D() { // Constructeur
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform(); // plan de projection en arriere de l'origine
// Créer le graphe de scène
BranchGroup scene = createSceneGraph();
simpleU.addBranchGraph(scene);
}
public static void main(String[] args) {
Frame frame = new MainFrame(new mon_premier_prog_Java3D(), 256, 256);
}
}
Ajouter une rotation au cube
[modifier | modifier le wikicode]
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class mon_premier_prog_Java3D extends Applet {
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
//Préparer la rotation (spin)
TransformGroup objSpin = new TransformGroup();
objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objRoot.addChild(objSpin);
// Ajouter le cube...
objSpin.addChild(new ColorCube(0.4)); // Changé objRoot pour objSpin
// La rotation
Alpha rotationAlpha = new Alpha(-1, 4000);
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objSpin);
BoundingSphere bounds =
new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
rotator.setSchedulingBounds(bounds);
objSpin.addChild(rotator);
//Finir
objRoot.compile();
return objRoot;
}
public mon_premier_prog_Java3D() { // Constructeur
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform(); // plan de projection en arriere de l'origine
// Créer le graphe de scène
BranchGroup scene = createSceneGraph();
simpleU.addBranchGraph(scene);
}
public static void main(String[] args) {
Frame frame = new MainFrame(new mon_premier_prog_Java3D(), 256, 256);
}
}
Ajouter une rotation plus intéressante au cube
[modifier | modifier le wikicode]
import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.Frame;
import java.awt.GraphicsConfiguration;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class mon_premier_prog_Java3D extends Applet {
public BranchGroup createSceneGraph() {
BranchGroup objRoot = new BranchGroup();
//Préparer la rotation (spin)
TransformGroup objSpin = new TransformGroup();
objSpin.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
objRoot.addChild(objSpin);
// Ajouter le cube...
objSpin.addChild(new ColorCube(0.4)); // Changé objRoot pour objSpin
// La rotation
Alpha rotationAlpha = new Alpha(-1, 4000);
// Transformation de l'axe de rotation
Transform3D zAxis = new Transform3D();
zAxis.rotZ((float)Math.PI/- 2.5f); // NB : Remplacer 2.5 par 2.0 pour l'axe des z 'sans rotation'
RotationInterpolator rotator =
new RotationInterpolator(rotationAlpha, objSpin, zAxis,
0.0f, (float) Math.PI*2.0f);
BoundingSphere bounds =
new BoundingSphere(new Point3d(0.0,0.0,0.0), 100.0);
rotator.setSchedulingBounds(bounds);
objSpin.addChild(rotator);
//Finir
objRoot.compile();
return objRoot;
}
public mon_premier_prog_Java3D() { // Constructeur
setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas3D = new Canvas3D(config);
add("Center", canvas3D);
SimpleUniverse simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewingPlatform().setNominalViewingTransform(); // plan de projection en arriere de l'origine
// Créer le graphe de scène
BranchGroup scene = createSceneGraph();
simpleU.addBranchGraph(scene);
}
public static void main(String[] args) {
Frame frame = new MainFrame(new mon_premier_prog_Java3D(), 256, 256);
}
}