H
h0b0
Gast
Ich komme aus der OpenGL-Welt und hoffte, mit folgendem Code, der den Scenegraph zusammensetzt, eine Erde zu erhalten, die eine Sonne umkreist. Jedoch kreist die Erde nicht, sondern rotiert um ihre eigene Achse. Was habe ich falsch gemacht? Nach meiner OpenGL-Logik würde ich erwarten, dass erst die Rotation und dann die Translation ausgeführt wird, was ganz offensichtlich nicht der Fall ist.
Code:
public BranchGroup createSceneGraph(){
BranchGroup objRoot = new BranchGroup();
TransformGroup tilt = new TransformGroup();
Transform3D tiltView = new Transform3D();
Transform3D rotE1 = new Transform3D();
Transform3D rotE2 = new Transform3D();
Transform3D transEarth = new Transform3D();
ColorCube sun = new ColorCube(0.4);
ColorCube earth = new ColorCube(dia/4);
TransformGroup rotEarth1 = new TransformGroup();
TransformGroup rotEarth2 = new TransformGroup();
TransformGroup trans = new TransformGroup();
tiltView.rotX(tiltAngle);
tilt.setTransform(tiltView);
transEarth.set(new Vector3d(0, 1, 0));
trans.setTransform(transEarth);
rotEarth1.setTransform(rotE1);
rotEarth1.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
rotEarth2.setTransform(rotE2);
rotEarth2.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
RotationInterpolator interpolator = new RotationInterpolator(new Alpha(-1, 4000), rotEarth1);
interpolator.setSchedulingBounds(new BoundingSphere());
//Liegt der Hund hier begraben?
objRoot.addChild(tilt);
tilt.addChild(sun);
tilt.addChild(rotEarth1);
rotEarth1.addChild(interpolator);
rotEarth1.addChild(trans);
trans.addChild(earth);
return objRoot;
}