Answered

Custom FBX export pipeline

Anonymous 2 years ago updated by jasonyak 2 years ago 9

Hi @SoxwareInteractive

Firstly thanks for making such a great and essential tool, we've found nothing else like it on the store.

We've been getting a bit deeper into integrating it into our workflow pipeline and hitting some issues which I was hoping to ask you about to see what workarounds there might be or what we can do differently.

When exporting animations to an FBX we need to be using the option to export to an existing FBX to gain the benefits of an embedded humanoid avatar, however it's undesirable for us that the animation clips are added to the FBX for various reasons and have found no direct way to remove them once they've been added, the only way we have found is by reverting the FBX. The current way we deal with this problem is that we listen for the OnPostprocessAnimation event, once clips hit an FBX we use an editor coroutine to delay a frame and then we export the clip/s into individual .anim files and then revert changes to the FBX, noting that we use a coroutine because we have very limited use any AssetDatabase create or delete methods while post processing events are firing, Unity throws errors if we use these API's during the post processing events. I have tried many other ways during the post processing event to try and intercept the clips from being added or delete them, but nothing seems to work for us, even the integrated Unity way of removing animations via the inspector is as you may know only hiding the sub assets, it's not really deleting the clips.

The main reasons we don't want the FBX increasing in size is because it will end up with hundreds of animation clips, many of which will become outdated animations we no longer need to use. Loading this FBX at runtime will be a drain on memory and it removes our ability to manage which clips are compiled into our apps.

What we ideally wish we could do is a hybrid of your export options where we can choose an FBX containing an avatar to influence the export, but it exports to an individual file rather than being added to the FBX. If that is not possible I was wondering if you have any ideas on how to remove the animation clips UMotion adds or prevent them from being added to the FBX in the first place? we've exhausted ideas trying to solve this and I'm hoping you have a simple solution for us, it would greatly improve our how we use UMotion as part of our tool chain.

Thanks!

Jason

Answered

A warning about reset to bind pose

Roy D. 2 years ago updated by Peter - Soxware Developer 2 years ago 1

Image 1112

I got this message when trying to animate my avatar, after clicking ok, my avatar appear to lay on the ground face downward. I want to animate with original pose, so I clicked apply scene pose. 

After animation is done, I exported animation file but I find the clip is animate like the character face downward. How to fix this?

Answer

Hi Roy D.,

thank you very much for reaching out.


The Unity Animator is always resetting the position/rotation of the hips bone to the bind pose. This is the position/rotation the hips had when the model's bones where created and bound to the mesh of the model. UMotion is doing the same to ensure correct WYSIWYG preview.


You usually get this error message when you have manually edited the position/rotation of the hips of your character in it's prefab.

To solve this directly drag and drop your character's 3D modeling file (*.FBX, *.blend,...) into your scene (not the prefab!). This ensures that the original position/rotation is used. If the character is oriented correctly this way, create a new prefab based on this version and delete your old prefab.


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


Best regards,

Peter

    Answered

    How to add animation curves for parameters

    Trevor 2 years ago updated by Peter - Soxware Developer 2 years ago 1

    Image 1110


    I'm wondering how to add animation curves to created animations for altering parameter values in the animator while the clip is playing.  Mecanim has this at the bottom of the animation clip, but I don't see it on any clips that if have created from Umotion.  I'm having trouble googling answers because I'm just getting information on the curves between animation keys.

    Answer

    Hi,
    thank you very much for your support request.

    Here is the related page in the manual: https://www.soxware.com/umotion-manual/CustomProperty.html#AnimatorParameter

    In short: Add a custom property constraint to a bone/transform. It doesn't matter which bone/transform you choose. You can even create a new transform that you put above your character's head for easier selection. Set the custom property in "Animator Parameter" mode and adjust the settings to your needs (see link above).

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

    Best regards,
    Peter

    Answered

    Additive Difference

    Carpetcrumb 2 years ago updated by Peter - Soxware Developer 2 years ago 5

    Hey there, I am looking for a way to add the difference of two poses to the Additive layer. The thought behind this is, I have an idle animation, and I have a take-damage animation. They are nearly identical, except the arms are improperly positioned on the latter. What would correct this is if I could add an additive layer to the second animation, adjusted until the first frame matches the starting frame of the idle animation. This way the fist and last frames of both animations match each other and the take-damage animation still plays relative of its base layer. Copying the keys from the base layer to an additive layer of course does not work, and overriding the pose of the arms will mean his arms wont move relative of the base layer. Am I missing something? Is there another way to go about this? Thank you.

    Answer

    Hi,

    thank you very much for your support request.

    Your thinking is correct. While there is no automated way to get the difference, you could do it manually:

    1. Copy the keys of the target pose from the first animation (idle) and insert it as frame 0 in your second animation (take damage). If you only want to manipulate the arm pose, copy only the keys of the arms.
    2. Add an additive layer and open it.
    3. Set the frame cursor to frame 0 and create key frames for all arm bones (with no changes).
    4. Set the frame cursor to frame 1 and adjust the pose until it's in-line with frame 0. You might need to jump back and forth between frame 0 and frame 1. I would suggest using "Auto Key" in "Generate" mode to automatically key your changes, so that you don't have to manually create keys every time you go back to frame 0.

    I hope this helps. Let me know in case you have any follow-up questions.


    Best regards,
    Peter

    Answered

    Suggestions for adding user-friendly buttons.

    Two Comet 2 years ago updated by Peter - Soxware Developer 2 years ago 1

    When the Clip Editor window is closed. In the Pose Editor, add a button to open the Clip Editor below the warning text.

    Conversely, even when the Pose Editor window is closed, it would be nice to be able to open it with a button in the Clip Editor window.

    Answer

    Hi,

    thank you very much for sharing your idea. I really appreciate that.

    I do like the idea and have put it on my to-do list to implement this in the future.

    Don't hesitate to let me know in case you have any questions or further ideas.

    Best regards,
    Peter

    Answered

    Char is like floating after edit

    Loudo 2 years ago updated by Peter - Soxware Developer 2 years ago 1

    Hello after edit arms and export  the char is like floating ... any idea why? thx^^

    Floating Video

    Answer

    Hi Loudo,

    thank you very much for your support request.

    This looks like wrong root motion settings. Please check the root motion settings of the exported *.anim file and of the "Animator" component of your character. You need to make the correct settings (that fit to your animation setup) there.


    As I don't know enough about how you use the animation system, it's a bit hard for me to guess what the correct settings would be in your case. Try setting "Root Transform Position (XZ)" to "Original" and enable the "Bake Into Pose" setting.


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

    Best regards,
    Peter

    Answered

    Using an animation event handler with the AnimationEvent parameter in code

    Nightkin 2 years ago updated 2 years ago 3

    Hello Peter,

    First of all, thank you for this great product, UMotion Pro makes it so much easier for me to author animations quickly in Unity rather than using Blender (although I miss the ability to use NLAs, if you ever want to add a new big feature, that would be a good candidate *wink* *wink* *nudge* *nudge*).

    It seems that since Unity 5, we are able to write an animation event handler method in the code with an "AnimationEvent" parameter instead of an int, string or float. This is great for blended Animators so you can finally know what animation clip sends the event, and more importantly, what weight is the Animator layer at that time. That way, when your Animator uses a blend tree, blending between two "walk" animations, for example (one slow and one fast, or a walk and a run, or whatever you can think of), you can decide what sound to play and no longer have two sounds play at the same time, or at least the same code being run twice. This information comes from MecanimDev himself : https://forum.unity.com/threads/mecanim-5-blend-tree-animation-event-called-twice.318747/#post-2071893 (yes that post is 7 years old).

    However, UMotion Pro does not seem to offer that option yet. It is possible to do it, but we get a small warning icon on the animation event in the UMotion Clip Editor because it wants either a void, or an int, or a float or a string. In practice, the handler still does its job so this is not really a problem, but the warning icon is a bit distracting.

    Would it be possible for UMotion to detect whether the name of the function we write in the animation event window matches an event handler with the AnimationEvent parameter so it knows we really mean to use that function and this is not a typo please?

    PS: When looking at the About window, I saw Pärtel in the Special Thanks section, which is nice except his name is "Lang", not "Lange" :)

    Answered

    Fliegende Füße, Körper bewegt sich komisch nach Export

    Dustin 2 years ago updated by Peter - Soxware Developer 2 years ago 2

    Hallo!
    Nachdem ich die Animation Exportiert habe, und die Scene abspielen lasse, ist mein Character nicht mehr in Sync mit der Animation. Woran liegt das?

    Image 1108

    Im Clip Editor beim Abspielen des Clips funktioniert alles so wie es soll.

    Image 1109

    Answer

    Hi,

    thank you very much for your support request.

    Great to hear that you've been able to fix this issue.


    If possible, please ask questions in English in the future :-) This makes it easier for others to learn from existing questions/answers.


    Best regards,
    Peter 

    Answered

    Does Umotion have constraints like Aim (joint aiming at other joint) and locking individual rotation Axis?

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

    i have a question regarding uMotion, i have some characters that require some joints to only rotate in one axis and another joint to always aim at another joint. arms such as these dont work properly without some axis restrictions

    Image 1104

    Answer

    Hi,
    thank you  very much for your support request.

    arms such as these dont work properly without some axis restrictions

    Do you have problems setting up IK in a way that it doesn't rotate parts on the wrong axis?

    You might not have setup IK in a way that it ignores none relevant bones. For the upper arm for example, the IK should only control the bending of the elbow part. Remove any other bones from the IK bone chain (you can do this by selecting the IK handle in config mode).


    Is the purpose of the axis limitations to avoid accidentally rotating parts of your character's body on a wrong axis?

    If that's your intent, just make sure to always use the rotation tool in "local" mode. Rotate only around the axis that are meaningful.

    When using "Euler" rotation mode, you have the option to check the curves view of your body parts in a final step. If the curve of a rotation axis you shouldn't be rotating is not in a straight line, simply reset the values of these axis.

    and another joint to always aim at another joint.

    Can you explain that situation a little further to me? Which body part exactly is that about? This allows me to provide you a tailored workflow/setup proposal.

    Best regards,
    Peter

    Fixed

    Bug in the Clip Settings Window

    Anonymous 2 years ago updated 2 years ago 6

    There is a bug in the Clip Window, it's not drawing correctly on Linux Ubuntu, I can't rename the clip name neither clip on any of the toggle options.

    Image 1101

    Answer

    Fixed in UMotion V1.28p04 (available for download via the asset store). Thanks again for reporting this issue.

    Best regards,
    Peter