Einen Actor um den Nullpunkt rotieren lassen ?

  • Servus,


    ich habe vor einigen Tagen mal angefangen ein wenig mit der Unreal Engine herumzuspielen und mich ein wenig einzuarbeiten.


    Nun bin ich aber auf ein, eher peinliches, Problem gestoßen.


    Ich bastele grade, rein mit C++ Code, zur Übung ein Sonnensystem und habe nun das Problem das ich es nicht schaffe meine Planeten um die Sonne rotieren zu lassen.
    (Hinweis : die Sonne liegt im Ursprung, also (0.f, 0.f, 0.f).


    Jede Funktion die ich gefunden habe, scheint automatisch die Rotation so anzuwenden das der Planet (erbt von Aactor) um seinen eigenen Mittelpunkt rotiert (die Engine schiebt ihn also selber in denn Nullpunkt, wendet die Rotationsmatrix an und schiebt ihn zurück ?).


    Gibt es eine einfache Möglichkeit einen Actor um einen bestimmten Punkt zu rotieren oder muss ich wirklich in jedem Tick einen Punkt auf der Umlaufbahn berechnen und den Planeten zu diesem schieben ?



    Über eine Antwort würde ich mich freuen und ich bedanke mich schon mal für die investierte Zeit.



    P.S. bilde ich es mir nur ein oder ist es, selbst als Programmierer mit (ich behaupte mal, sogar ziemlich fortgeschrittenen) C++ Kenntnissen nicht wirklich einfach ist sich in die Unreal Engine einzuarbeiten ?

  • Hey, sich einzufinden kann schwer sein! Sobald du es aber langsam verstehst wirst du es lieben da UE4 C++ unfassbar gut ist!


    Also in deinem Fall reicht es nicht nur aus die Rotation zu setzen, die Rotation dient alleine für den Actor damit er sich um seine eigene Achse dreht, du musst ebenfalls die Location deines Actors bekommen und diese dann im Orbit zu setzen. Wenn du willst teste ich das morgen mal mit Blueprint und schreib es dann in C++ um.


    Du musst lediglich verstehen das wenn sich dein Objekt um ein anderes bewegt keine Rotation stattfindet sondern eine Veränderung der Location, du arbeitest also mit den Vector werten X und Y. Vielleicht kannst du damit ja schonmal was anfangen. :)

  • Servus,



    danke für die Antwort, es läuft jetzt (ich hole mir nachdem ich meine Planeten platziert habe schnell den Location - Vector, berechne dessen Länge und erstelle mir mit Sinus uns Kosinus schnell eine Umlaufbahn (this->SetActorLocation(FVector(sin(Timer)*m_length, 0.f, cos(Timer)*m_length));)).


    Allerdings sollte es (in diesem Sonderfall (Rotation um den Nullpunkt)) auch über "reine" Rotation möglich sein, die von mir gewünschte Bewegung herzustellen.


    Schließlich ist der Planet ja schon auf dem richtigen Abstand zur Sonne (also wurde die passende Translation - Matrix bereits angewandt) und wen man darauf nun die Rotations - Matrix anwenden würde, sollte sich ebenfalls die gewünschte Bewegung ergeben ...

  • Man kann das mit einem Hack lösen.. ist aber unschön


    Wenn du nur ein Meah um die Sonne rotieren lassen willst, dann setzt das Mesh doch einfach mit Offset vom Mittelpunkt in Blender, reimportiere es und voila es dreht sich um dein Zentrum wie von Geisterhand, wenn du es einfach rotierst.


    Ansonsten vectoren, Bahn berechnen, Zeitabhängig rumschieben, lokal rotieren wenn es hübsch aussehen soll.

    Argh...warum stürzt der Code schon wieder ab ??? :cursing: ( Pointerprotection saves souls )
    Tippfehler sind beabsichtigt und eine Notwendigkeit.


    Du willst helfen, eigene Sachen einbringen oder mitcoden ? Schick mir eine Konversation, am besten mit SkypeName o.ä.
    Das Projekt hat aktuell keine kommerzielle Ausrichtung, das ist aber nicht in Stein gemeißelt für die Zukunft.