Answered

Is there some way to automatically reduce/simplify/decimate key frames

Anonymous 5 years ago updated by Peter - Soxware Developer 5 years ago 3

Hi,


One of the tasks that I find ends up consuming the most time when I use UMotion Pro to clean up and edit mocap data is having to manually decimate and simplify key frames in areas that I need to edit so that the curves becomes practical to tweak and adjust.


I understand that UMotion Pro is resampling the whole animation via Unity's Humanoid model, (I'm also using UMotion Pro to convert a humanoid FK animation to IK) but is their perhaps some way to apply a more aggressive/lossy (ideally configurable error tolerance) key frame reduction after this resampling happens?

I can't find a way, but alternatively it could be good if there were some way to export a clip to fbx in such a way that the same fbx could then be re-loaded to replace the key frames of the original clip. I.e. instead of importing an fbx into a new clip, you could ask UMotion Pro to reload an fbx (that was previously exported) into an existing clip without any resampling. This way it would be possible to also edit the key frames in an external tool like Blender where I could decimate the key frames but then handle the rest of the clean up in UMotion Pro.

Any ideas for being able to decimate key frames after importing a new clip would be greatly appreciated,

Thanks!

UMotion Version:
1.20p08
Unity Version:
2019.2.20f1

Answer

Answer
Answered

Hi,
thank you very much for your support request.

Currently there is no decimate/simplify functionality in UMotion. But the *.FBX workflow you mentioned does indeed work. The trick is, to create a copy of your character that is configured as "generic". Create a new UMotion project for that characer and import your decimated animation (also configured as generic). You can use Unity's import settings to decimate or external tools like Blender. Generic animations are always imported "directly" without any re-sampling.

Please let me know if you have any follow-up questions.

Best regards,
Peter

Answer
Answered

Hi,
thank you very much for your support request.

Currently there is no decimate/simplify functionality in UMotion. But the *.FBX workflow you mentioned does indeed work. The trick is, to create a copy of your character that is configured as "generic". Create a new UMotion project for that characer and import your decimated animation (also configured as generic). You can use Unity's import settings to decimate or external tools like Blender. Generic animations are always imported "directly" without any re-sampling.

Please let me know if you have any follow-up questions.

Best regards,
Peter

Sorry I missed the reply to this.

Since I'm trying to edit a humanoid animation with IK bones created by UMotion Pro and it's often the IK bone curves sampled by UMotion Pro I'd really like to decimate then it doesn't sound like this workaround can be applied in my case unfortunately.

Incidentally I'm also finding that exporting animations to fbx results in strange artefacts (e.g. strange twists in legs that aren't in the original animation) which I don't see while editing in umotion pro or if I export to .anim (maybe a separate bug I'm not sure atm).

Regards,

- Robert

Hi Robert,

following up on this:

"Incidentally I'm also finding that exporting animations to fbx results in strange artefacts (e.g. strange twists in legs that aren't in the original animation) which I don't see while editing in umotion pro or if I export to .anim (maybe a separate bug I'm not sure atm)."

In the UMotion export settings, make sure to set "Write Mode" to "Update Existing File" and select your character's *.FBX file (or a copy of it) as destination file. That way, Unity is going to use the correct humanoid avatar for re-targeting the *.FBX animation to humanoid. When exporting as a new *.FBX, Unity is creating a new humanoid avatar that might have smaller or bigger differences thus introducing this artifacts.


Best regards,
Peter