Complex Character Animation Workflow (Modular / Scaled Humanoids)

I am trying to implement a player character that is both modular (having different meshes for outfits, head types, etc) and able to be scaled to various different forms (slight build, bulky, masculine, feminine, etc), that all uses the same animations and animBP.

The most relevant example would be Fortnite, where characters can have significantly different forms (Constructor vs Ninja) but they all still use the same animations and animation logic, as well as having outfits that add additional bones to their skeleton (I assume).

**How does one go about authoring skeletal meshes that will make good use of animations for their individual physiques?

Is this achievable through rigging only? Or are the animations designed to be able to adapt to the different body types?

What is the proper way to set up retargeting / skeletons in the editor when certain meshes will have bones that others will not? **(Character with a tail, vs without)

If a skeletal mesh such as an outfit is being used alongside the character mesh, will different versions be needed for different physiques or can morphtargets (or something else) be used to match the outfit to the corresponding body type that is wearing it?

I’m well aware that these are covering a wide swath of information, but I hope they are all actually animation related and on-topic for the forum. Also if any of them are too vague I’m happy to try and explain what exactly it is I’m looking for.

I’m happy to hear any insight into how Fortnite’s characters are rigged and animated, as well as how different skeletons are managed within the engine when using the same animation assets. (Examples from similar character systems in other games are perfectly fine as well, I just figured that Fornite was the most obvious example since it’s made in the same engine and has a relatively wide range of physiques).

The retargeting documentation specifically talks about retargeting to share animations between characters of different shapes and sizes. In general, it’s best to avoid having duplicate animations for slightly different skeletons if you can.

The main skeleton in the editor will have all of the bones across all skeletons. It works fine if you import a character that doesn’t have every bone in the skeleton, as long as the bones it does share with the main skeleton have the same hierarchy.

For example, you have one character (A) with a tail but no wings, another (B) with wings and no tail, and another (C) with neither wings nor a tail. The full skeleton will have both wings and a tail. If you import a variant of character C, you can still assign it to the full skeleton if the bones it has that do exist on the full skeleton are in the same order.

You can definitely use morph targets. Have one per character shape and set its value when it’s assigned to the character. (That probably won’t work if the actual skin weights on the clothing have to change between characters, though.)

To put things into context I’m part of a team converting the Quake3 mod Urban Terror from the idech3 engine over to Unreal 4. As a game Urban Terror has been aground for 18 years and still has a large active community of both causal and competitive players and as part of the Frozen Sand team or mandate is to ensure that there is a game a year from now when faced with obsolescence by design. So by definition the game design was already been done and the only requirement was figuring out how to do it by means of discovery of what tools were available as to our engine of choice, this case UE4.

Unreal 4 was a good choice as to our coder needs as it fits their needs, number one having access to the source code, but the big hole being the lack of built in tools to implement content in the manner that you described. It’s kind of like buying an Ipod that has no music installed so one has to find their own ways and means.

For our needs Epic’s resources as to their base character was not going to work for us as in a 6 foot 3 in base rig as to our need to create a unique and franchisee based player models.

What we needed, and to save time, you just need to read your own post as to key requirements of an all in one turn key solution where the only problem is a learning curve and with a big hole to fill we as a team looked at more than a few solutions and the only real problem was making sure we made a right choice as to our needs knowing what we wanted to do with things still to come.

What we landed up going with is Daz Studio, from Daz 3D, and the Genesis 3 frame work, which had issues with UE4.0 at first, and committed it as a preferred application at version 4.15 due to improvements that solved the implementation problems to the point that I have no issues as to recommending it’s use as a character development solution missing in Unreal 4 as an external application.

So based on the question you asked Yes Daz Studio/Genesis 3 can preform thous tasked as a hub for unique character development as a single source solution that has only been available to AAA studios via custom tool development or out sourced and has only become a choice as Unreal 4 does not limit the fidelity of the asset being imported based on the need of the developer and not the design intentions of the engine developer.

The long way to say yes the tools are there and the only issue is the learning curve, research, needed to be preformed to ensure one is making the right choice as to available options.

@DsyD Much thanks! I’d seen the animation retargeting docs before, but they hadn’t really clicked until put together with what you’ve said. I’ll definitely mess around in there and see if I can get better results.

So the rundown of what my workflow should roughly be is the following: Create skeletal meshes to match the varying physiques desired. Duplicate master skeleton and edit it to properly fit the new physique (Optionally removing any obsolete bones), Animations will be retargeted to the master skeleton, skeletal meshes will use their individual skeletons, animBP will target the Master Skeleton, and all skeletal meshes will be able to use that same animBP because they all share hierarchy with the master skeleton. Is that all correct?

Sounds like you have the right idea but are a little confused about the details? Or maybe I’m confused by what you’re describing…

You don’t want duplicate skeleton assets in UE4 - you want a single Skeleton asset that’s shared between multiple Skeletal Mesh assets. Animation assets (AnimBPs, AnimSequences, PoseAssets…etc.) are skeleton-specific, so if you have one skeleton per skeletal mesh, you’ll also need to create one copy of each AnimBP for each skeletal mesh, which would be a nightmare.

You author each character in an external program like Maya. That’s where, for each character shape, you duplicate the master skeleton, align the bones to the character mesh, optionally remove unused bones, etc. and then skin the character mesh to the skeleton. Then you export one FBX per character shape.

When you import the first character into UE4, it creates a Skeleton asset (just the bone hierarchy - call it MySkel) and a Skeletal Mesh asset (the mesh that has been skinned to MySkel).

When you import the next character, you select MySkel in the “Skeleton” part of the import dialog (see step 4 here). This time, UE4 skips creating a new Skeleton asset and only creates a new Skeletal Mesh asset for the new character, and it uses MySkel as the Skeleton asset for the character. If the new character has extra bones, UE4 will automatically merge them into MySkel. (Again, it will fail if the bone hierarchy for the new character is different from MySkel.)

Because both characters use MySkel, any animation asset for MySkel can be used by both characters. If you had created a NEW Skeleton asset for the second character, you wouldn’t be able to do that without duplicating the animation asset. You use the retargeting I linked above to prevent animations from moving bones away from their reference location (which would mess up characters that are differently-proportioned from the one that was used to create the animation).

Ah, I’m pretty sure I understand.

My confusion was the distinction between having multiple skeletons in the modeling program, vs having multiple skeletons in the editor. It’s good to know that I don’t need to worry about more than one skeleton file in the editor, and the skeleton created in the modeling suite will still function as intended. I’m going to start seeing if I can get some favorable results, and hopefully I won’t have any further questions.

Thanks once again for all the help~