# Drehen nur um x-Achse



## SegFault (8. Dez 2008)

Hallo Zusammen. Komme gerade bei eigentlich etwas ganz einfachen nicht weiter.
Ich möchte bei einen drücken auf die einfügen Taste ein Objekt um genau 1 grad um die globale Y-Achse drehen (nicht um die lokale Y-Achse des Objektes

mit folgenden Code kann ich das ja um das Lokale Koordinatensystem:


```
case KeyEvent.VK_INSERT:
   tochange.getTransform(old);
   nm.rotY((Math.PI*2)/360);
   old.mul(nm);
   tochange.setTransform(old);
   System.out.println("rot left");
   break;
```
Wie krieg ich das aber hin das er nun um 1 Grad um das Globale Koordinatensystem dreht. Da die Kamera (Also die View Platzform die ich damit drehen will) bei mir etwas gekippt ist dreht der ja nun auch leicht gekippt. Das will ich nicht. Es soll also die neigung durch die X-Achse vergessen.


----------



## SegFault (9. Dez 2008)

Ich möchte einfach nur eine Kamera wie in Strategie Spielen üblich.

Per Cursortasten bewegt sich diese in die entsprechende richtungen links,rechts,vor,zurück kommt aber den boden dabei nicht näher. mit Bild auf und Bild ab will ich den abstand zum boden ändern. Mit einfügen und entfernen links und rechts rotieren und mit pos1 und ende nach oben und unten. Das problem ist momentan das bei vor und zurück die kamera richtung boden/himmel fährt sofern sie gekippt ist. Das will ich nicht, das sollte doch irgendwie machbar sein?

Das wäre das erste von einigen Problemen bei meinen jetzigen Projekt. 
LG, Heiko


----------



## SegFault (10. Dez 2008)

Habs nun hinbekommen indem ich nur die Kamera um die X Achse rotiere und bei rotationen um die ZY Achsen bzw bei bewegungen die gesamte Welt verschieben. Leider ergibt sich das scheinbar ein problem mit dem Picking. Denn ich kann nun per Pickray nicht genau ermitteln wo ich die XZ Achse schneide.


----------



## Marco13 (10. Dez 2008)

_Wie krieg ich das aber hin das er nun um 1 Grad um das Globale Koordinatensystem dreht. Da die Kamera (Also die View Platzform die ich damit drehen will) bei mir etwas gekippt ist dreht der ja nun auch leicht gekippt. Das will ich nicht. Es soll also die neigung durch die X-Achse vergessen._

Bei solchen Fragen sind die Antworten immer schwierig: "Ich will, dass das ganz normal aber voll cool aussieht, und wenn der Virenscanner aktiv und das CD-Laufwerk offen ist, soll er sich drehen". 

Klingt aber, als würde es helfen, die Drehung um die x- und die y-Achse mit _getrennten_ TransformNodes zu machen, und die hintereinanderzuhängen - in welcher Reihenfolge, musst du wissen (oder ausprobieren....)


----------



## SegFault (10. Dez 2008)

Marco13 hat gesagt.:
			
		

> _Wie krieg ich das aber hin das er nun um 1 Grad um das Globale Koordinatensystem dreht. Da die Kamera (Also die View Platzform die ich damit drehen will) bei mir etwas gekippt ist dreht der ja nun auch leicht gekippt. Das will ich nicht. Es soll also die neigung durch die X-Achse vergessen._
> 
> Bei solchen Fragen sind die Antworten immer schwierig: "Ich will, dass das ganz normal aber voll cool aussieht, und wenn der Virenscanner aktiv und das CD-Laufwerk offen ist, soll er sich drehen".
> 
> Klingt aber, als würde es helfen, die Drehung um die x- und die y-Achse mit _getrennten_ TransformNodes zu machen, und die hintereinanderzuhängen - in welcher Reihenfolge, musst du wissen (oder ausprobieren....)



Genau das geht ja grundlegend nicht weil es ja die KAmera ist und ich nur einen TRansform Knoten für diese habe. der Zweite ist jetzt sozusagen die gesamte Welt die ich unter der Kamera herschiebe.


----------



## Marco13 (11. Dez 2008)

Ach ja (hab schon ewig nichts mehr aktiv mit Java3D gemacht). Da gibt's ja nur setViewPlatformTransform, oder?

Du kannst dir aber die Transform für die Kamera passend ausrechnen. Das hintereinanderhängen von zwei TransformNodes ist "gleichbedeutend" damit, dass man zwei Transform3Ds miteinander multipliziert, und das Ergebnis in EINE TransformGroup setzt.


----------

