# Java3D: Behavior scheduling bounds



## Alemarius Nexus (29. Jul 2009)

Hallo erstmal,

Ich bin gerade dabei ein bisschen Java3D zu lernen und lese mir dazu das Tutorial von Sun durch. Der Test in Kapitel 1, Frage 5, bereitet mir allerdings Probleme. Da heißt es:



> In HelloJava3Dc, the bounding sphere has a radius of 1 meter. Is this value larger or smaller than it
> needs to be? What is the smallest value that would guarantees the cube will be rotating if it is in view?



In dem Programm wurde ein ColorCube mit der Skalierung 0.4 erzeugt (Die Seitenlänge beträgt also 0.8), ein RotationInterpolator angehängt und diesem eine BoundingSphere für die scheduling bounds zugewiesen. In der Antwort zu dieser Frage steht:



> The BoundingSphere only needs a radius of 0.8 (0.4 * 2.0). The center should be (0, 0, 0). The location of
> the BoundingSphere will be transformed by any TransformGroup objects above it in its scene graph path.



Nun frage ich mich: Wieso ein Radius von 0.8? Die Frage war ja, welches der kleinsmögliche Radius ist, bei dem der Würfel immer rotiert, wenn er im Blickfeld ist. Einen kleinstmöglichen Wert kann es da aber doch garnicht geben, denn egal wie weit man den Würfel von der Kamera "wegschiebt", er bleibt schließlich immernoch im Blickfeld. Die BoundingSphere ist dann aber nichtmehr innerhalb des view radius.
Wie kommt der Wert zu stande? Warum soll der Radius gerade so groß sein, wie der Würfel? Die BoundingSphere wäre dadurch ja doppelt so groß wie der Würfel.

Ich habe da bestimmt irgendwo einen Verständnis- oder Denkfehler drin, aber ich kann ihn nicht finden. Könnt ihr mir helfen?

Danke im Voraus.


----------



## siriuswhite (29. Jul 2009)

Natürlich gibt es eine minimale BoundingSphere, nämlich die bei der die äußerste Kante des Würfels bei der Drehung grade so nicht aus dem Bounding herausragt


----------



## Marco13 (29. Jul 2009)

Ich bin gerade nicht sicher, ob es gut oder schlecht ist, sich so an etwas "festzubeißen"  

Ein bißchen seltsam ist das schon. Die Bounds alleine machen das ja nicht aus, es kommt auch auf den ActivationRadius der ViewPlatform an - und selbst wenn man da diesen abstrusen Default-Wert von 62 annimmt, wirkt das irgendwie seltsam. Hab's gerade mal getestet (dummerweise ist's etwas aufwändiger, rauszufinden, ob er sich dreht, wenn man ihn nicht sieht, aber) .. bei einiger Entfernung dreht er sich auch bei 0.8 eben NICHT mehr, allerdings verschwindet er vorher auch aus der hinteren Clipping-Plane... also... insgesamt würde ich behaupten, dass man diese Aussage nicht so ernst nehmen muss: Wenn man den ActivationRadius der ViewPlatform auf 0 setzt, dreht er sich mal sowas von überhauptnicht :joke: , aber vielleicht habe ich ja (auch) einen Denkfehler drin.


----------



## Alemarius Nexus (29. Jul 2009)

> Natürlich gibt es eine minimale BoundingSphere, nämlich die bei der die äußerste Kante des Würfels bei der Drehung grade so nicht aus dem Bounding herausragt



Es geht ja um die scheduling bounds. Man gibt an, dass der Würfel sich nur dann drehen soll, wenn sich der Aktivierungsbereich der View Platform innerhalb dieser bounds befindet (oder eher andersherum). Es gibt sicherlich eine minimale BoundingSphere, aber die Frage zielte ja darauf hinaus, welches die minimalen sheduling bounds sind, bei der sich der Würfel in jedem Falle noch dreht, wenn er sichtbar ist. Und die gibt es nicht, da die BoundingSphere dann (theoretisch) unendlich groß sein müsste.




> insgesamt würde ich behaupten, dass man diese Aussage nicht so ernst nehmen muss



Genau das wollte ich wissen. Ich habe mich deswegen so daran festgebissen, weil ich dachte, ich hätte da prinzipiell etwas falsch verstanden. Ich kann zwar nicht nachvollziehen, wie der Autor des Tutorials auf einen Radius von 0.8 kommt (und deshalb auch keine Rückschlüsse darauf ziehen, was die Frage eigentlich hätte bedeuten sollen), aber das muss ich dann wohl auch nicht.

Danke für die Hilfe!


----------

