Open lucasjinreal opened 1 year ago
Yes, I've done something similar.
Bone names just map, The orientation needs to be recalculated with matrix calculations.
The formula:
New animation = (New Animation Binding)^-1 (New global parent)^-1 (global Parent) (Animation Binding) (animation) (global bind offset) (new global bind offset)^-1
This seems to work well for models with different orientations among mixamo models.
The new binding pose can be calculated as:
Get R, S of the binding pose of the target model
Take the coordinates relative to the parent bone as T in the existing global coordinates
new binding = TRS
@Nor-s hi, thank u for the reply, do u have an example for this? How should I get the R and S from a SMPL model and a Mixamo model in FBX format?
@jinfagang
see src/utility.h DecomposeTransform
T, R, S = DecomposeTransform(local bindpose) "local bindpose" is "assimp aiNode::mTransformation"
And I wrote sample code for my editor. (same mixamo name, different bone orientation) ( Here, PoseComponent holds source animation information and target character information.)
Sorry for the dirty code.
example
I haven't tested SMPL because I don't have an SMPL model, but this is the result of retargeting different orientation Mixamo models. (But for now, Mixamo has updated them, they all have the same bone orientation.)
@Nor-s thank, does there a way make your code buildable on macOS? I wnanna have a try, this seems exactly what I need
@jinfagang
sorry. I'm currently only trying the silicon version (m1), so I don't know if it will work correctly. Also the animations can be weird like you did before.
To build embedded Python, you need to configure your environment according to this document
Setting up the embedded Python environment seems too difficult.
I configured the environment with this command.
xcode-select --install
brew install pkg-config openssl@1.1 xz gdbm tcl-tk
git clone --recursive https://github.com/Nor-s/Anim.git
cd Anim
mkdir build cd build cmake .. make
if u intel version
You will need to modify the following:
[scripts/build_python_osx.sh](https://github.com/Nor-s/Anim/blob/master/scripts/build_python_osx.sh)
./pip3 install mediapipe-silicon
=>
./pip3 install mediapipe
@Nor-s hello, I am exactly Sillcon version M1 mac. But you needn't build arm python yourself. Using mini-forge can have a arm python in conda.
Have you tride that? this can be more universal since usally users have python in conda.
Hi, recently I start tackling the retarget problem.
I have the output in SMPL model format, which is quaternion based on SMPL, then I want apply these animation to Mixamo model.
But Mxiamo skeleton is different than SMPL (not bone names, buthe the bone orientation also different).
Do u know how can I retarget the animation to mixamo? (by given the source animation and 2 model smpl & mixamo)