Fixed

Keys stop generating, IK Pinning stops working, Performance drop after long time

MaciejP 5 years ago updated by Peter - Soxware Developer 5 years ago 16

Hello,

There are few very annoying bugs.

We are using UMotion to edit animations recorded using Optitrack Motive software (mostly <10s, 30fps), and during postprocessing in UMotion, very often keys just stop generating despite having Auto Key set to Generate.

Also, when that happens, enabling IK Pinning stops working - there is no message box, and selected object just snaps to what I think is a 0 position.

The one thing that fixes it for sure is UMotion restart.

The last very annoying thing is performance drop after a longer session of editing. Animations get so choppy that it's almost impossible to edit them. UMotion restart doesn't fix this - Unity restart is needed.

There are no error messages in console when those bugs appear.

I hope You'll resolve those issues soon.

Best Regards

Maciej

EDIT: I've added a video presenting IK Pinning issue: Video presenting bug

Answered

How to include additional bones to humanoid animations?

VoidLight 5 years ago updated 3 years ago 2

Hello,

I have to create a Mask for each animation then go to Transform and check the bones that I want to use (not a part of the humanoid) so they animate. Unfortunately this is lost when I import it in uMotion and when I export there isnt a setting for that clip to include these bones.

Do you have a suggestion?

Answer

Hi,
thank you very much for your support request.

UMotion hides all none humanoid bones by default.

In your humanoid UMotion project, witch into Config Mode and select the additional bone(s). Under the "Properties" tab, set "Visibility" to "Show". This is going to show and include the bone(s) in your animations.


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

Best regards,
Peter

Answered

The humanoid avatar doesn't fit the selected GameObject. The required human bone "Spine" has not been found.

jgamemaker92 5 years ago updated 2 years ago 3

I keep getting this error when I try to drag my humanoid character into the Pose Editor. My Humanoid character is already rigged, all the bones are set and green in the configure and the character is walking around fine in the game and it is working with plenty of animations. How can it say that is missing it's spine when obviously it isn't? What is causing this?

Answer

Hi,
thank you very much for your support request.

Most probably the character that has been added for the first time to this project (via the Pose Editor) was a different one (or the same one but with a different humanoid avatar setup)? UMotion projects are "one per character" (you can't share a project between different characters). Do you still get this message when adding the character to a fresh UMotion project?


If the above doesn't explain your issue:

Have you checked if a bone was assigned for the spine (in the Unity Avatar configuration editor)? Drag & drop a fresh instance of your character (directly from the *.FBX, not from a prefab) into your scene and check if it works with that one (i.e. to ensure that it really uses the humanoid avatar that you've just configured).

Best regards,
Peter

Answered

Is it possible to change blendshapes of more than 1 objects?

VoidLight 5 years ago updated by Peter - Soxware Developer 5 years ago 1

Hello,

I have my character skinned mesh and a separate object that is Jaw (parented to the character). During animation I want to use blendshapes from both character and jaw, so I can have mouth open and jaw open animation.

Is it possible to do that?

Answer

Hi,
thank you very much for your support request.

Yes, sure. When you add your character to the Pose Editor for the first time, UMotion asks you if you want to add all blend shapes to the head joint or to a new custom joint. Out of my head I think this should include every blend shape of all SkinnedMeshRenderers that it finds.

You can also always add blend shapes manually by adding a "Custom Property Constraint" to any joint/transform. Configure it as "Component Property" and select the appropriate blend shape weight property of a SkinnedMeshRenderer (take the "Custom Property Constraints" that UMotion was setting up automatically as an example).

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

Best regards,
Peter

Answered

Parent node

wzk 5 years ago updated by Peter - Soxware Developer 5 years ago 1

动画完成后,父节点将受到影响。父节点是摄影机,摄影机将跟随动画。在第一个视角中,相机是一个子节点,该子节点还将跟随动画,位移,旋转等的影响。

Google Translator:

After the animation is complete, the parent node will be affected. The parent node is a camera, which will follow the animation. In the first perspective, the camera is a child node that will also follow the effects of animation, displacement, rotation, etc.

Answer

Hi,
thank you very much for your support request.

I tried to translate your question to English but I'm not 100% sure if the translation is correct and if I understood the question correctly. I think you might be looking for the Child-Of constraint:

(You can enable subtitles for easier understanding.)


Please let me know in case it was something else you've been asking for.

Best regards,
Peter

Answered

Is it possible to reduce variation in entire curves?

Anonymous 5 years ago updated 5 years ago 2

I'm relatively new to this, but I'm not asking for a tutorial!  I'm just not familiar enough with animating to be sure by reading UMotion's feature list.  To explain my needs, basically, I have a nice mocapped idle animation that I need to use in a VR game that by nature immobilizes the head/hands/feet of the character.  That means that the animation's movements make the body look a little jerky, since those parts don't follow along.


So, what I'm hoping to do is proportionally flatten the animation curves, to normalize them and reduce those movements.


Is this possible with UMotion Community or Pro?  I don't need a long explanation, since there's surely documentation to help with that part.  But I'm wary of digging through a tool I don't fully understand looking for a solution that might not exist.


Thanks so much!

Answer

Hi,

thank you very much for your support request.

From a game design perspective, I would recommend to completely decouple the VR camera (VR head) from the animated head bone so that the variations of the idle animation don't add artificial movement to the VR camera (this is going to make players nauseous). Jerky camera movement can make even the most experienced VR users nauseous (see climbing physics of "Boneworks").

In UMotion, you could scale down the curves to reduce the variations (make sure that your rotation curves are in euler rotation mode for this to work). Just select all keys of an animation curve, then use the box tool (i.e. the blue bar appearing next to the selected keys) to scale down the curve.

You are going to need UMotion Pro to import an existing animation.

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

Best regards,
Peter

Not a bug

Extra key frames added before the keyed frame for IK Feet and Hands. Bug?

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

Image 136

Is this a bug? I can ignore it but I would prefer if this was not there, makes the dopesheet look messier

Answer

Hi,
thank you very much for your support request.

This keys are automatically created by the Child-Of constraint (which is used by the IK Rig by default). Please check out the following two video tutorials to learn more (it also explains the purpose of this keys):

If you don't need the IK Pinning feature, you can remove the Child-Of constraints from your IK rig. No additional keys are going to be created in that case.

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

Best regards,
Peter

Answered

Is it possible to apply joint corrective blendshapes automatically?

Anonymous 5 years ago updated 5 years ago 2

I.e. when elbow is rotated 0-90 degrees, a blendshape (correctivemorph_elbow) is applied 0-100 according the rotation of the elbow

In blender this is done through drivers and maya probably has something similar.

Answer

Hi,
thank you very much for your support request.

There is currently no way to build a custom property controller that drives multiple channels at the same time (in your case the rotation of the elbow and the blend shape weight). You could either adjust the blend shape manually according to the current rotation value or you could write your own driver script that does that for you.

For the scripting approach, add a new MonoBehaviour to one of the transforms of your GameObject that looks something like that:


public class ElbowMorphDriver : MonoBehaviour

{

   public float InputValue = 0f; // Access this property via a "Custom Property" constraint from UMotion

   [SerializeField]private Transform ElbowJoint;

   [SerializeField]private SkinnedMeshRenderer BlendShapeSmr;

 

   // This method is going to be called every time UMotion re-calculates the current pose.

   public void UMotionCallback() // Let UMotion call this method (enter callback name at Pose Editor --> Options -->

                                                   // Extending UMotion --> Callback Name; check out manual by clicking on the black info button)

   {

      // According to the InputValue, set elbow joint rotation and blend shape weight

   }

}


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

Best regards,
Peter

Answered

Reference pose, bind pose and humanoid avatar

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

How exactly does the reference pose, bind pose and humanoid avatar interact (humanoid project)?

I definitely get different types of output depending on - for example - when I export 'update fbx' with an existing skeleton avatar and bindpose that matches the reference pose.

Answer

Hi,
thank you very much for your support request.

To learn more about the humanoid avatar, please read Unity's blog post about the humanoid animation system: https://blogs.unity3d.com/2014/05/26/mecanim-humanoids/

It basically defines the T-Pose for each character and uses that as the reference pose for all the animation re-targeting. The less accurate the T-Pose of your humanoid avatar is, the more re-targeting error you are going to get.

Bind-pose is the pose that your character had in the 3D modeling application when the bones have been bound to the mesh (skinning). The reference pose is just used internally by UMotion (it is used as initial pose when an empty animation clip is created or by the IK Setup wizard to correctly create the IK rig). When you're animation has keys for all bones, none of these poses is used when the animation is exported.

To get good results when working with Unity's humanoid system, make sure that your character's avatar is setup correctly. Try use some animations (that are working well) to test if everything re-targets nicely. Then use that character for creating/editing your animations (in UMotion). When exporting to *.FBX, always export using "Update Existing File" to write the animation into the *.FBX of your character. This ensures that Unity imports the animation with the correct humanoid avatar.

And always remember: If you don't need animation re-targeting, don't use "humanoid" (but "generic" instead). Re-targeting adds additional complexity and thus issues that you can simply avoid when using "generic" instead. "Generic" also has better performance (on the CPU).

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

Best regards,
Peter

Answered

Only avatars created by Unity model importer are supported UMotion

Xyth 5 years ago updated by Peter - Soxware Developer 3 years ago 19

I have a rigged, working Humanoid model in Unity 2019, its fully animated and works as expected, yet when i drag it onto the pose editor I get the above error message.  Any clues what I might need to change?  The model can be exported and imported into unity as is so i dont understand the error.

Answer

Hi,
thank you very much for your support request.

Please make sure that in the "Rig" tab of the import settings (shown in the Inspector when selecting your character's source file in the "Project Window"), you have set "Avatar Definition" to "Create from this model". This is to ensure that Unity generate's a humanoid avatar from your character.


UMotion requires a humanoid avatar that has been generated by Unity's model importer as it contains more information (needed to guarantee correct humanoid *.anim export) then a humanoid avatar generated via script.

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

Best regards,
Peter