# Java3d Szenenwechsel



## Drake (17. Apr 2008)

Hallo

habe vor kurzem angefangen mich im Zuge eines Spieles mit java3d zu beschäftigen, jedoch happert es an einigen vielen Stellen noch mit der Logik.

Ich kann eine Szene (BranchGroup) mit Hintergrundbild und Objekten erstellen, so weit so gut.
Jedoch habe ich leider keinen Ansatz wie ich einen Szenenwechsel (im Optimum später mit Überbelndung hinkriege)


```
public Tutorial() {
		this.c3d = new Canvas3D (SimpleUniverse.getPreferredConfiguration());  //So am besten
	    SimpleUniverse simpleU = new SimpleUniverse(c3d);  //Das VirtualUniverse, hier wird auch schon der View hinzugefügt
	  
	    AudioDevice audioDev = simpleU.getViewer().createAudioDevice();   //noch an joal anzupassen damit es wieder
funzt
	    
	    BranchGroup scene0 = createSceneGraph0();
	    BranchGroup scene1 = createSceneGraph1();
	    
	    simpleU.addBranchGraph(scene0);  //Fügt den SceneGraph hinzu
	    simpleU.addBranchGraph(scene1);  //Fügt den SceneGraph hinzu
	    
	    simpleU.getViewingPlatform().setNominalViewingTransform();  //Versetzt die Kamera so, dass man gleich etwas sehen kann
	    //Nicht mehr ganz so simpel, aber auch nicht schwer, oder? :)
	}
```

createSceneGraph0() und createSceneGraph0() erzeugen jeweils die gewünschte Szene, jedoch weiss nicht wie ich deren Darstekllung im SimpleUniverse beinflussen kann geschweige denn od dieses überhaupt der richtige Ansatz dafür ist.

mfg
Drake in 3D trouble


----------



## Marco13 (17. Apr 2008)

Der Wechsel an sich ist leicht: Man hängt die Szene an eine BracnhGroup, und wenn man die Szene ändern will, nimmt man sie raus (Capability bits wie ALLOW_CHILDREN_DETACH (oder so) setzen!) indem man "detach()" aufruft, und hängt stattdessen die neue rein.
Schwierig ist aber vermutlich eine Überblendung... ich wüßte spontan keine Möglichkeit, die nicht mit enormem Aufwand oder Hacks verbunden wäre. (Das heißt aber NICHT, dass es keine gibt! Hab' lange nichts mit Java3D gemacht, und kenne die API nicht so gut... :? ).


----------



## Drake (17. Apr 2008)

ok

ich habe eine BranchGroup scene,  dieser füge ich die BranchGroup scene0 zu.

für scene setze ich

```
scene.setCapability(BranchGroup.ALLOW_DETACH);
    scene.setCapability(BranchGroup.ALLOW_CHILDREN_EXTEND);
```

wenn ich auf Szene 2 wechseln möchte:


```
scene.detach();
    scene.addChild(this.createScene1()); //gibt eine BranchGroup zurück
     scene.compile();
```

jedoch erhalte ich danach einen schwarzen Bildschirm.

Ich bitte um Aufklärung denn ich bin mit meinem Latein erstmal am Ende


----------



## Marco13 (17. Apr 2008)

http://ls7-www.informatik.uni-dortmund.de/students/lectures/doc_mmi0405/j3d-html/javax/media/j3d/BranchGroup.html#detach()

public void detach() : *Detaches this BranchGroup from its parent.*


----------



## Drake (20. Apr 2008)

Danke

die ersten Schritte auf Neuland sind immer schwierig und ab und zu sieht man den besagten Wald vor lauter Baumen nicht.

Der letzte Wink mit dem Zaunpfahl kam an, detach() entfernt nicht die Kinder aus dem Knoten, sondern das Kind aus dem Elternknoten.

Auf neue Schwierigkeiten und die pasenden Lösungen

Drake


----------

