Frage Animation Constraints to Unity - Druckversion +- Blenderforum (https://blender-forum.de/forum) +-- Forum: Blender Hilfe (https://blender-forum.de/forum/forumdisplay.php?fid=4) +--- Forum: Support (https://blender-forum.de/forum/forumdisplay.php?fid=5) +--- Thema: Frage Animation Constraints to Unity (/showthread.php?tid=684) |
Animation Constraints to Unity - Felister89 - 18.07.2024 Hallo zusammen, ich habe einen Character modelliert mit dem Ziel diesen in Unity als NPC zu verwenden. Aktuell arbeite ich an der Animation. Der Character ist mit einer Armature verbunden und besitzt als separates Childobject eine Pistole. Die Animation sieht so aus, dass der Character die Pistole im Holster an seinem Körper trägt, dann die Waffe zieht, abfeuert und wieder in den Holster steckt. Heute musste ich mich erstmal in das Thema Constraints arbeiten, aber mittlerweile habe ich es geschafft, dass die Pistole sich so verhält wie sie soll, nämlich zunächst den Bewegungen des Oberschenkelknochens im Holster folgt und dann wenn die Hand an der Waffe ist, dem Handgelenksknochen folgt. Das Problem ist jetzt aber, dass wenn ich die Animation Bake und in Unity hereinbringe, ich immer nur zwei einzelne Animationen erhalte, d.h. einmal wo sich der Character ohne die Waffe bewegt und einmal wo sich die Waffe ohne Character bewegt??? Ich weiß nicht warum, das passiert. RE: Animation Constraints to Unity - Malthea - 19.07.2024 Hallo, bisher ist es nicht möglich, blenderconstraints nach Unity zu bringen (kann sein, dass sich da etwas in den allerneuesten Unity Versionen geändert hat). Die Waffe wird nicht animiert. Übliche Vorgehensweise: Empty 1 ist Child des Holsters Empty 2 Child eines Mittelhandknochens Animationen (und states): 0 - Ausgangsanimation (idle, walk, …) 1 - Hand bewegt sich zur Waffe (und ggf Angriffsposition) 2 - Waffe wird gezogen und in Schussposition gebracht 3 - Schießen (ggf loop) 4 - Waffe ins Holster 5 - Hand in Ausgangsposition für die folgende Animation (und ggf Normalposition) - beim Wechsel von state 1 zu state 2 wird der Waffenparent von Empty 1 zu Empty 2 gewechselt - beim Wechsel von state 4 zu state 5 wird Empty 1 wieder der Parent (wenn der NPC im Kampf stirbt und die Waffe aufgesammelt werden kann, muss der Parent ganz entfernt werden) Wenn saubere Übergänge nicht so wichtig sind, kann die Anzahl der benötigten Animationen reduziert werden. Grüße Malthea RE: Animation Constraints to Unity - Felister89 - 19.07.2024 (19.07.2024, 12:22 AM)Malthea schrieb: Hallo, RE: Animation Constraints to Unity - Malthea - 19.07.2024 Hallo, im blender wird der NPC animiert (natürlich kann man die Waffe als constraint dazu nehmen - die kommt aber nicht mit in die Animation) und so die Einzelanimationen erstellt - die Empties, die Waffe(n) und die Logik kommen erst in Unity dazu. In Unity bewegen sich die Empties mit dem Char (und natürlich auch die Waffe, die Child ist). An die Empties können unterschiedliche Waffen geparentet werden - hierbei ist zu beachten, das im blender der jeweilige Waffen-Objektorigin so gesetzt wird, das er dem Empty-origin in Unity entspricht => einfachere Ausrichtung der Waffe in Unity durch Drehung / Bewegung des Emptys und man hat danach eine Empty-Position, die man für unterschiedliche Waffen nutzen kann. Durch die Einzelanimationen hat man eine einfache Möglichkeit, den Zeitpunkt festzustellen, an dem der Parent gewechselt werden muss - dieser entspricht dem Wechsel state 1 -> state 2 bzw state 4 -> state 5 aus dem Beispiel. Am einfachsten ist es, im state 2 und state 5 ein StateMachineBehaviour Script zu erstellen und in diesen beiden Scripts in der OnStateEnter-Funktion den Parent-Wechsel zu erledigen (man könnte auch in den Vorgänger-States die OnStateExit-Funktion nutzen - ist aber nicht zu empfehlen). Auf diese Art muss man keine komplizierten Abfragen (ist die Animation so-und-so beendet?) scripten. In Unity switche ich dann SetActive, beim Wechsel der Animation? Das ist nur sinnvoll für den Wechsel zu state 1 im Triggerscript, die anderen states sollten dann starten, wenn der vorangegangene state "abgearbeitet" ist - ansonsten müsstest du irgendwo andauernd abfragen, ob die Animation zu Ende ist. Du solltest auch bools im Animator für Ausstiegsbedingungen setzen (Feind weg oder tot, Munition alle usw). Grüße Malthea RE: Animation Constraints to Unity - Felister89 - 26.08.2024 (19.07.2024, 12:15 PM)Malthea schrieb: Hallo, RE: Animation Constraints to Unity - Malthea - 28.08.2024 Hallo, der Gang der Handlung ist einfach: Schon beim Modellieren der Ausrüstungsgegenstände im blender darauf achten, das zB der Lauf der Waffe in Richtung der positiven y-Achse zeigt (in unity ist das dann die positive z-Achse). Dann wird in unity an passender Stelle in der Armature die jeweiligen "Zielempties" eingefügt - im Beispiel "HutEmpty". Bei einfachen Ausrichtungsänderungen kann im Inspector Transformpanel das Empty passend gedreht werden, nachdem die Transform auf "local" gestellt worden ist. Ansonsten parented man den Ausrüstungsgegenstand an das Empty und dreht / bewegt dann im 3D-Fenster das Empty, bis alles passt. Grüße Malthea RE: Animation Constraints to Unity - Malthea - 28.08.2024 Nachtrag zu: Aber habe ich jetzt in Unity dann zwei Objekte von derselben Waffe, die jeweils mit Parent1 bzw. Parent2 verbunden werden oder nur ein Waffenobjekt, welches die Parents je nach State wechselt? Weil wenn ich nur ein Waffenobjekt habe, wie soll ich dann sicherstellen, dass sie beim Wechsel auf Parent2 richtig in der Hand des Charakters liegt? Man kann natürlich die Waffe im Holster zerstören und eine neue Instanz in der Hand erzeugen, aber da ich vermute, dass sich die Hand am Ende der ersten Teilanimation dicht beim Holster befindet, kann man genauso gut eine Waffe benutzen (vielleicht können Collider am Holster, der Waffe und am NPC Probleme verursachen - diese ggf zeitweise deaktivieren). Das Empty2 muss natürlich auch so ausgerichtet werden, dass die Waffe passend in der Hand liegt. Grüße Malthea |