import java.applet.*; import java.awt.*; import java.net.*; import javax.swing.*; import javax.vecmath.*; import javax.media.j3d.*; import com.sun.j3d.utils.universe.*; import com.sun.j3d.utils.geometry.*; import com.sun.j3d.utils.image.TextureLoader; import com.sun.j3d.utils.applet.MainFrame; public class Uppg3d extends JApplet{ private SimpleUniverse su; private Canvas3D canvas3D; private URL imURL; public void init(){ this.setSize(640, 480); this.getContentPane().setLayout(new BorderLayout()); canvas3D = new Canvas3D(null); this.getContentPane().add("Center",canvas3D); //Skapa ett universum med en BranchGraph su = new SimpleUniverse(canvas3D); su.getViewingPlatform().setNominalViewingTransform(); su.addBranchGraph(makeBranchGraph()); }//init BranchGroup makeBranchGraph(){ BranchGroup bg = new BranchGroup(); TransformGroup tg = new TransformGroup(); //Tillåt uppdateringar under runtime tg.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE); bg.addChild(tg); tg.addChild(makeBox()); //Skapa ett sfärisk påverkbart område BoundingSphere bounds = new BoundingSphere( new Point3d(0.0, 0.0, 0.0), 100.0); RotationInterpolator ri = new RotationInterpolator(new Alpha(-1, 7000), tg); ri.setSchedulingBounds(bounds); Transform3D rotor = new Transform3D(); rotor.rotZ(Math.PI/2.0f); ri.setTransformAxis(rotor); tg.addChild(ri); return bg; }//makeBranchGraph public com.sun.j3d.utils.geometry.Box makeBox(){ Appearance app = new Appearance(); try{ imURL = new URL(getCodeBase(), "3d.jpg"); }catch(Exception murle){} //Ladda in ytmaterialet TextureLoader tl = new TextureLoader(imURL, new String("RGB"), this); app.setTexture(tl.getTexture()); //Skapa en box com.sun.j3d.utils.geometry.Box box = new com.sun.j3d.utils.geometry.Box(0.6f, 0.3f, 0.3f,com.sun.j3d.utils.geometry.Box.GENERATE_TEXTURE_COORDS, app); return box; }//makeBox }//Uppg3c