I was sitting on a piece of test- code and it won't wok which drives me crazy. I don't find the error (althought there are quite some posibillites) and maybe it's only because I'm damn tired, but if anybody could help me out that would surely save the day...
The two files are attached. I'm using J2SE 1.4.1_01 and Java3D 1.3.1OpenGL on WindowsXP and a GeForce2 MX 440 Video Card but this is definatly not the source of my problem since I do work with Java3D all the day and there it works. In fact most of the code from the createBasicScene()- Method is copied from classes I work with and there it works. But that framework is Bean-based and far to big to fit my needs in this special case.
Thanks in advance!
Greetz...
...Dennis
/* * Created on 24.06.2003 * */
/**
* @author Dennis Msakni
*
*/
public class Start {
Scene scene = null;
javax.swing.JFrame frame = null;
Start () {
scene = new Scene();
scene.addWall(0.0f, 0.0f, 0.0f, 0.0f, 2.0f, 10.0f);
scene.rotateY(1.5f);
scene.start();
frame = new javax.swing.JFrame("VR-Campus");
frame.getContentPane().add(scene.getCanvas3D());
frame.setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE);
frame.setSize(400, 400);
frame.show();
frame.repaint();
}
public static void main(String[] args) {
Start start = new Start();
}
}/*
* Created on 24.06.2003
*
*/
/**
* @author Dennis Msakni
*
*/
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import javax.media.j3d.AmbientLight;
import javax.media.j3d.Appearance;
import javax.media.j3d.Background;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.ColoringAttributes;
import javax.media.j3d.GraphicsConfigTemplate3D;
import javax.media.j3d.Material;
import javax.media.j3d.PointLight;
import javax.media.j3d.PolygonAttributes;
import javax.media.j3d.QuadArray;
import javax.media.j3d.RenderingAttributes;
import javax.media.j3d.Shape3D;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.vecmath.Color3f;
import javax.vecmath.Point3f;
import com.sun.j3d.utils.behaviors.mouse.MouseRotate;
import com.sun.j3d.utils.behaviors.mouse.MouseTranslate;
import com.sun.j3d.utils.behaviors.mouse.MouseZoom;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class Scene {
Canvas3D canvas3D = null;
AmbientLight ambientLight = null;
PointLight pointLight = null;
Background background = null;
MouseRotate mouseRotate = null;
SimpleUniverse simpleU = null;
BranchGroup rootGroup = null;
private void createLights() {
ambientLight = new AmbientLight();
ambientLight.setInfluencingBounds(new BoundingSphere());
pointLight = new PointLight();
pointLight.setInfluencingBounds(new BoundingSphere());
background = new Background();
background.setCapability(Background.ALLOW_APPLICATION_BOUNDS_READ);
background.setCapability(Background.ALLOW_APPLICATION_BOUNDS_WRITE);
background.setCapability(Background.ALLOW_COLOR_READ);
background.setCapability(Background.ALLOW_COLOR_WRITE);
background.setCapability(Background.ALLOW_IMAGE_READ);
background.setCapability(Background.ALLOW_IMAGE_WRITE);
background.setCapability(Background.ALLOW_GEOMETRY_READ);
background.setCapability(Background.ALLOW_GEOMETRY_WRITE);
background.setColor(0.0f, 0.0f, 1.0f);
background.setApplicationBounds(new BoundingSphere());
}
public void createBasicScene () {
GraphicsDevice dev =
GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice();
GraphicsConfigTemplate3D template = new GraphicsConfigTemplate3D();
GraphicsConfiguration[] gc = dev.getConfigurations();
canvas3D = new Canvas3D(template.getBestConfiguration(gc));
simpleU = new SimpleUniverse(canvas3D);
simpleU.getViewer().getView().setBackClipDistance(100.0);
//simpleU.getViewer().getView().setFieldOfView(3.1415927/8.0);
simpleU.getViewingPlatform().setNominalViewingTransform();
createLights();
TransformGroup objectsTransformGroup = new TransformGroup();
objectsTransformGroup.setCapability(TransformGroup.ALLOW_CHILDREN_EXTEND);
objectsTransformGroup.setCapability(TransformGroup.ALLOW_CHILDREN_READ);
objectsTransformGroup.setCapability(TransformGroup.ALLOW_CHILDREN_WRITE);
objectsTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
objectsTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
TransformGroup zoomGroup = new TransformGroup();
mouseRotate = new MouseRotate();
mouseRotate.setSchedulingBounds(new BoundingSphere());
MouseZoom mouseZoom = new MouseZoom();
mouseZoom.setSchedulingBounds(new BoundingSphere());
MouseTranslate mouseTranslate = new MouseTranslate();
mouseTranslate.setSchedulingBounds(new BoundingSphere());
rootGroup = new BranchGroup();
zoomGroup.addChild(mouseRotate);
zoomGroup.addChild(mouseTranslate);
zoomGroup.addChild(mouseZoom);
mouseRotate.setTransformGroup(objectsTransformGroup);
mouseTranslate.setTransformGroup(objectsTransformGroup);
mouseZoom.setTransformGroup(objectsTransformGroup);
objectsTransformGroup.addChild(zoomGroup);
rootGroup.addChild(objectsTransformGroup);
rootGroup.addChild(ambientLight);
rootGroup.addChild(pointLight);
rootGroup.addChild(background);
}
public void start() {
rootGroup.compile();
simpleU.addBranchGraph(rootGroup);
}
public void rotateY (float angle) {
Transform3D transform = new Transform3D();
mouseRotate.getTransformGroup().getTransform(transform);
transform.rotY(angle);
}
public Canvas3D getCanvas3D() { return canvas3D; }
public void setCanvas3D(Canvas3D canvas3D) { this.canvas3D = canvas3D; }
public void addWall (float lowerLeftX, float lowerLeftY, float lowerLeftZ,
float upperRightX, float upperRightY, float upperRightZ) {
Shape3D wall = new Shape3D();
QuadArray geometry = new QuadArray(4, QuadArray.COORDINATES |
QuadArray.COLOR_3);
Point3f point0 = new Point3f(lowerLeftX, lowerLeftY, lowerLeftZ);
Point3f point1 = new Point3f(upperRightX, lowerLeftY, upperRightZ);
Point3f point2 = new Point3f(upperRightX, upperRightY, upperRightZ);
Point3f point3 = new Point3f(lowerLeftX, upperRightY, lowerLeftZ);
Color3f color0 = new Color3f(1.0f, 0.0f, 0.0f);
Color3f color1 = new Color3f(1.0f, 1.0f, 0.0f);
Color3f color2 = new Color3f(0.0f, 1.0f, 0.0f);
Color3f color3 = new Color3f(0.0f, 1.0f, 1.0f);
geometry.setCoordinate(0, point0);
geometry.setCoordinate(1, point1);
geometry.setCoordinate(2, point2);
geometry.setCoordinate(3, point3);
geometry.setColor(0, color0);
geometry.setColor(1, color1);
geometry.setColor(2, color2);
geometry.setColor(3, color3);
Appearance appearance = new Appearance();
Material material = new Material();
PolygonAttributes polygonAttributes = new PolygonAttributes();
RenderingAttributes renderingAttributes = new RenderingAttributes();
ColoringAttributes coloringAttributes = new ColoringAttributes();
material.setAmbientColor(0.5f, 0.5f, 0.5f);
material.setDiffuseColor(1.0f, 0.0f, 0.0f);
polygonAttributes.setPolygonMode(PolygonAttributes.POLYGON_FILL);
renderingAttributes.setIgnoreVertexColors(true);
coloringAttributes.setColor(1.0f, 0.0f, 1.0f);
appearance.setColoringAttributes(coloringAttributes);
appearance.setRenderingAttributes(renderingAttributes);
appearance.setPolygonAttributes(polygonAttributes);
appearance.setMaterial(material);
wall.setGeometry(geometry);
wall.setAppearance(appearance);
System.out.println(wall.toString());
wall.setBoundsAutoCompute(true);
System.out.println(wall.getBounds());
rootGroup.addChild(wall);
}
public Scene() {
createBasicScene();
}
}
