Exemple de classe
utilisant Java3D

</COMMENT> alt="Your browser understands the &lt;APPLET&gt; tag but isn't running the applet, for some reason." Your browser is completely ignoring the &lt;APPLET&gt; tag!

RETOUR

GrandeOurse3DJava3D.java

/* Auteur: Nicolas JANEY         */
/* nicolas.janey@univ-fcomte.fr  */
/* Novembre 2001                 */

import java.applet.Applet;
import java.awt.*;
import com.sun.j3d.utils.applet.MainFrame;
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.vecmath.*;
import javax.media.j3d.GeometryStripArray.*;
import java.awt.event.*;

public class GrandeOurse3DJava3D extends Applet implements MouseListener,MouseMotionListener {

  private Canvas3D c;
  private float dz = -8.0F;
  private Vector3d eta = new Vector3d( 2.6782868 , 0.95249915 ,-10.211735+8);
  private Vector3d miz = new Vector3d( 1.3972227 , 0.11056229 , -7.9981213+8);
  private Vector3d dze = new Vector3d( 1.3814067 , 0.11733321 , -8.1529656+8);
  private Vector3d eps = new Vector3d( 0.70122137, 0.080953359, -7.6173640+8);
  private Vector3d del = new Vector3d( 0.0       , 0.0        , -8.04+8);
  private Vector3d gam = new Vector3d(-0.8883190 , 0.82615963 ,-15.251831+8);
  private Vector3d alp = new Vector3d(-1.4533803 ,-1.0239428  , -9.6983930+8);
  private Vector3d bet = new Vector3d(-1.2871224 ,-0.10782208 , -7.1645021+8);
  private Point3d [] pts = new Point3d[14];
  private Color3f [] couls = new Color3f[14];
  private LineArray la;

  public BranchGroup createSceneGraph(SimpleUniverse u) {

    BranchGroup objRoot = new BranchGroup();
    BoundingSphere largeBounds;
    largeBounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
    BoundingSphere smallBounds;
    smallBounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),0.4);
    { Vector3f ldir = new Vector3f(1.0F,1.0F,-1.0F);
      Color3f lcouldl = new Color3f(1.0F,1.0F,1.0F);
      DirectionalLight dl = new DirectionalLight(lcouldl,ldir);
      dl.setInfluencingBounds(largeBounds);
      objRoot.addChild(dl); }
    { Color3f lcoulal = new Color3f(0.2F,0.2F,0.1F);
      AmbientLight al = new AmbientLight(lcoulal);
      al.setInfluencingBounds(largeBounds);
      objRoot.addChild(al); }
    TransformGroup objTrans = new TransformGroup();
    objRoot.addChild(objTrans);
    Transform3D t = new Transform3D();
    t.setTranslation(new Vector3d(0.0F,0.0F,-8.0F)) ;
    objTrans.setTransform(t);
    TransformGroup objTr2 = new TransformGroup();
    objTrans.addChild(objTr2);
    Transform3D tt = new Transform3D();
    objTr2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
    objTr2.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
    objTr2.setCapability(TransformGroup.ENABLE_PICK_REPORTING);
    objTr2.setTransform(tt);
    Appearance a = new Appearance();
    Material m = new Material();
    m.setDiffuseColor(1.0f,1.0f,1.0f);
    m.setSpecularColor(1.0f,1.0f,1.0f);
    m.setAmbientColor(1.0f,1.0f,1.0f);
    m.setShininess(25.0f);
    a.setMaterial(m);
    { TransformGroup objTran = new TransformGroup();
      objTr2.addChild(objTran);
      Transform3D t1 = new Transform3D();
      t1.setTranslation(eta) ;
      objTran.setTransform(t1);
      objTran.addChild(new Sphere(0.12F,a)); }
    { TransformGroup objTran = new TransformGroup();
      objTr2.addChild(objTran);
      Transform3D t1 = new Transform3D();
      t1.setTranslation(miz) ;
      objTran.setTransform(t1);
      objTran.addChild(new Sphere(0.12F,a)); }
    { TransformGroup objTran = new TransformGroup();
      objTr2.addChild(objTran);
      Transform3D t1 = new Transform3D();
      t1.setTranslation(dze) ;
      objTran.setTransform(t1);
      objTran.addChild(new Sphere(0.12F,a)); }
    { TransformGroup objTran = new TransformGroup();
      objTr2.addChild(objTran);
      Transform3D t1 = new Transform3D();
      t1.setTranslation(eps) ;
      objTran.setTransform(t1);
      objTran.addChild(new Sphere(0.12F,a)); }
    { TransformGroup objTran = new TransformGroup();
      objTr2.addChild(objTran);
      Transform3D t1 = new Transform3D();
      t1.setTranslation(del) ;
      objTran.setTransform(t1);
      objTran.addChild(new Sphere(0.12F,a)); }
    { TransformGroup objTran = new TransformGroup();
      objTr2.addChild(objTran);
      Transform3D t1 = new Transform3D();
      t1.setTranslation(gam) ;
      objTran.setTransform(t1);
      objTran.addChild(new Sphere(0.12F,a)); }
    { TransformGroup objTran = new TransformGroup();
      objTr2.addChild(objTran);
      Transform3D t1 = new Transform3D();
      t1.setTranslation(alp) ;
      objTran.setTransform(t1);
      objTran.addChild(new Sphere(0.12F,a)); }
    { TransformGroup objTran = new TransformGroup();
      objTr2.addChild(objTran);
      Transform3D t1 = new Transform3D();
      t1.setTranslation(bet) ;
      objTran.setTransform(t1);
      objTran.addChild(new Sphere(0.12F,a)); }
    { pts[0] = new Point3d( 2.6782868 , 0.95249915 ,-10.211735+8);
      pts[1] = new Point3d( 1.3814067 , 0.11733321 , -8.1529656+8);
      pts[2] = new Point3d( 1.3814067 , 0.11733321 , -8.1529656+8);
      pts[3] = new Point3d( 0.70122137, 0.080953359, -7.6173640+8);
      pts[4] = new Point3d( 0.70122137, 0.080953359, -7.6173640+8);
      pts[5] = new Point3d( 0.0       , 0.0        , -8.04+8);
      pts[6] = new Point3d( 0.0       , 0.0        , -8.04+8);
      pts[7] = new Point3d(-0.8883190 , 0.82615963 ,-15.251831+8);
      pts[8] = new Point3d( 0.0       , 0.0        , -8.04+8);
      pts[9] = new Point3d(-1.4533803 ,-1.0239428  , -9.6983930+8);
      pts[10] = new Point3d(-1.4533803 ,-1.0239428  , -9.6983930+8);
      pts[11] = new Point3d(-1.2871224 ,-0.10782208 , -7.1645021+8);
      pts[12] = new Point3d(-1.2871224 ,-0.10782208 , -7.1645021+8);
      pts[13] = new Point3d(-0.8883190 , 0.82615963 ,-15.251831+8);
      couls[0] = new Color3f(1.0f,1.0f,1.0f);
      couls[1] = new Color3f(1.0f,1.0f,1.0f);
      couls[2] = new Color3f(1.0f,1.0f,1.0f);
      couls[3] = new Color3f(1.0f,1.0f,1.0f);
      couls[4] = new Color3f(1.0f,1.0f,1.0f);
      couls[5] = new Color3f(1.0f,1.0f,1.0f);
      couls[6] = new Color3f(1.0f,1.0f,1.0f);
      couls[7] = new Color3f(1.0f,1.0f,1.0f);
      couls[8] = new Color3f(1.0f,1.0f,1.0f);
      couls[9] = new Color3f(1.0f,1.0f,1.0f);
      couls[10] = new Color3f(1.0f,1.0f,1.0f);
      couls[11] = new Color3f(1.0f,1.0f,1.0f);
      couls[12] = new Color3f(1.0f,1.0f,1.0f);
      couls[13] = new Color3f(1.0f,1.0f,1.0f);
      la = new LineArray(14,LineArray.COORDINATES|LineArray.COLOR_3);
      la.setCoordinates(0,pts);
      la.setColors(0,couls);
      Shape3D shape = new Shape3D(la,a);
      shape.setCapability(Shape3D.ALLOW_GEOMETRY_WRITE);
      objTr2.addChild(shape); }
    BoundingSphere bounds;
    bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),100.0);
    MouseRotate behavior = new MouseRotate(objTr2);
    objTr2.addChild(behavior);
    behavior.setSchedulingBounds(bounds);
    MouseZoom behavior2 = new MouseZoom(objTr2);
    objTr2.addChild(behavior2);
    behavior2.setSchedulingBounds(bounds);
    objRoot.compile();
    return objRoot;
    }

  public GrandeOurse3DJava3D() {
    setLayout(new BorderLayout());
    GraphicsConfiguration config =
      SimpleUniverse.getPreferredConfiguration();
    c = new Canvas3D(config);
    add("Center",c);
    SimpleUniverse u = new SimpleUniverse(c);
    BranchGroup scene = createSceneGraph(u);
    u.getViewingPlatform().setNominalViewingTransform();
    u.addBranchGraph(scene);
  }

  public void mouseDragged(MouseEvent e) {
  }

  public void mouseMoved(MouseEvent e) {
  }

  public void mouseClicked(MouseEvent e) {
  }

  public void mouseEntered(MouseEvent e) {
    int x = e.getX() ;
    int y = e.getY() ;
    System.out.println(x+" "+y);
    PopupMenu pm = new PopupMenu("Hello");
    c.add(pm);
    pm.show(c,x,y);
  }

  public void mouseExited(MouseEvent e) {
  }

  public void mousePressed(MouseEvent e) {
    int x = e.getX() ;
    int y = e.getY() ;
    System.out.println(x+" "+y);
    PopupMenu pm = new PopupMenu("Hello");
    c.add(pm);
    pm.show(c,x,y);
  }

  public void mouseReleased(MouseEvent e) {
  }

  public static void main(String[] args) {
    new MainFrame(new GrandeOurse3DJava3D(),256,256);
  }
}

RETOUR

Remarques,erreurs
nicolas.janey@univ-fcomte.fr