All pastes #276885 Raw Edit

Something

public text v1 · immutable
·published 2006-12-12 19:42 UTC
rendered paste body
	import com.sun.j3d.utils.universe.SimpleUniverse;
    import javax.media.j3d.BranchGroup;
    import javax.media.j3d.Transform3D;
    import javax.media.j3d.TransformGroup;
    import javax.media.j3d.Canvas3D;
    import javax.media.j3d.Alpha;
    import javax.media.j3d.RotationInterpolator;
    import javax.media.j3d.BoundingSphere;
    import javax.media.j3d.Appearance;
    import javax.media.j3d.Material;
    import javax.media.j3d.Font3D;
    import javax.media.j3d.FontExtrusion;
    import javax.media.j3d.Text3D;
    import javax.media.j3d.Shape3D;
    import javax.media.j3d.DirectionalLight;
    import javax.swing.JFrame;
    import javax.vecmath.Vector3f;
    import javax.vecmath.Color3f;
    import java.awt.BorderLayout;
    import java.awt.GraphicsConfiguration;
    import java.awt.Font;
    import java.applet.Applet;

    public class HelloWorld extends JFrame {

       private Transform3D rotate1 = new Transform3D();
       private  Transform3D rotate2 = new Transform3D();

       public HelloWorld() {
         super("Silabsoft");
         Canvas3D canvas3D = createCanvas3D();
         BranchGroup scene = createSceneGraph();
         connect(canvas3D, scene);
       }

       private Canvas3D createCanvas3D() {
         setSize(300, 300);
         getContentPane().setLayout(new BorderLayout());
         GraphicsConfiguration config =
           SimpleUniverse.getPreferredConfiguration();
         Canvas3D canvas3D = new Canvas3D(config);
         setSize(300, 300);
         getContentPane().add(canvas3D);
         return canvas3D;
       }

       public BranchGroup createSceneGraph() {
         BranchGroup objRoot = new BranchGroup();
         TransformGroup mover = moveTextBack();
         TransformGroup spinner = createSpinner();
         objRoot.addChild(mover);
         mover.addChild(spinner);
         spinner.addChild( createTextShape());
         spinner.addChild(makeSpin(spinner));
         setLighting(mover);
         return objRoot;
       }

       private TransformGroup createSpinner() {
         TransformGroup spinner = new TransformGroup();
         spinner.setCapability(TransformGroup.
                                 ALLOW_TRANSFORM_WRITE);
         return spinner;
       }

       private TransformGroup moveTextBack() {
         Transform3D transform3D = new Transform3D();
         transform3D.setTranslation(
                       new Vector3f(0.0f, 0.0f, -5.0f));
         return new TransformGroup(transform3D);
       }

       private Shape3D createTextShape() {
         Appearance textAppear = new Appearance();
         textAppear.setMaterial(new Material());
         Font3D font3D = new Font3D(
                  new Font("Helvetica", Font.PLAIN, 1),
                                   new FontExtrusion());
         Text3D textGeom = new Text3D(font3D,
                             new String("Silabsoft"));
         textGeom.setAlignment(Text3D.ALIGN_CENTER);
         Shape3D textShape = new Shape3D();
         textShape.setGeometry(textGeom);
         textShape.setAppearance(textAppear);
         return textShape;
      }

       private void setLighting(
                               TransformGroup objMove) {
         DirectionalLight light =
                                 new DirectionalLight();
        light.setInfluencingBounds(
                                  new BoundingSphere());
        light.setDirection(
                         new Vector3f(0.0f,2.0f,-1.0f));
        light.setColor(new Color3f(
                                     0.0f, 1.0f, 1.0f));
        objMove.addChild(light);
       }

       private RotationInterpolator makeSpin(
                               TransformGroup spinner) {
         RotationInterpolator rotator =
           new RotationInterpolator(
                          new Alpha(-1, 3000), spinner);
            rotator.setTransformAxis(rotateCube());
            BoundingSphere bounds =
                                   new BoundingSphere();
         rotator.setSchedulingBounds(bounds);
         return rotator;
       }

       private Transform3D rotateCube() {
         rotate1.rotX(Math.PI / 4.0d);
         rotate2.rotY(Math.PI / 3.0d);
         rotate1.mul(rotate2);
         return rotate1;
       }

       private void connect(Canvas3D canvas3D,
                            BranchGroup scene) {
         SimpleUniverse simpleU =
           new SimpleUniverse(canvas3D);
         simpleU.getViewingPlatform().
           setNominalViewingTransform();
         simpleU.addBranchGraph(scene);
       }

       public static void main(String[] args) {
         new HelloWorld().setVisible(true);
       }
	public static void init() {
		new HelloWorld().setVisible(true);
	}
    }