Start- und Stopanimation - schon wieder!

  • #1, z MachtnixThursday, 29. June 2017, 03:14 hodinky 7 years ago
    Es gab mal mehrere Threads zum Thema "wie baue ich eine Start- oder Endsequenz in die Laufanimation ein"? Irgendwie finde ich die Beiträge nicht wieder, aber AFRLme hatte bereits viel früher einige Zeilen Lua-Script gepostet.

    Lua ist auch nicht mehr der große Angstmacher für mich, aber ich finde überhaupt keinen Ansatz, welche Objekte und Animationen ich wie bearbeiten müsste, um in eine normale, geloopte Animation vorne und hinten eine "Start"- und "Brems"-Animation einzufügen.

    AFRLme schrieb in
    https://www.visionaire-studio.net/forum/thread/turn-before-w...
    * edit: you was talking about start/stop walk animations? Start are easy enough as you can add them inside of walk animations & force animation frames with Lua script. The end walk animation would be the hardest part to sort out.
    Wenn man also mit Lua einen bestimmten Frame am ANFANG des Loops ansteuern kann, um eine Startanimation zu generieren, muss man das doch auch fürs Ende können?

    Die Loop-Animation des Charakters geht ja bis zum Punkt, zu dem er geschickt wird. Erst NACHDEM er stehengeblieben ist, wird eine kurze "Brems"-Animation eingefügt. In meinem Beispiel ist das ein wehender Mantel, ähnlich wie Lydia ihn in "Keepsake" trägt. Ich muss also die exakte Entfernung zum Ziel gar nicht wissen, und der Übergang zwischen Loop und Bremspassage muss auch nicht 100% genau passen. Das heißt, ich brauche bloß den Visionaire-Trigger-Punkt zu finden, an dem die Figur vom Gehen zum Stand übergeht und dort eine Animation einfügen. Wie gehe ich da am besten vor?

    Machtnix

    edit: hier wurde schon einmal gefragt:
    https://www.visionaire-studio.net/forum/thread/animation-ein...

    https://www.visionaire-studio.net/forum/thread/one-walk-cycle/

    https://www.visionaire-studio.net/forum/thread/ease-in-out-f...

    Kapitán

    1097 Posts


  • #2, z sebastianThursday, 29. June 2017, 08:35 hodinky 7 years ago
    Hi Machtnix, 

    wenn es dir wie du schon geschrieben hast egal ist dass bei der Endanimation der passende Frame akkurat übergeht in die Standanimation, sollte das ähnlich wie bei der Startanimation laufen. 

    In deinen verlinkten Posts wurde ja schon mal beschrieben, was zu tun wäre :

    Die jeweils ersten Frames der Laufanimation sind die, die für das losgehen sind, die darauffolgenden die normale geh-Animation. Sobald der Frame mit dem "normalen Gehen"  erreicht ist, startest du eine Frame Aktion, die die Laufanimation nur auf den letzten "geh" - Teil beschränkt, sodass sich der letztere Part bei längeren gehen wiederholt:

    ActiveAnimations["animation_name"].AnimationFirstFrame = 5

    (angenommen dein normales Gehen beginnt bei Frame 5)

    das Gleiche für die Standanimation, doch dass dort halt die ersten Frames dein Nachwehen des Mantels animiert. 

    ====

    Das Zurücksetzen auf Frame 1 der  Animationen müsstest du dann in Frame 1 der jeweiligen anderen Animation machen, damit diese beim nächsten losgehen/stehenbleiben wieder von vorne starten. 
    Problematisch wird hier, dass du ja nur in aktive Animationen eingreifen kannst, aber die jeweilige Aktion, die du bearbeiten möchtest schon beendet ist. 

    ====

    Hier kann ich ehrlich gesagt noch keine wirkliche Lösung nennen, wie ich das final angehen würde, da ich mich selber noch nicht damit für mein Projekt auseinander gesetzt habe . 

    Vielleicht braucht man das auch gar nicht zurücksetzen, da das Ändern der Frames ja nur für aktive Animationen gilt und es dann automatisch zurückgesetzt ist wenn die Figur erneut losheht/stehenbleibt...Müsstest du mal testen.  Daher ist das, was ich zwischen den ==== geschrieben habe ggf. nicht unbedingt nötig. 

    Hoffe zumindest der Ansatz ist klar smile 

    Gruß 

    Sebastian 

    Kapitán

    2346 Posts

  • #3, z MachtnixThursday, 29. June 2017, 13:52 hodinky 7 years ago
    Danke! Besonders für den Hinweis zwischen den ====. 

    Momentan bastle ich an einer Lösung ohne Lua und dafür habe ich Abfragen eingeplant. 
    Ich habe vier Animationen (pro Richtung versteht sich): zweimal geloopt (stehen und gehen), zweimal abgeschlossen (starten und abbremsen). 

    Mithilfe von Abfragen im jeweils ersten und letzten Frame springe ich entweder zurück in den Loop oder zu einer anderen Animation. Wenn Vis intern automatisch die Anis aktiv setzt, spare ich mir sogar eine Menge Arbeit dadurch.  

    Auch das Zurücksetzen des Abfragewertes in der jeweils anderen Ani habe ich genauso gedacht. Ist fast wie bei meinem Rohrspiel. wink

    Kapitán

    1097 Posts

  • #4, z MachtnixMonday, 03. July 2017, 00:51 hodinky 7 years ago
    Funktioniert so nicht. Nicht, weil es zu kompliziert wäre, sondern weil es die Geh- und Stehanimationen schlichtweg gar nicht gibt. Ich kann sie weder durch eine andere Animation aufrufen noch in irgendeiner anderen Art als der vorgegebenen beeinflussen. Sie sind irgendwie eine Ausnahme und tauchen im normalen Animationskontext nicht auf. Das wird tatsächlich nur durch ein Script gehen, befürchte ich.
    Oder vielleicht könnte man das komplett mit Personenanimationen lösen...?

    Kapitán

    1097 Posts

  • #5, z sebastianMonday, 03. July 2017, 01:15 hodinky 7 years ago
    Über den Aktionsteil Animation starten /stoppen lassen sich nur die "spezial" Personen - Animation beeinflussen. 
    Für all das, was darüber hinausgeht müsstest du Lua nutzen. 

    Da es seit VS5 auch Drehanimationen gibt könntest du allerdings hier diese als Start verwenden. Einfach von jeder möglichen Start Ausrichtung jeweils alle möglichen Zielausrichtungen animieren bevor die Figur wirklich losgeht. Damit hättest du die Hälfte deiner Probleme schonmal geklärt (losgehen). Allerdings geht die Figur auch erst los, wenn die Drehanimation vollendet ist. 
    Sollte die Startanimation zwingend schon mit dem "Anlaufen" der Figur zusammenspielen kenne ich bis jetzt nur die Möglichkeit es so zu machen wie ich schon geschrieben habe...

    Kapitán

    2346 Posts

  • #6, z MachtnixMonday, 03. July 2017, 04:22 hodinky 7 years ago
    Vielen Dank!
    Ich hatte ja vor, im ersten und letzten Frame der Geh- und Standanimationen einen Aktions-Aufruf zu anderen Animationen zu starten. Das funktioniert  in gewissem Sinne auch, aber nicht wie erwünscht. Der Vorteil wäre gewesen, dass ich zwei normale geloopte Animationen habe (die üblichen Geh-und Standloops, die überhaupt nicht verändert werden müssten) und zwei, die nur einmal ablaufen, nämlich die Start- und Bremssequenz. Ich versuche noch mal, ob ich die Einmalsequenzen davor und dahinter als Personenanimation einfügen könnte. Theoretisch spricht ja nichts dagegen.

    Mit Lua wird das ziemlich umfangreich und viel komplizierter (jedenfalls für mich...), denn ich muss statt dessen im ersten Frame einen Script-Aufruf starten, zwischendrin den Frame aus der Animation auswählen (mit AnimFrame setzen) und von dort an bis zum Ende loopen - mit Abfragen, ob geloopt werden soll oder nicht. Da sehe ich im Moment noch keinen Licht am Ende des Tunnels.

    Wenns zu kompliziert wird, lohnt es sich dann auch nicht...

    Die R5 benutze ich noch nicht - aus dem simplen Grund, weil ich Visionaire auf meinem 32bit-System laufen lasse.
    Außerdem haben mich die endlosen Fehlermeldungen der letzten Wochen erstmal dazu gebracht, auf die finale Version zu warten. Sind vielleicht nicht alles Fehler, die mich unmittelbar betreffen, aber da kam ganz schön was an Bugs zusammen. Gefühlt hatte ich jedenfalls den Eindruck, dass nur die Hälfte von dem funktioniert, was in 4.2.5 bereits standardmäßig funktionierte... wink

    Da die Beiträge aber immer auf Englisch sind, weiß ich meist nicht genau, was genau für Fehler das waren und ob die inzwischen behoben wurden.

    Machtnix

    Kapitán

    1097 Posts

  • #7, z MachtnixWednesday, 05. July 2017, 18:44 hodinky 7 years ago
    Es ist sehr frustrierend. Ich habe Sebastians Lua-Zeile
    ActiveAnimations["Geh_links"].AnimationFirstFrame = 3 

    probiert und es funktioniert tatsächlich nur wechselseitig.

    Erklärung: Ich habe eine Geh- und eine Stehanimation für links angelegt. Die ersten Frames sind immer die Einpendelanimationen (Frame 1-2). Im letzten Frame der Ani rufe ich zwei Scripte auf, was den Startframe der Steh- oder Gehanimation jeweils auf Frame 3 setzt. Die Anis sollten dann geloopt werden. Das ganze Gedöns mit Abfragen hatte übrigens keinen Erfolg.

    Nun kommt das Irritierende: ich habe die linke Animation für rechts gespiegelt. Theoretisch dürfte in der rechten Ani gar nichts passieren, denn ich habe nur Scripte für links definiert. Dachte ich. Starte ich mit Laufen nach links, wird die Gehanimation korrekt abgespielt (also der Start geschieht mit Anfangssequenz und danach wird der Loop korrekt abgespult - das Script funktioniert offensichtlich), die anschließende Standanimation aber nicht! Diese wird immer komplett gelooped abgespielt!

    Laufe ich nun nach rechts (also die gespiegelte Animation), wird die Gehanimation falsch abgespielt, die Überblendung in die Standpose geschieht aber korrekt! Offenbar wird der Script-Aufruf sozusagen mitgespiegelt, denn für rechts gibt es ja keine aktive Animation (siehr Code-Zeile oben), anders kann ich mir das nicht erklären... Ich habe nun das Zurücksetzen auf Frame 1 testhalber überall rausgenommen - das macht auch keinen Unterschied...

    Wie Sebastian vermutet hat: es wird immer die NÄCHSTE Animation verändert. Egal, ob ich die Frames zurücksetze oder nicht. Das ist natürlich echt doof. Da habe ich jetzt erstmal keinen Plan...

    Kapitán

    1097 Posts