Rotationen

Status
Nicht offen für weitere Antworten.
A

Andre Schaaf

Gast
Schönen guten Tag,

ich habe folgendes Problem

ich habe ein 3d objekt und dieses ist hängt unter diversen transformgroups(tg)

1 tg translation
2 tg skalierung
3 tg rotation
4 tg rotation

dabei soll die 3 tg eine rotation um eine achse darstellen (ich habe zwei vektoren 1. punkt auf der achse, 2. richtung)
und 4 die rotation um die objekteigene achse

die rotierung um die objekteigene achse funktioniert ohne probleme, aber ich bekomme es absolut nicht hin das
dass objekt sich um eine beliebige achse dreht

Code:
Vector3f rotVec=new Vector3f(this.rotVector1.x,this.rotVector1.y,this.rotVector1.z); 
								
AxisAngle4f axis=new AxisAngle4f(new Vector3f(this.rotVector2.x,this.rotVector2.y,this.rotVector2.z),this.rot);
											
this.object.getRotationAxisT3D().set(rotVec);
this.object.getRotationAxisT3D().setRotation(axis);				
			
this.object.getRotationAxisTG().setTransform(this.object.getRotationAxisT3D());

so habe ich es im moment aber das funktioniert nicht weil er die position des objektes immer auf den 1 vektor verschiebt , was er natürlich nicht machen soll.

Hat jemand einen Tipp für mich wie ich das machen kann. Es sollte ja auch eine rotation eines planeten damit darstellbar sein in dem man die erste rotationsgroup für die rotation um die sonne verwendet und die 2 rotationsgroup für die drehung der erde um sich selbst.

aber es will mir einfach nicht gelingen.

MFG Andre Schaaf
 
A

Andre Schaaf

Gast
Hmm hat denn hier niemand eine Idee wie ich das machen kann ?
 

Marco13

Top Contributor
Was das Objekt macht, hängt davon ab, wo es im Szenegraph hängt. (Allgemeiner: Computer machen nicht das, was man will, sondern das, was man programmiert hat).

Im Moment hast du

1 tg translation
2 tg skalierung
3 tg rotation
4 tg rotation

Das Objekt wird also zwei mal um seinen Lokalen Ursprung rotiert, dann sakliert und dann verschoben. Vielleicht liegt das Problem darin, dass die Operationen ja sozusagen "rückwärts" auf das Objekt angewendet werden. (Dieser Verdacht wirde durch die "falsche" Nummerierung deiner Transformgroups erhärtet)

Um das zu erreichen, was du vorhast, bräuchstest du wohl sowas

4 rotation - Um den Ursprung
3 translation - Vom Ursprung weg, da hin, wo das Objekt sein soll
2 skalierung
1 rotation - um die Objekteigene Achse


Als Beispiel dieses Bild:
Image52.gif


Das LINKE könnte man erreichen, indem man einen Szenegraph erstellt wie
Translation -> Rotation -> Objekt

Das RECHTE könnte man erreichen, indem man einen Szenegraph erstellt wie
Rotation -> Translation -> Objekt

Das Bild stammt von
http://glprogramming.com/red/chapter03.html#name2
Schau da vielleicht auch nochmal drüber.
 
A

Andre Schaaf

Gast
Ok besten Dank für die Antwort das ist das was ich brauche. Da ich noch nich soo lange mit dem Java3d arbeite ist es manchmal etwas schwierig die zusammenhänge zu erkennen.

MFG Andre
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
A Rotationen Spiele- und Multimedia-Programmierung 15

Ähnliche Java Themen

Neue Themen


Oben