Answered

Animate multiple humanoid characters at the same time?

Yokenstein 10 months ago updated by Peter - Soxware Developer 3 months ago 9
While it is possible to animate multiple 'generic' characters by placing them in a root empty gameobject, is it possible to do the same with humanoid characters? 

UMotion Version:
Unity Version:

Answer

Answer
Answered

Hi Shayan,

thank you very much for your support request.

For humanoid, it is not possible to animate two characters at the same time. It is only possible to animate one and preview the animation of other(s) at the same time using the sync feature.

Please check out this answer I gave to a similar question: https://support.soxware.com/en/communities/1/topics/160-how-animate-2-characters-at-the-same-time#comment-194

Please let me know in case you have any follow-up questions.

Best regards,
Peter

Answer
Answered

Hi Shayan,

thank you very much for your support request.

For humanoid, it is not possible to animate two characters at the same time. It is only possible to animate one and preview the animation of other(s) at the same time using the sync feature.

Please check out this answer I gave to a similar question: https://support.soxware.com/en/communities/1/topics/160-how-animate-2-characters-at-the-same-time#comment-194

Please let me know in case you have any follow-up questions.

Best regards,
Peter

Well, then I guess I will have to manually add in the IK controls. Is it possible to have the IK control helper window in generic projects? The helper window that contains the muscle control for head, hands/fingers and torso

Unfortunately the muscle control assistant is humanoid exclusive as muscles only exist in the humanoid animation format (see blog post https://blogs.unity3d.com/2014/05/26/mecanim-humanoids/). Furthermore, a generic model can be anything (from a solid object to an animal etc.), so such an assistant wouldn't really be possible as no assumptions about the skeleton of the 3D model can be made.

Please let me know in case you have any follow-up questions.

Best regards,
Peter

Joho, followup question coming right up!

Since I found quite a few entries regarding "synchronization" and multiple human editing (and am facing the same issue right now), what are your plans in regards to implementing multiple humanoid rigs at the same time in one UMotion project?

Because right now, it is a bit tedious:
We have to export animation A, open Animation A in Unity's antive Animator, change the Umotion Project, drag in Character B, check if character A and B synch up (and if they don't thanks to Char A:) clear Umotion, change UMotion Project, Add in Character A (not fogetting to export character B's animation and putting that now in the preview) and get to the right point, just to change an arm by a few degrees.

Obviously I know of the Timeline or Generic "workarounds" but given that one of the biggest strengths of Umotion is it's awesome IK, those don't really work.

If you have no plans in that regard, what would it take to change that?

Thanks for chiming into this discussion.


A humanoid animation clipcan only reference one humanoid character at a time. That's how Unity designed the format. This limitation does not apply for generic animation clips. So if you want to animate complex multi-character interactions, I highly recommend using a uber generic animator controller that has all (generic) characters as a child. This allows you to use IK between the characters and gives you full control over everything (like offsets of the characters to each other). If you're for precise interactions between characters, humanoid isn't the right choice anyway as it introduces small re-targeting errors that might be quite noticeable when doing some precise interactions.

If you're in the situation of creating a cut-scene or a movie sequence, using Unity Timeline is a very good choice. It allows you to sequence the whole cut-scene from animation clips, to audio, camera and VFX. With UMotion's Sync button, you can easily connect with Unity Timeline and add changes while previewing the whole sequence. The sync button also speeds up the "switching" process you've mentioned. Btw. UMotion has some easy to use API that you can use to completely automate the switching process. Please check out the "UMotion API" chapter in the manual for a description of all available methods.

So for me, there isn't really a point in having a "multiple humanoid characters at a time loaded into UMotion" mode as there are better options already available.

Best regards,
Peter

Can you do a small 3-5 min tutorial on how you would set up the multiple generic characters in Umotion? Also, would this method allow for individual timeline animation tracks, for each character? I imagine the exported animation would belong to the parent empty game object (under which all the generic characters are). So how would one put the animation tracks onto the characters timeline tracks, instead of the generic parent gameobject timeline track? The individual tracks are important, because they allow for override layers (useful for facial animation) Without that, things will be cumbersome

Can you do a small 3-5 min tutorial on how you would set up the multiple generic characters in Umotion?


The setup is really easy. Just make an empty game object the parent of your generic characters. Remove the animator components from your characters and add an animator to the parent empty game object. Create a new generic UMotion project and drag & drop the empty game object to the pose editor.

Also, would this method allow for individual timeline animation tracks, for each character?

Unfortunately this is not possible using this method. As the animator is a parent of both characters, it would be controlling both characters at the same time. This gives you the opportunity to control both characters (and the offsets to each other) from a single animation which is nice when doing heavy/precise interaction. But you trade that against the loss of flexibility when having multiple clips.

What you could do, is splitting the single "uber" clip into two separate clips again, but that would require advanced Unity editor scripting knowledge.

Best regards,
Peter

Since doing this using Humanoid is not possible due to Unity's backend, it would be nice if in the new update we have the ability to export each generic characters animation as a separate file using this generic parent object approach. That way we have more freedom to to change the offsets, rotation, add override tracks for facial animation in the timeline. Due to this limitation, for now I think I will have to stick with the timeline sync + umotion approach, but it would be really really useful if it can be done inside umotion. If anything, I think this will really enhance the package.

Thanks for the feedback. I've put this on my "ideas for the future" list.