How to apply animations automatically

Does anyone know how to match animations to existing skeleton automatically?

Reference the feature in Mixamo. The steps in Mixamo include: 1. Auto rigger for uploaded model <–not my question 2. Match animations automatically despite character’s different proportion <–my question.

Do they calculate the relative position of the joints combined with automatic skinning to achieve this? Thanks.
https://www.mixamo.com/#/?page=1&type=Motion%2CMotionPack

1 Like

The animation needs to be created for the exact skeleton structure in the mesh. In practice, that means you’ll probably need to download both the mesh and the animation from Mixamo together at the same time, and Mixamo will adapt the animation for you. I’ve written about using Mixamo here: https://www.donmccurdy.com/2017/11/06/creating-animated-gltf-characters-with-mixamo-and-blender/

Or are you asking how to implement what Mixamo does, automatically? That is a fairly advanced topic. If you have an arbitrary skeleton and an arbitrary animation, I think matching them up would be an entirely manual process.

2 Likes

The latter, how to implement what Mixamo does, automatically. What topic is this? Is there any papers?
And the ‘manual process’ means one has to eyeball the positions of animated skeleton A, and apply the pose to skeleton B frame by frame right?

I think you’re talking about taking (1) an skeletal animation created in one way, and (2) a mesh with a skeleton created another way, and trying to combine them? There are infinite ways that either of those two things could be set up, the skeletons might be incompatible, so there is no one answer or papers about this that I know of.

Mixamo takes a mesh that does not have a skeleton, and (with some human help) “fits” one of its predefined skeletons to that mesh. Then they have a library of animation designed for those predefined skeletons. I think it would be very hard to do this automatically, it requires user input to at least click on the key parts of the body. Here is a similar open source example: https://github.com/alecjacobson/skeleton-builder

The normal workflow is to use modeling tools like Blender to load your mesh, assign a skeleton and animation to the mesh there, and export. Trying to do all of this in code would be hard and I don’t know of resources to help with that, sorry.

1 Like

So you’re saying that since the rigging is done within Mixamo, therefore all skeletons assigned are in the range of their skeleton library(proportion and complexity wise). Then they just simply apply the pre-designed skeleton with pre-designed animation to the uploaded model with user input key joints (eye,neck, etc.). But do they have a gigantic library? Since every character has a different proportion, their bones should be differently proportioned, there should be infinite combinations for the bones and infinite skeletons. How do they have a library for infinite skeletons? Or…

(I’m talking about take (1) a skeletal animation created in one way, and (2) a mesh with a skeleton created the 'similar way(?) ’ but different proportions/sizes, then combine them. ) See image.
unnamed
Say I have skeletal animation A, and mesh B. They’re pretty much identical, same amount of bones, same bone names… but some bones are bigger/smaller/etc. In Blender, I copy the skeleton A to mesh B, then modify the head bones and leg bones to match the giant head and legs. Is this what Mixamo is doing? They have a library with a range of standard skeletons with animations attached, then during the auto-rigging, they just re-proportioned those bones to match uploaded mesh?

1 Like

I believe they can scale the bones in an existing skeleton and still have the animation work, yes. This is much easier than if you have two different skeletons where the bones are attached differently, one has fingers and the other does not, etc.

Thanks a lot!

SkinnedMesh
A mesh that has a Skeleton with bones that can then be used to animate the vertices of the geometry. The material must support skinning and have skinning enabled - see MeshStandardMaterial.skinning.

https://threejs.org/docs/#api/en/objects/SkinnedMesh

Joints Sometimes called bones, you can think of joints for rigging in the same way you think of joints in a human body. They basically work in the same way. Joints are the points of articulation you create to control the model. For instance, if you were to rig a character’s arm you would want to place a joint for the upper arm, another joint for the elbow and another joint for the wrist, which allows the animator to rotate the arm in a realistic way.

Skeletal animation is a technique in computer animation in which a character (or other articulated object) is represented in two parts: a surface representation used to draw the character (called skin or mesh ) and a hierarchical set of interconnected bones (called the skeleton or rig ) used to animate ( pose and keyframe ) the mesh. While this technique is often used to animate humans or more generally for organic modeling, it only serves to make the animation process more intuitive, and the same technique can be used to control the deformation of any object—such as a door, a spoon, a building, or a galaxy. When the animated object is more general than, for example, a humanoid character, the set of bones may not be hierarchical or interconnected, but it just represents a higher level description of the motion of the part of mesh or skin it is influencing.

YouTube
(unfortunately don’t know german, the examples look interesting)

In its simplest form, character rigging is the process of creating a skeleton for a 3D model so it can move. Character rigging is a very tedious process. It requires creativity, precision, and an eye for detail. As such, character riggers are responsible for using computer programs to form skeletons by creating a series of bones that deform and animate specific parts of the character.



Github

YouTube


@donmccurdy = :heart: his work with glTF



Workflow: Animation from Blender to three.js
Article

Github


New skinned mesh animation system in three.js r73 and r74
Article

Demo

  1. =^.^=
  2. =^.^=

References

3 Likes