Best way to animate these morph player models?

I have these morph player models that will be used in play and in cutscenes:
image
The shirts, pants, belts, belt buckles, shoes, eyes, body and mouth are all separate pieces that are intended to be animated in unison. I am wondering how i should go about this.

  1. I could put them all under one model and use a Motor6D to connect them to one root piece. They would then all be animated by one AnimationController and one set of bones. Super clean. The only problem is that I will need to append non-morph items to the player model such as their core (an item that will be removed/replaced from their model, incorporating it into the morph would be impractical), armor (would be difficult to attach to the morphed model, Bones can’t be welded to parts so the parts would have to be constantly positioned via script in real time). A simplified block rig would be animated in unison with the morph to serve as the player’s hitbox. This would also work better with animating because the morph would be animated directly and it would be easier to see how all of the body parts interact with the game world.

  2. I could make a block rig that mirrors all of their joints, animate the block rig and then have a script that constantly frame updates all the morphs’ bones to stay pinned on the rig. Then any attachable items such as armor, the core and the player’s weapon could simply be welded to the model without a second thought. This would work better with the player’s hitboxes which could be mounted on the rig as well.

.
Which approach would be more efficient/easier to use? Or better yet, is there a better way of doing this that i have not thought of yet?

1 Like

There is a plugin that is helpful for adding joints and welds to be able to start the animation: Plugin
You can also purchase the pro version which is 100Robux

You can actually ‘weld’ parts to bones using RigidConstraint.
You would position the armor correctly on the rig, then add an attachment inside it that has the CFrame of the corresponding bone (This is to have the offset correct). This attachment will be your Attachment1.
Then you simply use a RigidConstraint with Attachment0 being the bone.
More about that here: RigidConstraint

1 Like