Mega Code Archive

 
Categories / Java / 3D Graphics
 

Light Demo

// From: http://www.micg.et.fh-stralsund.de/Java3D/java3D.htm#Bild1 import java.applet.Applet; import java.awt.BorderLayout; import java.awt.Frame; import java.awt.GraphicsConfiguration; import javax.media.j3d.AmbientLight; import javax.media.j3d.Appearance; import javax.media.j3d.BoundingSphere; import javax.media.j3d.BranchGroup; import javax.media.j3d.Canvas3D; import javax.media.j3d.DirectionalLight; import javax.media.j3d.Material; import javax.media.j3d.Transform3D; import javax.media.j3d.TransformGroup; import javax.vecmath.Color3f; import javax.vecmath.Point3d; import javax.vecmath.Vector3f; import com.sun.j3d.utils.applet.MainFrame; import com.sun.j3d.utils.geometry.Sphere; import com.sun.j3d.utils.universe.SimpleUniverse; public class Licht extends Applet {   /**    * init Methoden fur die Darstellung als Applet    */   public void init() {     setLayout(new BorderLayout());     GraphicsConfiguration config = SimpleUniverse         .getPreferredConfiguration();     canvas3D = new Canvas3D(config);     add("Center", canvas3D);     BranchGroup szene = macheSzene();     szene.compile();     universe = new SimpleUniverse(canvas3D);     universe.getViewingPlatform().setNominalViewingTransform();     universe.addBranchGraph(szene);   }   /**    * Erstellt den Szenegraphen    *     * @return BranchGroup    */   public BranchGroup macheSzene() {     BranchGroup objWurzel = new BranchGroup();     // Transformation, 2 Rotationen:     Transform3D drehung = new Transform3D();     Transform3D drehung2 = new Transform3D();     drehung.rotX(Math.PI / 4.0d);     drehung2.rotY(Math.PI / 5.0d);     drehung.mul(drehung2);     TransformGroup objDreh = new TransformGroup(drehung);     Sphere kugel = new Sphere(0.5f, Sphere.GENERATE_NORMALS, 50,         makeAppearance());     objWurzel.addChild(kugel);     objWurzel.addChild(objDreh);     //directes Licht     DirectionalLight d_Licht = new DirectionalLight();     d_Licht.setInfluencingBounds(new BoundingSphere(new Point3d(0.0d, 0.0d,         0.0d), Double.MAX_VALUE));     d_Licht.setColor(new Color3f(1.0f, 0.0f, 0.0f));     Vector3f dir = new Vector3f(1.0f, 2.0f, -1.0f);     dir.normalize();     d_Licht.setDirection(dir);     objWurzel.addChild(d_Licht);     // ambient Licht     AmbientLight a_licht = new AmbientLight();     a_licht.setInfluencingBounds(new BoundingSphere(new Point3d(0.0f, 0.0f,         0.0f), Double.MAX_VALUE));     a_licht.setColor(new Color3f(1.0f, 0.0f, 0.0f));     objWurzel.addChild(a_licht);     return objWurzel;   }   /**    * Wurfeldarstellung    *     * @return Appearance    */   private Appearance makeAppearance() {     Appearance a = new Appearance();     Material mat = new Material();     mat.setShininess(50.0f);     mat.setDiffuseColor(new Color3f(1.0f, 0.0f, 0.0f));     mat.setSpecularColor(new Color3f(0.0f, 0.0f, 0.0f));     a.setMaterial(mat);     return a;   }   /**    * gibt speicher frei    */   public void destroy() {     universe.removeAllLocales();   }   public static void main(String[] args) {     frame = new MainFrame(new Licht(), 500, 500);     frame.setTitle("Licht");   }   //---- Attribute -----------------------   private SimpleUniverse universe;   private Canvas3D canvas3D;   private static Frame frame; }