Exemple de classe utilisant Java3D
Hello.class
Fichier source
/* Copyright (c) 1996-1998 * Sun Microsystems, Inc. * All Rights Reserved. * * Sun grants ("Licensee") a non-exclusive, * royalty free, license to use, modify * and redistribute this software in source * and binary code form, provided that * i) this copyright notice and license appear * on all copies of the software; and * ii) Licensee does not utilize the software * in a manner which is disparaging to Sun. * * This software is provided "AS IS," without * a warranty of any kind. ALL EXPRESS OR * IMPLIED CONDITIONS, REPRESENTATIONS * AND WARRANTIES, INCLUDING ANY IMPLIED * WARRANTY OF MERCHANTABILITY, FITNESS * FOR A PARTICULAR PURPOSE OR * NON-INFRINGEMENT, ARE HEREBY * EXCLUDED. SUN AND ITS LICENSORS SHALL NOT * BE LIABLE FOR ANY DAMAGES SUFFERED * BY LICENSEE AS A RESULT OF USING, * MODIFYING OR DISTRIBUTING THE SOFTWARE * OR ITS DERIVATIVES. IN NO EVENT * WILL SUN OR ITS LICENSORS BE LIABLE * FOR ANY LOST REVENUE, PROFIT OR DATA, * OR FOR DIRECT, INDIRECT, SPECIAL, * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE * DAMAGES, HOWEVER CAUSED AND REGARDLESS * OF THE THEORY OF LIABILITY, ARISING * OUT OF THE USE OF OR INABILITY TO USE * SOFTWARE, EVEN IF SUN HAS BEEN ADVISED * OF THE POSSIBILITY OF SUCH DAMAGES. * * This software is not designed or intended * for use in on-line control of aircraft, * air traffic, aircraft navigation * or aircraft communications; or in the * design, construction, * operation or maintenance of any nuclear * facility. Licensee represents and warrants * that it will not use or redistribute * the Software for such purposes. */ import java.applet.Applet; import java.awt.BorderLayout; import java.awt.event.*; import java.awt.GraphicsConfiguration; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.geometry.ColorCube; import com.sun.j3d.utils.universe.*; import javax.media.j3d.*; import javax.vecmath.*;
public class Hello extends Applet {
public BranchGroup createSceneGraph() { // Cree la racine du graphe branche. BranchGroup objRoot = new BranchGroup(); // Cree le noeud transform group // et l'initialise a l'identité. // Autorise le flag TRANSFORM_WRITE // pour que notre programme behavior // puisse le modifier. // l'ajoute a la racine du sous-graphe. TransformGroup objTrans = new TransformGroup(); objTrans.setCapability( TransformGroup.ALLOW_TRANSFORM_WRITE); objRoot.addChild(objTrans); // Cree un noeud feuille forme simple, // et l'ajoute au graphe de scene. objTrans.addChild(new ColorCube(0.4)); // Cree un nouvel objet Behavior // qui realisera les operations desirees // sur l'objet transform specifie // et l'ajoute dans le graphe de scene. Transform3D yAxis = new Transform3D(); Alpha rotationAlpha = new Alpha(-1, Alpha.INCREASING_ENABLE, 0,0, 4000,0,0, 0,0,0); RotationInterpolator rotator = new RotationInterpolator( rotationAlpha, objTrans,yAxis, 0.0f, (float) Math.PI*2.0f); BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0); rotator.setSchedulingBounds(bounds); objTrans.addChild(rotator); // Compilation pour de meilleures // performances. objRoot.compile(); return objRoot; }
public Hello() { setLayout(new BorderLayout()); GraphicsConfiguration config = SimpleUniverse .getPreferredConfiguration(); Canvas3D c = new Canvas3D(config); add("Center",c); // Cree une scene simple et l'attache // a l'univers virtuel. BranchGroup scene = createSceneGraph(); SimpleUniverse u = new SimpleUniverse(c); // ceci deplace le ViewPlatform // un peu en arriere pour que les // objets de la scene soient visibles. u.getViewingPlatform() .setNominalViewingTransform(); u.addBranchGraph(scene); }
// // HelloUniverse peut etre utilise comme // une application aussi bien que comme // une applet //
public static void main(String[] args) { System.out.println("Go") ; new MainFrame( new Hello(),256,256); } }
RETOUR