# Java3D Performance und Abstürze



## Pacihu (21. Jul 2004)

Hi!

Ich habe volgende Probleme:

1. Ich habe eine "ganz lange" Strase (einfache texturierer BOX),  in mein Universe, und ich habe die Standards mouse behavior implementirurungen, ich kann mit dem Mause die Stasse lang gehen. Immer wenn ich eine bestimmte strecke in X Y oder Z richtung gehe kackt dass ganze APPLET ab und ich kann nichts machen. Ich habe keine ahnung was dass problem sein kann, hab das ganze code schon durchgekuckt aber es ist alles ok. Es scheint mir * dass wenn ich von eine bestimmte radious von der 0 0 0 rauskomme kakkt alles ab.*
2. meine zweites problem ist, dass ich auf meine strasse 1300 Autos dann langfahren lasse(mit jeder sein egener  position path interpolator), dann wurd der Peromrnce einfach zu schlächt, und ich habe schon mit LOD oder mit einfacheren autos probiert aber es liegt einfach nicht an die objekten und details. Es kann doch nicht sein dass JAVA 3D nicht schaft 1300 verschidene obijekte linerar zu interpoieren?

Danke für Antworteten, und hoffe dass jemand mir was vorschlagen kann, weil ich krige ja die Krise, hab kein ide mehr, hab schon  alles versucht  ???:L [/b]


----------



## Illuvatar (21. Jul 2004)

1. Fehlermeldung/Exception/Stacktrace/Codeausschnitte?
2. Kannst du vielleicht alle (oder immer mehrere) Autos in eine Group packen und die interpolieren? Oder ist das nicht möglich?


----------



## Oxygenic (21. Jul 2004)

Die Angabe "x Autos" ist für eine Analyse leider nicht zu gebrauchen. Aus wie vielen Polygonen bestehen sie? Wie viele und wie große Texturen haben sie? Welche Back Clip Distance verwendest du? Welche Qualitätslevel verwendest du bei den verschiedenen Appearance-Attributen?

Ein paar nützliche Informationen zu Geschwindigkeitsoptimierungen finden sich übrigens unter http://java3d.virtualworlds.de/j3dw...an_I_do_optimizations_for_a_higher_framerate?


----------



## Pacihu (21. Jul 2004)

```
public class RoadAuto1 extends Applet {

	SimpleUniverse simpleU;

	public void init() {
		setLayout(new BorderLayout());
		Canvas3D c = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
		add("Center", c);
		simpleU = new SimpleUniverse(c); 
		// Canvas3D

		BranchGroup scene = createSceneGraph();
		scene.compile();

		simpleU.addBranchGraph(scene); 	}

	public BranchGroup createSceneGraph() {

		// start of maus behavior sescription
		Transform3D sceneTransform;
		TransformGroup sceneTransformGroup; //implements the mouse behavior
		BoundingSphere bounds;
		bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 0.0f);

		sceneTransform = new Transform3D();
		sceneTransform.setScale(0.3f); 
		Transform3D yrot = new Transform3D();
		yrot.rotY(Math.PI / 2);

		
		sceneTransform.mul(yrot);
		sceneTransformGroup = new TransformGroup(sceneTransform);

		sceneTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
		sceneTransformGroup.setCapability(TransformGroup.ALLOW_TRANSFORM_READ);
		// Add mouse behaviors
		// Create the rotate behavior node
		MouseRotate rotBehavior = new MouseRotate();
		rotBehavior.setTransformGroup(sceneTransformGroup);
		sceneTransformGroup.addChild(rotBehavior);
		rotBehavior.setSchedulingBounds(bounds);

		
		// Create the zoom behavior node
		MouseZoom zoomBehavior = new MouseZoom();
		zoomBehavior.setTransformGroup(sceneTransformGroup);
		sceneTransformGroup.addChild(zoomBehavior);
		zoomBehavior.setSchedulingBounds(bounds);

		// Create the translate behavior node
		MouseTranslate transBehavior = new MouseTranslate();
		transBehavior.setTransformGroup(sceneTransformGroup);
		sceneTransformGroup.addChild(transBehavior);
		transBehavior.setSchedulingBounds(bounds);

		// end of mouse behavior dscription

		BranchGroup objRoot = new BranchGroup(); // creating the root
		objRoot.addChild(sceneTransformGroup); // adding mouse behavior
		

		TransformGroup Road3dTransformGroup = new TransformGroup();
		Road3dTransformGroup
				.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);

		//Appearance Box1Appear = new Appearance();
		//Box Box1 = new Box(10, 0.01f, 0.5f,Box1Appear);
		//Road3dTransformGroup.addChild(Box1);
		sceneTransformGroup.addChild(Road3dTransformGroup);

		int i = 80;
		Road3dTransformGroup.addChild(new Road3d(i));

		Vector3d position = new Vector3d(0, 0.0, 0.0);
		Vector3d positionMovement = new Vector3d(0, 0.4, -0.5);
		for (int j = 0; j < i; j++) {
			Road3dTransformGroup.addChild(new Movement3D(new Vehicle3D(),
					positionMovement, -i, i, i * 500, 1000 * j));
			
			Road3dTransformGroup.addChild(new Placement3D(new Movement3D(new Vehicle3D(),
					positionMovement, -i, i, i * 500, 1000 * j),position)); // the
		}
		System.gc();
		Background background = new Background();
		//background.setColor(0.3f, 0.9f, 0.7f);
		background.setApplicationBounds(new BoundingSphere());
		objRoot.addChild(background);

		ViewingPlatform vp = simpleU.getViewingPlatform(); // get the
		// ViewingPlatform of the SimpleUniverse
		TransformGroup View_TransformGroup = vp.getMultiTransformGroup()
				.getTransformGroup(0); // get the TransformGroup associated
		Transform3D View_Transform3D = new Transform3D(); // create a
		// Transform3D for the ViewingPlatform
		View_TransformGroup.getTransform(View_Transform3D); // get the current
		// 3d from the ViewingPlatform
		View_Transform3D.setTranslation(new Vector3f(0f, 1.0f, 0.0f)); // set

		View_TransformGroup.setTransform(View_Transform3D); // assign

		return objRoot;
	} // end of CreateSceneGraph method of Road3D

	public RoadAuto1() {

	} // end of Road3d (constructor)

	public void destroy() {

		// this function will allow Java3D to clean up upon quiting
		simpleU.removeAllLocales();

	}

	public static void main(String[] args) {
		Frame frame = new MainFrame(new RoadAuto1(), 256, 256);
	} 

} // end of class
```

So sieht der Main Class aus,  und unabhängig wie die Vech3D -s die ich auf die 2 spuren sätze hinzufüge wenn ich mich mit dem mause behavior fern genug entferne hangt alles ab, ich kann nicht mehr weiter machen, muss den Applet zumachen, und habe keine Ahnun wieso dass kommt, ich bin eigentlich auch nicht so mit J3D wetraut, und hab schon ganz wiel nachgelesen aber bin nicht draufgekommen, dise Problem ist unabhängig was fur Autos ich fahren lasse und wie viel es muss urgentwas in mein MausBehaiviour oder Univers Construction nicht Stimmen. 

Mit dem Performance optimierung habe ich LOD probiert, die Autos sind mit Triungulation gemacht, und sind ganz detaliert, aber es reicht halt nicht. Ich breuchte glaube ich etwas womit ich spacificiren kann dass ich nur dass rechne und damit resource werbrauche was auch dargestellt werden muss, und willecht kann man ja den blick winkel auch kleinersetzen oder mit ürgentwas den Java3D sagen was wichtig und im sicht liegt.

Sorry wegen die Rechtsschreibfähler, und bin dankbar für die Antworten, 

THX Gruse Pacihu


----------

