Rotieren nach einer Achse



  • Hi

    Ich habe aus dem Buch von Stefan Zerbst das Rotieren von Objekten. Jetzt ist es aber so wenn ein Objekt genau nach unten schaue und es seitwärts drehe dreht es sich im Kreis. Das ist für einen Spaceshooter nicht gerade realistisch. Ich denke das Kommt daher das ich immer um die selben Achsen drehe. Wenn ich allerdings immer um den Vector vDir (der Vector in die die Richtung zeigt) drehe bzw um die anderen Vectoren die sich immer mitdrehen dann kann ich das Objekt zwar gut Rotieren allerdings ist der Richtungsvector immer falsch.

    Was gibt es für eine Möglichkeit ein Objekt immer gleich drehen zu lassen. Unabhängig ob es nach unten schaut oder nicht???



  • vielleicht bin ich ja nur zu dumm aber ich hab grad keine ahnung was du
    überhaupt willst😕...

    wenn du dein problem noch mal etwas näher beschreiben könntest
    währe das nicht schlecht...

    etwas code schadet auch nicht 😉

    mfg
    Plassy

    [ Dieser Beitrag wurde am 08.06.2003 um 18:55 Uhr von Plassy editiert. ]



  • @Plassy
    Mach dir nichts daraus. Ich habe ihn auch nicht verstanden.

    @ohama
    Es könnte sein das du erst erst die Transformation und danach die Rotation durchführst. Meinst du das?



  • Tut mir leid wenn ich undeutlich geschrieben habe. Ist schlecht zu erklähren. Also es ist so.

    Ich gehe immer davon aus das ich 3 Standartaxen habe. Die nach vorne die nach oben und die auf die seite. Und um diese Achsen drehe ich dann immermein Objekt.

    Daraus ergibt sich das Problem dass wenn das Objekt auf dem Kopf steht und ich drehe es seitwärts. dann dreht es sich nicht mehr ganz normal auf die seite sondern im Kreis. Wenn es ganz normal nach vorne schaut dann geht es auch. sobald das Objekt aber nicht mehr in die Richtung der Achse schaut die sich dreht dann dreht es sich falsch.

    Naja. Noch immer nicht besser. Ist einfach blöd ohne Zeichung.



  • 😕

    ist der Objekt Nullpunkt auch identisch mit dem Achsennullpunkt?



  • kann es vielleicht sein, dass du deine rotierten punkte
    des objekts nicht seperat speicherst, sondern die
    ausgangspunkte immer überschreibst??

    also z.B. so:

    vector object_data[...];
    matrix rotation(rotx,roty,rotz);
    
    for(long i=0; i<object_data.size; i++)
        object_data[i] = (object_data[i] * rotation);
    

    oder speicherst du die daten in einen seperaten array z.B.

    vector object_data[...];
    vector temp_data[...]
    matrix rotation(rotx,roty,rotz);
    
    for(long i=0; i<object_data.size; i++)
        temp_data[i] = (object_data[i] * rotation);
    

    oder lässt du alles gleich zeichen ohne es vorher zu speichern??

    mfg
    Plassy

    [ Dieser Beitrag wurde am 09.06.2003 um 10:20 Uhr von Plassy editiert. ]


Anmelden zum Antworten