I’m trying to follow the Avatar Animation example on Unity and just change the avatar to a different model instead of unitychan. Every model that I tried gets deformed in a strange way, some along the hips, some on the legs or arms. How should I set it up so that it will animate the model accordingly?
I tried with Ethan and a few other models from the asset store and all of them have issues.
This is how two of them are set up with the model joints.
It seems that you have to correct the rotation of your avatar’s joints. Here are two ways to add offset to joint rotation:
- With coding. Add rotation offset to every joint and manually find the correct value.
- Without coding. Move every joint with incorrect rotation to Empty Object and set it in Editor instead of the real joint. Rotate the real joint inside of this empty object (manually select the correct rotation value).
For example, to correct the rotation of a left elbow of your model, create an empty object “fake_left_elbow”, make it child of the avatar’s left elbow and make the real left elbow joint (for example, “left_elbow”) child of “fake_left_elbow”. Then, set “fake_left_elbow” instead of “left_elbow” in Editor in your avatar’s component. Then, run the scene and check whether the left elbow rotates correctly or not. If not, rotate the “left_elbow” in Editor and set a different rotation angle until it’s correct. Usually, you have to turn the joint by 90 degrees. So, the hierarchy of a new left elbow would be:
–“fake left elbow”