- // erzeugt den Content-Branch des Szenengraphen
-
- public BranchGroup createSceneGraph() {
- BranchGroup objRoot = new BranchGroup();
BranchGroups können kompiliert werden. Die Kompilierung bewirkt eine Optimierung
des Asts (Branch). Günstig ist eine Optimierung z. B. dann, wenn aus Gründen der Lesbarkeit
der Anwendungsentwickler zwei TransformGroups untereinandergehängt hat, die man auch
zu einer TransformGroup hätte zusammenfassen können. Das Zusammenfassen übernimmt
nun die compile-Methode.
- // nimmt Optimierungen am Ast des Szenengraphen vor
- objRoot.compile();
-
- return objRoot;
- } // Ende Methode createSceneGraph
- // versetzt den Mond auf seine Umlaufbahn
-
- Transform3D moonTranslate = new Transform3D();
- moonTranslate.set(new Vector3f(0f, 0f, MOONORBIT));
- TransformGroup objMoonTranslate = new TransformGroup(moonTranslate);
Im folgenden Code-Fragment kommt die Rotation zum Einsatz. Da die Erdachse leicht
geneigt ist, muss sie um die Z-Achse gedreht werden. Die Konstante ECLIPTIC gibt dabei den
Winkel im Bogenmaß an.
- // simuliert die Ekliptik (Neigung der Erdachse)
-
- Transform3D ecliptic = new Transform3D();
- ecliptic.rotZ(ECLIPTIC);
- TransformGroup objEcliptic = new TransformGroup(ecliptic);
Java 3D verwendet ein Transformationsmodell das sich der klassischen 3D-Mathematik
bedient. Eine Transformation wird als 4x4 Double-Matrix dargestellt. Durch die Werte
in der oberen 3x3 Matrix wird eine Rotation und eine Skalierung festgelegt. Die Werte
m03, m13 und m23 dienen wiederum der Translation. Transformiert wird indem die
Transformationsmatrix mit einem 4-Tupel welches die zu transformierenden Koordinaten
enthält multipliziert wird. Das Ergebnis stellt die neuen transformierten Koordinaten dar.
Da die Transformationsmatrix eine gewöhnliche Matrix ist, wie sie uns aus der Linearen
Algebra her bekannt ist, kann man darauf beliebige Operationen anwenden. Vorsicht ist
aber geboten bei dem Versuch zwei Transformationen durch die Multiplikation miteinander
zusammenzufassen, denn die Matrixenmultiplikation ist nicht kommutativ.
[ m00 m01 m02 m03 ] [ x ] [ x' ] [ m10 m11 m12 m13 ] . [ y ] = [ y' ] [ m20 m21 m22 m23 ] [ z ] [ z' ] [ m30 m31 m32 m33 ] [ w ] [ w' ] x' = m00 . x + m01 . y + m02 . z + m03 . w y' = m10 . x + m11 . y + m12 . z + m13 . w z' = m20 . x + m21 . y + m22 . z + m23 . w w' = m30 . x + m31 . y + m32 . z + m33 . w
- Sphere sun = new Sphere(SUNRADIUS, sunAppear);
... [ Seminar XML und JAVA ] ... [ Thema Java 3D API ] ... [ Group Node Objects ] ... [ Leaf Node Objects ] ...