Answered

Auto Key mode for both Update and Generate

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

I can choose Update or Generate from Auto Key,

but would like a new mode.
If there is no Key, it will be Generate.
If there is a Key, it goes to Update.
This will make it easier to add/update keys.

Answer

I solved it.

Generate was doing that.

Sorry.

Answered

Export humanoid animations as multiple FBX and combine clips additively

Anonymous 3 years ago updated 3 years ago 4

Hello,

First, I want to say how great and enjoyable using UMotion has been so far. I finally took the time today to really dig into when I ran intoo some basic retargetting issues (clipping is my biggest pet peeve), and I must say I am impressed and really glad I purchased this. Definitely wish I started sooner!

Onto my questions though, I have 2 that I tried searching for but wasn't able to find anything specific.

1. Can we export humanoid animations into multiple single clip FBX? For organization purposes, I much prefer if each animation is a separate FBX (I also use the FBX curves and masks, so not being a clip makes this much easier) but attempting to do so gives a warning that it's not recommended for Humanoid Animations, and if you do so anyways, attempting to copy the avatar leads to errors about conflicting bones even though it should be the same model and rig.

I was able to export and update the existing FBX, but beyond just exporting a single clip at a time and constantly duplicating the FBX, I'm not sure ift this is possible?


2. This is just a brainstorming thing, are we able to take a clip using it as a base layer, and then apply another clip ontop of it additively? For example, something I was thinking about is how Mixamo usually has a male and female run animation, and what I'd like to do is take one of those as a base, but then apply all of the keyframes of the other and use the resulting animation. The idea is for to help easily create a more unique animation.

I am currently using UMotion Pro 1.28p04 if that matters to the above.

Thanks!
Will

Answer

Hi,
thank you very much for your support request. I'm glad to hear that you are enjoying working with UMotion so far.

1. Can we export humanoid animations into multiple single clip FBX? For organization purposes, I much prefer if each animation is a separate FBX (I also use the FBX curves and masks, so not being a clip makes this much easier) but attempting to do so gives a warning that it's not recommended for Humanoid Animations, and if you do so anyways, attempting to copy the avatar leads to errors about conflicting bones even though it should be the same model and rig.

Exporting into a separate FBX is going to add the bones exactly as they are in your UMotion project to the FBX. If you get errors regarding conflicting bones when copying the avatar, then there might be differences between the rig that's in your original character's FBX and the prefab you have assigned to the pose editor (reason can be that Unity modified the imported FBX or that something was added/removed in the prefab). I would recommend that you use a 3D modelling application to compare the original and the exported FBX files to further debug this.

I was able to export and update the existing FBX, but beyond just exporting a single clip at a time and constantly duplicating the FBX, I'm not sure ift this is possible?

There is currently no built in way to do this, but you can use the UMotion API to write your custom export procedure (if you know a bit of C# coding in Unity). Here is the link to the documentation: https://www.soxware.com/umotion-manual/UMotionAPI.html

Your custom script could automatically duplicate the original FBX file etc.


2. This is just a brainstorming thing, are we able to take a clip using it as a base layer, and then apply another clip ontop of it additively? For example, something I was thinking about is how Mixamo usually has a male and female run animation, and what I'd like to do is take one of those as a base, but then apply all of the keyframes of the other and use the resulting animation. The idea is for to help easily create a more unique animation.

UMotion does support additive and override layers. Here is the link to the documentation: https://www.soxware.com/umotion-manual/Layers.html

And here is a video tutorial that uses additive layers to adjust the look and feel of an existing animation:

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

Best regards,

Peter

Under review

Weapon Offset when parented under right shoulder

ytGameDevDave 3 years ago updated by Peter - Soxware Developer 3 years ago 3

I needed a parent that would give me control over both hands, and continued to animate the gun object and its children using constraints. I ended up with the desired animation, but when exported, the gun oddly enough is offset halfway the animation. 

It's another one of those things that feels like it defies all logic. 

Is there a way to change the parent of the gun to the right hand and keep the animation intact? 

When things are parented to the hands, I guess things work better. I did not have this problem with another reload animation and the gun was parented to the hand there.

This was a hassle but doable since I was still in the blockout phase. 

Fix:
In the Scene:
1. Duplicate your character (in the hierarchy) as a backup. 
2. Change the object to the hand as the parent.

3. Give the object the right start/scene- (local) position to prevent offset.

In UMotion
4. In config, select "Apply Scene Pose". 

5. In config, create the same setup for all the child objects to have bones.
6. Remove all the keyframes onwhich you applied "Update Position and Rotation keys".
7. Re-add all constraints on the keyframes you previously started constraint connections on. 

This fixed the offset and now results are consistent. 

For now I am wary of parenting to anything but hands with humanoid animations. 

Answered

The Humanoid avatar doesn't fit the selected GameObject (Can't find Hips)

mauroabidal 3 years ago updated by Peter - Soxware Developer 3 years ago 1

Image 1163

Hi, when I try to drag and drop the GameObject that I want to animate, I get this error message.
Here is the hierarchy of the GameObject

Image 1164

I'm guessing I'm doing something wrong but I can't figure out what, any suggestions?
Thanks in advance for your answer.

Answer

Hi,
thank you very much for your support request.

The humanoid avatar is a file that is created when  Unity is importing the FBX of your character. It stores the transform paths of all the bones/transforms that have a human skeleton role assigned (in the humanoid setting). If you modify the transform hierarchy of your character or move the animator component to a different position in the hierarchy, the paths stored in the avatar might not be correct anymore. That's what the error message is indicating.


Make sure to use a version of your character, that has the same hierarchy as the original (imported) model of your character.


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

Best regards,
Peter

Answered

Exported Animation offset

nory 3 years ago updated by Peter - Soxware Developer 3 years ago 1

Heyo,

first of all, thank you very much for developing this awesome tool. I greatly enjoy working with it and have tons of fun slowly discovering everything about animation.


Unfortunately, I'm running into a discrepancy between animations shown in UMotion and the exported animation, both as an .anim and as an fbx.


You can see the difference in the following screenshot, showing both the fbx in UMotion and the animation preview of a duplicate:

Image 1162


I've exported the fbx as a unitypackage, along with the corresponding UMotion project file, in case you want to have a look:

Ganymede3.asset
Ganymede06.unitypackage


I've tried playing with the animation import settings, but so far no configuration seemed to fix the issue. My suspicion is that the culprit is most likely found in some interaction between IK and the root of the object being rotated, but I haven't been able to pinpoint it, so far. Then again, I might also be on the wrong track and the issue is rooted in something else entirely.

As an added note, the FBX used here is the result of a VRM object being exported to FBX and consecutively rigged as a humanoid. I've considered whether this might play into it, but since the discrepancy also exists between the FBX in UMotion and the exported FBX with the animation, I'd imagine that it's likely not to be the cause.

In any case, I'd be incredibly helpful if you had any pointers.
If you need more information or the like, I'd be more than happy to provide.

Answer

Hi Nory,

thank you very much for your support request.

The problem you are seeing here isn't really related to UMotion, but to how the humanoid animation system itself works. The humanoid animation system is an animation re-targeting system. When Unity imports an FBX file configured as humanoid, it converts the actual authored animation into a "normalized" format that can then be played by the humanoid animation system on any other humanoid character even if the animation wasn't made specifically for that character. The system is designed to make animations look similar to the original authored animation, but they won't be precisely the same.

Hands being at wrong relative positions is one such problem humanoid can introduce. In order to compensate that error, humanoid has an internal corrective IK pass implemented that can correct wrong hand and foot positions. It's just not enabled by default (but you can preview it's effect when previewing the animation in the inspector window by enabling the IK toggle button).

More information about humanoid: https://blog.unity.com/technology/mecanim-humanoids

This blog post also covers the issue you are seeing with your hands at headline ("IK Solver").

In order to enable the corrective IK pass at you're game's runtime, you need to use scripting (only the foot IK pass can be enabled via Unity's animator UI). You can use this script (make sure to have "IK Pass" enabled in your Animator window):

using UnityEngine;
using UnityEditor;
using System.Collections;

    public class AnimatorHumanoidIK : MonoBehaviour
    {
        //********************************************************************************
        // Public Properties
        //********************************************************************************

        [Header("In order to use this, enable \"IK Pass\" in your Animator Controller!")]
        [Space(15)]
        public bool EnableFootIK = true;
        public bool EnableHandIK = true;

        //********************************************************************************
        // Private Properties
        //********************************************************************************
        
        //----------------------
        // Inspector
        //----------------------
        
        //----------------------
        // Internal
        //----------------------
        private Animator animator = null;

        //********************************************************************************
        // Public Methods
        //********************************************************************************

        //********************************************************************************
        // Private Methods
        //********************************************************************************

        private void OnAnimatorIK(int layerIndex)
        {
            if (animator == null)
            {
                animator = GetComponent<animator>();
            }

            float footIKWeight = EnableFootIK ? 1 : 0;
            float handIKWeight = EnableHandIK ? 1 : 0;

            animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, footIKWeight);
            animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, footIKWeight);
            animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, footIKWeight);
            animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, footIKWeight);

            animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, handIKWeight);
            animator.SetIKPositionWeight(AvatarIKGoal.RightHand, handIKWeight);
            animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, handIKWeight);
            animator.SetIKRotationWeight(AvatarIKGoal.RightHand, handIKWeight);
        }
    }

----

If you do not plan to share your animation across multiple characters, I would highly recommend using "generic" instead. "Generic" is true "what you see is what you get" as the generic animation system plays the authored animation 1:1.

-----


My suspicion is that the culprit is most likely found in some interaction between IK and the root of the object being rotated, but I haven't been able to pinpoint it, so far.

Please note that the exported animation does not contain any custom IK code. The effect of UMotion's IK solver is completely baked into the final animation. Once exported, UMotion does not execute any IK code anymore. In order to preview what UMotion exported into your *.FBX file, you need to preview it as generic. Only generic shows you the actual authored animation. When configured as humanoid, Unity converts the actual animation of the FBX into it's humanoid format which can introduce imperfections like the ones you are seeing.

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

Best regards,
Peter

Answered

Generic Rig IK Constraint Dependency Loop

ytGameDevDave 3 years ago updated by Peter - Soxware Developer 3 years ago 4

Hi Peter,

No matter where I Put the IK in Config (shoulder/spine) to prevent a dependency loop, the error will keep showing. It does not work. There is not much else to give you here...

Image 1153

Image 1154

Image 1155



I have been at a standstill and will continue with FK.


Please let me know

Answer
It works when Twist Bones are set to none, UMotion does not add twist bones itself?

That makes sense.

UMotion is not altering you're bone hierarchy. If you do not have twist bones in your character's hierarchy but want some, you need to add them in your 3D modelling application of choice.

Having wrong twist bone settings in the ik wizard explains why you get into a dependency loop. UMotion assumes that your arm's/leg's bone chains are longer than they really are. As a result the IK targets are placed at a wrong positions in the bone hierarchy which results in being dependent on each other --> loop.

Btw. you can click on the black "info" buttons (spread across the entire UMotion UI) to jump right to the related page in the UMotion manual. Stuff like how the "Twist Bones" setting exactly works is explained there: https://www.soxware.com/umotion-manual/IKSetupWizard.html#HumanIK

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

Best regards,
Peter

Answered

Make a better Clip dropdown list

Adrian Taylor 3 years ago updated by Peter - Soxware Developer 3 years ago 1

A small quality of life idea:

Make a better dropdown menu for the list of clips in the Clip Editor. If you are like me and often have lots of clips in a project, this menu can become really annoying to scroll - seeing as there is no scroll bar and the scroll wheel does not work. You have to continuously press the arrow buttons to scroll.

Image 1149

Image 1150

Answer

Hi Adrian,

thank you very much for your improvement suggestion.

I've noted your idea on my internal "ideas for the future" list. This list is used when considering which new features to ship in new updates.

Best regards,
Peter

Under review

Loss of work - Saving a prefab with Pose Editor filled, broke and deleted entire prefab file & existing connections from project

ytGameDevDave 3 years ago updated by Peter - Soxware Developer 3 years ago 6

Image 1148


I saved everything under the prefab into multiple separated prefabs, so it was easy to rebuild the main one. 

Unfortunately this COULD have destroyed almost all progress as the entire prefab was fully unpacked in the scene.

Working with an agile setup, graphics get updated through these prefabs as we pull new updates. 

Imagine having to recreate the prefab and all of its existing connections manually. This would be a severe timeloss that you do not want when you are close to a deadline.

I do not wish to replicate this issue. XD

This definitely needs a fix.

ps: I've been working a lot with UMotion now, this is why there's a lot of suggestions/posts from me, I absolutely love the software and wouldn't choose anything else to animate with as it is a massive treat to be working in the game itself.

Fixed

Can't sync timeline in Unity Version2020.3.36f1

Elsiehar 3 years ago updated 3 years ago 10

I have just updated my project file to the above and I can no longer sync the timeline, I thought it was working okay with this version but can't be sure.  Everything seems to work but the bones don't show and when I play the animation nothing happens.

I went back to my 2020.3.31f1 version and it still works okay.  For now I can just do the animation in 31f and then copy the files to 36f but it would be good if there was a fix.

Answered

Very simple yet effective feature

ytGameDevDave 3 years ago updated 3 years ago 2

Hey Peter, I know I'm kinda overflowing the forum but I'm just putting this out there for if you want to bring out another cool but easy-to-implement feature for the next update.

Maya has a very handy feature where we can scrub the timeline but not let it play, by clicking and holding down the middle mouse button.

What's handy about this is that we can take an existing pose, or edit existing poses and then decide to put the keyframe elsewhere without overwriting the keyframe the slider is on or losing all the pose-work we just did. 

I know there's a workaround for this; simply key your pose, copy the key, undo, and paste it elsewhere. But this feature makes our work twice as fast and keeps you in that animator flow, it's a luxury that I kind of miss and will definitely make UMotion shine just a little bit more. 

Just wanna say thank you for this incredible software 🙏 Unity should fund you and make it a standard 

Answer

Hi Dave,
thank you very much for your input and also thanks for your nice words. I'm glad you enjoy working with UMotion.

The problem I see with this feature is when people new to UMotion accidentally use it and then get confused why the pose doesn't update while scrubbing. Maybe a different but similar affective feature would be copy/paste buttons in the pose editor. What do you think?

Best regards,
Peter