import java.applet.Applet;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.image.*;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import javax.vecmath.*;
public class Universe extends Applet
{
private SimpleUniverse u = null;
public Universe()
{
}
public BranchGroup createSceneGraph()
{
BranchGroup RootBG=new BranchGroup();
DirectionalLight DLgt=new DirectionalLight(new Color3f(0.8f,0.8f,1.0f),new Vector3f(-0.5f,-1f,-0.5f));
AmbientLight ALgt=new AmbientLight(new Color3f(0.8f,0.8f,0.8f));
BoundingSphere BigBounds=new BoundingSphere(new Point3d(),100000);
ALgt.setInfluencingBounds(BigBounds);
DLgt.setInfluencingBounds(BigBounds);
RootBG.addChild(ALgt);
RootBG.addChild(DLgt);
Appearance BoxAppearance=new Appearance();
TransformGroup BoxTG=new TransformGroup(),RotTG=new TransformGroup();
BoxTG.addChild(RotTG);
RotTG.addChild(new com.sun.j3d.utils.geometry.Box(0.1f,0.2f,0.3f,Sphere.GENERATE_NORMALS,BoxAppearance));
RotTG.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
Alpha alpha = new Alpha(1, 5000);
RotationInterpolator rotationInterpolator = new RotationInterpolator(
alpha, RotTG);
rotationInterpolator.setMinimumAngle(0);
rotationInterpolator.setMaximumAngle((float) Math
.toRadians(360 * 5));
rotationInterpolator.setSchedulingBounds(new BoundingSphere(
new Point3d(), 100000));
RootBG.addChild(rotationInterpolator);
Alpha alpha2 = new Alpha(1, 7000);
PositionInterpolator positionInterpolator = new PositionInterpolator(alpha2, RotTG);
positionInterpolator.setStartPosition(0f);
positionInterpolator.setEndPosition(1f);
positionInterpolator.setSchedulingBounds(new BoundingSphere(
new Point3d(), 100000));
RootBG.addChild(positionInterpolator);
RootBG.addChild(BoxTG);
RootBG.compile();
return RootBG;
}
public void init()
{
setLayout(new BorderLayout());
GraphicsConfiguration config=SimpleUniverse.getPreferredConfiguration();
Canvas3D c = new Canvas3D(config);
add("Center", c);
u = new SimpleUniverse(c);
u.getViewingPlatform().setNominalViewingTransform();
u.addBranchGraph(createSceneGraph());
}
public static void main(String[] args)
{
new MainFrame(new Universe(), 400, 400);
}
}