What's the process for animating two characters together?

I’m interested in doing some two-person animations (handshakes, combat animations/finishers, etc.) and was wondering if there were any special considerations or processes for animating two characters? Can I just animate two of the same rig and then import the animation and assign the meshes/actors for each part, or is there a different way? Thanks!

1 Like

The only consideration is Where A has to be in relation to B.
This is usually solved by using a bone in the animation and aligning either A to the bone for A in B, or B to the bone for B in A.

As MostHost says, it’s important to have a sync bone in your animation (and rig). This can be under the root. When you animate both characters, constrain the sync bone to the root of your second character. Then in unreal set the transform (you’ll probably want to lerp the location and rotation rather than snap) to the sync bone. This way it should be perfectly synced at all times.

Just remove the root motion for both and ensure the scene root is correct for both in that animation.

You literally have no assurance that A will be at A and B will be at the correct position/orientation unless you animate a bone or some other sort of reference point (socket) in the same location.

The reliable way is a bone.
The semi-reliable way is an arrow component in BP to signal placement (common for interactive things that have no skeletal mesh).

And less than reliable way is hard coing a location…

For a scene with two or more characters animating together, it would have to be precise at a specific location and rotation. It cant be a dynamic situation where the the characters are constantly moving.

Illustration1.jpg

As long as there is no physic / hit collision considerations, this is the most suitable for animating groups of characters in the scene.

Incorrect. it can be as dynamic as you need if you use a bone to animate what the position of the other actor has to be over time. The only restriction on “how” dynamic it can be, is that usually the character has to be of a specific height/size. otherwise you have to socket to the bone and manually adjust in order to accommodate all possible characters by just attaching them to a different socket.
When I say “attach” in this case you don’t actually have to attach anything. you can read socket location and set the character’s position on it over the course of the event running.

Well you don’t state what application you are using to do the animations as in most cases how easy it is to do the task in hand is based more on the set up in a given app as the animation part is no different as to the needs of one character as it is for two, three or even four. In the case of animation tools my weapon of choice is Motionbuilder as once you characterize an actor the hierarchy construct for one character is the same as all the others so is easy enough to target the output to the desired platform, in this case Unreal 4.

Granted Motionbuilder comes with a price tag above an beyond what is available for free but trying to do complex animations in a application like Blender, lets toss Max and Maya into the mix, producing a usable result is like trying to write a book using a spreadsheet.

So to get back on point sure there are requirements and different ways as to an approach of having 2 characters interacting and consideration must first begin with the purpose that needs to be served

By the way if you deconstruct the “Matinee” example you should have a good base as to requirements

that sounds like bad advice to me. Please show working renders of dynamic characters walking in from multiple different directions and shaking hands. Based on my experience, these dynamic movement will break the animation one way or another. We already have hard time coming up with walk run with non-foot slip precision, now we can have hand shaking precision?

Simply because you are incapable of doing something doesn’t mean that something is unachievable.

Walking and shaking hands perfectly is as easy as it gets with the use of a root bone to position Player A to the correct spot and rotation in relation to Player B, the one you go to shake hands with.

IF you were to animatie 2 skeletons in 1 animation, would you have any sync issue at all when playing back the animation? No. Ofc. not. Same exact thing here, granted you do have to make sure both animations are fired at the correct time.

Hand shaking can further be adjusted (necessary on dynamic characters that can have different height(s)) by adding Hand IK solutions.
IK Is also a good way to fix foot sliding along with proper animations and the readily available speed warping technique.

Since you don’t seem to know the basics, Perhaps it would be best if you didn’t give people bad advice or postulate that other advice given is bad.

Since this can be easily done, please assist OP in the animation and BP. Would love to see your method in doing so! LOL.

If the OP follows the provided advice he’ll surely end up with a working result.

On the other hand, I have been working game development several years, own a business, have published titles, and release free to use software which also won an epic mega grant. What exactly are your qualifications for providing users with bad advice?

Talk is cheap, please walk it. Help OP on the issues that he had faced.

I’m not sure why the hostility… the solution has been pretty clearly laid out I thought. This concept of using using a bone to create a sync point has been used in games for years and years (for example, we did this on Sleeping Dogs which has many synced animations including characters that can approach from any angle). This isn’t a new idea or something MostHost LA is coming up with off the top of their head. Also, FrankieV mentions it isn’t easy to do in Blender (other Max/Maya) but it most definitely is. You don’t need Mobu to do this at all. Getting a rig from Blender to UE4 isn’t as easy as it is in Mobu for sure and yes, Mobu is definitely easier in general to work with for animation, but I’ve been using Blender to do this concept for a while without any issues so not sure why this is considered a problem.

Just to lay it out a bit more clearly:

In your animation package (it doesn’t matter what):

  1. Make sure your rig has a bone under the root. Let’s call it sync.
  2. Bring in a copy of this character so you can animate your dual animation
  3. Add a constraint for location and rotation for the sync bone and constrain it to character 2’s root bone
  4. Animate
  5. Export both animations. This will be dependent on your animation package’s workflow. In blender I use Autorig Pro (which isn’t free) but this makes the process much easier. In Mobu its still not as simple as suggested but it is a lot easier (basically bake to the control rig, save that out, then load your single character again, and load in that animation to export).

Now in Unreal:

  1. Store a reference to your sync bone (unreal calls them sockets - you don’t need to actually create a new socket on the bone)
  2. On your characters set up a function that sets the location and rotation to a transform.
  3. When you want to play the synced animation, set it up so your initiating character (character 1) does the leading, so it will tell character 2 to sync it’s location/rotation to your sync bone and start both animations at the same time. You probably want to do this with an interface for cleanliness
  4. When the animation is complete tell it to stop syncing

I’ve oversimplified the unreal part a little but that’s the general gist of it.

5 Likes