Jump to content
Unity Insider Forum

Import und Animation von eigenen Modellen in Unity


grinseengel

Recommended Posts

Hallo,

wieder eine Anfängerfrage. Ich habe ein externes Modell im Format .fbx. Dieses Modell hat etwa 300 Frames mit etwa 5 Animationsphasen. Das Modell habe ich normal importiert. Ich kann das Modell auch in meine Level setzen und es wird fehlerfrei angezeigt. Jetzt ist es allerdings so, dass ich nicht die einzelnen Animationsphasen zum Modell angezeigt bekomme, sondern nur die gesamte Animation mit den ca. 300 Frames. Liegt das am Import, oder müssen die einzelnen Animationsphase in Unity bestimmt werden? Evtl. liegt es ja auch schon am Quellmodell? Ich habe versucht mit dem Animator und Animation etwas anzufangen, aber da zeigt er mir logischerweise auch nichts an. Ich glaube hier fehlt mir ebenfalls wieder das Grundverständnis wie Unity arbeitet. Auch mit den Video-Turorials hat das nicht funktioniert, da ich beim Nachstellen nicht das angezeigt bekommen habe wie vorgegeben.

Mein erstes Ziel ist es, einem Tiermodell eine Standanimation zu verpassen.

Ich bräuchte dringend Hilfe. Evtl. habe ich mir ja auch die falschen Tutorial angesehen.

Gruß, Andreas

Link zu diesem Kommentar
Auf anderen Seiten teilen

Man kann wohl die Timeline in Unity beim Importer  (Projektfenster auf die FBX Datei klicken) in mehrere Clips unterteilen. Ich bin mir nicht sicher, ob man die FBX irgendwie so exportieren kann, dass Unity die "Phasen" automatisch erkennt.

https://docs.unity3d.com/Manual/AnimationClips.html

Da wo beim ersten Bild das "+" ist unter den Clips kannst du neue Clips hinzufügen. Das würde dann deinen Phasen entsprechen. Start und Endframe kannst du da auch setzen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann nichts dazu sagen, wie du die Animationen im FBX so angibst, daß Unity die einzelnen Animationsclips (vielleicht kann hier noch ein "3D Guru" noch was zu sagen) von selbst richtig aufteilt, aber auf alle Fälle geht es, indem du in einzelnen Animationen in eigene FBX-Dateien steckst. Ich kenne es so aus diversen Assets, hier werden die Einzelanimationen in separate FBX Files gesteckt ("run.fbx" / "jump.fbx" etc)

Jedenfalls kannst du im Unity-Importer (beim FBX File) die einzelnen Animationsclips (Startframe / Endframe / Clipname) selbst definieren und zwar an dieser Stelle:
https://docs.unity3d.com/Manual/class-AnimationClip.html

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tach Namensvetter! :)
 

Leider bekommt man diverse Einstellungen nich nach Unity rein, ja und somit sind Marker in der Animationsspur auch nicht importiert.
Du kannst jetzt also entweder dein Modell mit der kompletten Animationsspur importieren und dann in Unity deine Animationstakes definieren, oder aber du exportierst aus dem 3D Programm ersteinmal nur das gebundene Mesh mit Bones ohne Animationen. Und dann für jede Animation nur das Rig und den Animationsbereich.

Ich habe da vor einigen Jahren mal Tutorials zu gemacht.
Folgende Folge ist echt alt und Unity hatte da noch gar kein Mecanim sondern nur das late Animationssystem. Trotzdem erklärt das Video ganz gut, wie du die Animationen und das Mesh einzeln rüber kriegst und dann in unity verwenden kannst. Ab der Minute 6 gehts los.

Ja und dann habe ich unter Anderem noch folgendes Video für dich, wo ich erkläre wie man das im neuen Animationssystem macht. Gerade dann, wenn man nicht als Humanoid importiert. Das ist zwar auch schon älter und der Animator hat heutzutage mehr möglichkeiten als damals, trotzdem sollte dir das helfen. Hier siehst du auch, wie man aus einer vorhandenen Animation einen neuen Animationstake erstellt und ihn einbindet.

 

Ich hoffe das dir das soweit hilft.

Wenn nicht, musst du mal genau erklären was nicht so funktioniert, wie du gerne hättest und evtl. auch mal ein Bild posten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, jetzt habe ich ein NPC Modell gefunden, was die Einzelanimationsphasen zeigt.

1.gif.c3a68c6d6fd5ea70c5953a9f2446a455.gif

Diese kann ich jetzt auch im Inspector sehen. Diese sollten dann ja wohl von Unity richtig eingeselen sein.

2.gif.d76258b12bc00e1929d55ed1e505506b.gif

Jetzt mein Problem mit dem Animator. Mein NPC soll im Level platziert werden und dort nur die TposeStart Animationsphase ausführen. Was muss ich jetzt machen? Geht das auch ohne eine Scriptzuweisung?

3.gif.c4ac33c173cfa67fb76bb6c73b6fc5df.gif

Ich habe mir das in den Tutorial angesehen, verstehe das aber nicht richtig.

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Klar geht das auch ohne. Siehst du ja im 2ten Video.

Auf meinem Kanal habe ich auch eine richtig große Videosammlung, die (zwar auch wieder etwas älter) dir zeigt, wie man das so macht.
Da musst du dir aber mal ein paar Stunden für Zeit nehmen.

https://www.youtube.com/playlist?list=PLPBi1GFn_EAqw7i0ZND_JaGhZFKrCjPpx

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich danke dir.

Deine Tutorials haben mir schon sehr gut geholfen. Da ich die externen Modelle nicht neu exportieren kann habe ich die gesamte Animation eingeladen und dann in Unity die Phasen aufgeteilt. Das funktioniert gut. Allerdings habe ich ein neues Problem. Ich habe im Animator eine Animitionsphase zugewiesen und diese geht prima. Dann habe ich eine zweite Animationphase mit "make Transition" erstellt und zugewiesen. Auch diese funktionierten dann nacheinander. Ab der dritte Phase wurden dann nur noch zwei der drei Animationphasen dargestellt. Im Animator sehe ich die drei Phasen, sie werden aber nicht alle drei abgespielt.

Was mache ich falsch?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also du hast eine Animation, gehst mittels einer Transition zur zweiten Animation und dann wiederum mittels einer Transition zur dritten Animation? Die dritte Transition funktioniert aber nicht? Verstehe ich das richtig?
Wenn ja, dann stimmt wahrscheinlich die Bedingung deiner Transition nicht.
Kannst du hier mal ein Bild vom Animatorfenster posten, damit ich verstehe, was du genau meinst?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, dann ist es so wie ich gesagt habe. Dann muss deine Transition von run  nach eat falsch sein, oder aber die Bedingung kommt nicht dann, wenn er in run ist, sonder erst dann wenn er wieder auf idle ist. Ich weiss aber nicht was in deinen Transitions drin steht, deswegen vermute ich das auch nur.

Jedenfalls ist es so, dass ja immer eine Animation aktiv ist und nur von dieser aktiven Animation kann es weiter zu den anderen Animationen gehen, es sei denn,du nuntzt Anystate als Start der Transition.

Stell dir das ganze System wie Haus vor in dem Zimmer drin sind. Diese Zimmer haben Türen zu anderen Zimmern. Wenn du jetzt im Zimmer Idle bist, dann kannst du ins Zimmer Run gehen, denn da gibt es eine Tür. Du kannst aber nicht vom Zimmer Idle direkt zum Zimmer Eat gehen, denn du musst dafür erst einmal ins Zimmer Run gehen und dann weiter ins Zimmer Eat.
Du willst aber wahrscheinlich von beiden Zimmern aus ins Zimmer Eat kommen, also brauchst du eine zusätzliche Tür vom Zimmer Idle zum Zimmer Eat.
Verstehst du das?
Je nachdem, wie deine Animationslogik aufgebaut ist, kann man auch AnyState nutzen, denn dieses Dingen bedeutet, dass es egal ist, in welchem Zimmer an gerade ist, man kommt immer auch in ein anders Zimmer, so wie beim teleportieren. Dafür muss vom AnyState sternförig zu jedem anderen State eine Transition aufgebaut werden. Es muss keine Transition zurück geben, denn das ist dem Anystate egal. Bei Anystate nutzt man auch fast nur Trigger als Parameter, denn denn da wird nur kurz die Inof gebraucht, was jetzt passieren soll.
Nur meistens kann man Anystate nicht gebrauchen, denn wenn z.B. dein Charakter liegen und stehen kann, er aber nur mit dem laufen beginnen soll, wenn er auch steht, also eine Aufstehanimation dazwischen abgespielt werden soll, würde AnyState nicht funktionieren. Dein Char würden liegen und sofort laufen, ohne überhaupt aufgestanden zu sein.
Deswegen baut man meistens diese Ketten von Animationen auf.
Bei dir scheint aber wirklich nur eine Transition von Idle zum Eat zu fehlen, damit er vom Idle UND vom Run ins Eat übergehen kann.
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 3 weeks later...

Nachdem ich jetzt meine Animationen hinbekommen habe stellt sich mir erneut ein kleines Problem.

Ist es im Editor möglich den Beginn einer einzelnen Animation frameversetzt abspielen zu können? Ein Loop geht z.B. 300 frames. Jetzt möchte ich gerne das der Loop aber erst mit dem Frame 100 beginnt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...