//the SimpleUniverse.
public void createSceneGraph(SimpleUniverse su)
{
//*** The root of the graph containing the scene (with a cube and a sphere). ***
BranchGroup theScene = new BranchGroup();
//Generate an Appearance.
Color3f ambientColourShaded = new Color3f(0.0f,0.4f,0.4f);
Color3f emissiveColourShaded = new Color3f(0.0f,0.0f,0.0f);
Color3f diffuseColourShaded = new Color3f(0.0f,0.7f,0.7f);
Color3f specularColourShaded = new Color3f(0.0f,0.5f,0.5f);
float shininessShaded = 20.0f;
Appearance shadedApp = new Appearance();
shadedApp.setMaterial(new Material(ambientColourShaded,emissiveColourShaded,
diffuseColourShaded,specularColourShaded,shininessShaded));
float r = 0.3f; //The radius of the sphere.
float boxHL = 0.7f*r; //Half the vertex length of the cube.
float shift = 3.0f*r; //Distance between cube and sphere.
//*** The sphere and its transformation group ***
Sphere s = new Sphere(r,Sphere.GENERATE_NORMALS,100,shadedApp);
Transform3D tfSphere = new Transform3D();
tfSphere.setTranslation(new Vector3f(-0.95f+r,0.0f,0.0f));
TransformGroup tgSphere = new TransformGroup(tfSphere);
tgSphere.addChild(s);
theScene.addChild(tgSphere);
//*** The cube and its transformation group ***
Box b2 = new Box(boxHL,boxHL,boxHL,shadedApp);
Transform3D tfBox2 = new Transform3D();
tfBox2.setTranslation(new Vector3f(-0.95f+r+shift,0.0f,0.0f));
Transform3D rotation = new Transform3D();
rotation.rotY(Math.PI/4);
Transform3D rotationX = new Transform3D();
rotationX.rotX(Math.PI/6);
rotation.mul(rotationX);
tfBox2.mul(rotation);
TransformGroup tgBox2 = new TransformGroup(tfBox2);
tgBox2.addChild(b2);
theScene.addChild(tgBox2);
//Generate a white background.
Background bg = new Background(new Color3f(1.0f,1.0f,1.0f));
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0,0.0,0.0),Double.MAX_VALUE);
bg.setApplicationBounds(bounds);
theScene.addChild(bg);
theScene.compile();
//Add the scene to the universe.
su.addBranchGraph(theScene);
}