Hey,
mein Problem besteht darin, dass ich ein Frame erzeuge, ihm den Canvas3D hinzufüge und ihn dann Visible setze.
Zuerst startet ein kleines Bild mit den Bildobjekten darin und ich kann ein Objekt auch super in der Welt bewegen. Der eigentlich Frame startet allerdings als extra Fenster in der von mir gewünschten Größe, ohne das Canvas3D.
Ich habe es eigentlich wie in den Tutorials gemacht und bin das auch schon einige mal durchgegangen, aber finde den Fehler nicht. Google und die Forensuche konnte mir leider auch nicht weiterhelfen.
Hier der Quelltext (absichtlich alles, vllt liegt ja der Fehler irgendwo, wo ich ihn nicht vermute. )
Hoffe mein Fehler ist erkennbar und mir kann jemand helfen, da ich langsam mit größeren Welten umgehen will.
Liebe Grüße,
Jens
mein Problem besteht darin, dass ich ein Frame erzeuge, ihm den Canvas3D hinzufüge und ihn dann Visible setze.
Zuerst startet ein kleines Bild mit den Bildobjekten darin und ich kann ein Objekt auch super in der Welt bewegen. Der eigentlich Frame startet allerdings als extra Fenster in der von mir gewünschten Größe, ohne das Canvas3D.
Ich habe es eigentlich wie in den Tutorials gemacht und bin das auch schon einige mal durchgegangen, aber finde den Fehler nicht. Google und die Forensuche konnte mir leider auch nicht weiterhelfen.
Hier der Quelltext (absichtlich alles, vllt liegt ja der Fehler irgendwo, wo ich ihn nicht vermute. )
Java:
public class BehaviorStarting extends Applet
{
private SimpleUniverse universe;
private BranchGroup _rootbg;
public BehaviorStarting()
{
super();
initializeUniverse();
initializeFrame();
_rootbg = erzeugeSzenenGraph();
_rootbg.compile();
universe.addBranchGraph(_rootbg);
}
private TransformGroup erzeugeTeddy()
{
TransformGroup transGroup = new TransformGroup();
Transform3D scale = new Transform3D();
Transform3D translate = new Transform3D();
scale.set(0.2);
translate.setTranslation(new Vector3d(0.0,0.5,0.0));
scale.mul(translate);
transGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE | TransformGroup.ALLOW_COLLIDABLE_WRITE | TransformGroup.ALLOW_COLLIDABLE_READ);
BranchGroup teddy = loadBGFromFile("teddy");
teddy.addChild(erzeugeLicht(new Color3f(0.5f,0.5f,0.5f)));
transGroup.addChild(teddy);
transGroup.setTransform(scale);
return transGroup;
}
private TransformGroup erzeugeWelt()
{
TransformGroup worldGroup = new TransformGroup();
Transform3D translate = new Transform3D();
translate.setTranslation(new Vector3d(0.0,-0.5,0.0));
BranchGroup world = loadBGFromFile("worldtests_Scene");
world.addChild(erzeugeLicht(new Color3f(1.0f,1.0f,1.0f)));
worldGroup.setCapability(TransformGroup.ALLOW_COLLIDABLE_WRITE | TransformGroup.ALLOW_COLLIDABLE_READ);
worldGroup.setTransform(translate);
worldGroup.addChild(world);
return worldGroup;
}
private BranchGroup erzeugeSzenenGraph()
{
BranchGroup root = new BranchGroup();
TransformGroup teddy = erzeugeTeddy();
//KeyNavigatorBehavior behave = new KeyNavigatorBehavior(teddy);
MyKeyBehavior behave = new MyKeyBehavior(teddy);
behave.setViewingPlatform(universe.getViewingPlatform());
behave.setSchedulingBounds(new BoundingSphere(new Point3d(),1000.0));
behave.setSchedulingBounds(new BoundingSphere());
root.addChild(erzeugeWelt());
root.addChild(behave);
root.addChild(teddy);
root.addChild(setupLight());
return root;
}
private AmbientLight setupLight()
{
BoundingSphere bounds = new BoundingSphere (new Point3d (0.0, 0.0, 0.0), 100.0);
Color3f ambientColor = new Color3f (0.5f, 0.5f, 0.5f);
AmbientLight ambientLightNode = new AmbientLight (ambientColor);
ambientLightNode.setInfluencingBounds (bounds);
return ambientLightNode;
}
private void initializeFrame()
{
setLayout(new BorderLayout());
GraphicsConfiguration gc = SimpleUniverse.getPreferredConfiguration();
Canvas3D canvas = new Canvas3D(gc);
add("Center", canvas);
}
private void initializeUniverse()
{
this.universe = new SimpleUniverse();
universe.getViewingPlatform().setNominalViewingTransform();
}
private BranchGroup loadBGFromFile(String s)
{
Scene m = null;
ObjectFile loader = new ObjectFile();
loader.setFlags (ObjectFile.RESIZE | ObjectFile.TRIANGULATE | ObjectFile.STRIPIFY);
try
{
m = loader.load("data/"+s+".obj");
}
catch(Exception e)
{
}
BranchGroup g = m.getSceneGroup();
return g;
}
private DirectionalLight erzeugeLicht(Color3f farbe)
{
DirectionalLight d_Licht = new DirectionalLight(
farbe, new Vector3f (-1.0f, -1.0f, -1.0f));
d_Licht.setInfluencingBounds (new BoundingSphere (new Point3d(0.0d,0.0d,0.0d), 100.0d));
return d_Licht;
}
public static void main(String[] args)
{
new MainFrame(new BehaviorStarting(),500,500);
}
}
Liebe Grüße,
Jens