Answered

Retarget Animation

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

Hello, i have community version, when i m create a clip, put it on animator, all work perfect, then use the same anmation on other humanoid character, it didnt working , both character have humanoid rig, but different avatars, can i retarget animation on another humanoid character?

Answer

Hi,
thank you very much for your support request.

If your UMotion project is of type humanoid and you export your animation to *.anim, your animation is a valid humanoid animation that should re-target in a correct way. (Hint for UMotion Pro: If you export to *.fbx, make sure to configure the *.fbx as humanoid in the Unity import settings.)

If re-targeting is not working correctly, than this is most likely an issue of the humanoid avatar setup of the characters. Check if both avatars are setup correctly (all bones in the avatar editor are green and the character is in T-Pose).


When you select the exported *.anim file (in the Unity Project Window) use the animation preview window in the Inspector to see if the animation previews correctly on the Unity default humanoid character. If it does, than the animation is correct (indicating that it's a setup issue of the second character). If it doesn't preview correctly, check the avatar setup of the character the animation has been created for and once the setup is corrected, re-export the animation from UMotion.

If all of this doesn't help, please describe in more detail how the re-targeting errors are looking like (maybe provide some screenshots or a video).

Best regards,
Peter

Answered

Can not change Weapon parent - option is grayed out.

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

I can't seem to assign any parents to a transform with a Child Of constraint. Here's my rig:

Image 56

Here's the configuration:

Image 57

Image 58

And here is the result:

Image 60

No matter what I do, I can't seem to select any transform as a parent and I can't find anything in the manual on this. What am I doing wrong?

Answer

Hi,
thank you very much for your support request.

Changing the parent of a child-Of constraint is not supported within an additive layer. Please switch back to the Base Layer and change the parenting there.

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

Best regards,
Peter

Answered

Any tips for reversing a clip

Robert 5 years ago updated 5 years ago 3

Hi, I have a clip that's used to transition a humanoid character from an idle state into an action and I'm looking for a convenient way to reverse the clip so that I can also use the clip to transition back to the idle state. I have a number of similar kinds of animations which I want to do the same with.


Currently Unity doesn't have a way to play clips in reverse via Timelines (for example ref: https://forum.unity.com/threads/reverse-the-timeline-animation.673156/) and I also can't find a feature in UMotion Pro to do this.


I know that I can do this in Blender and so I was hoping to export an .fbx, import into Blender and then re-export. The problem with this seems to be though that the .fbx doesn't import with an rig/armature, it just seems like a collection of animated Empty objects for each bone in the rig. Although I can mirror the animation in Blender it doesn't seem possible to save the result in a way that I could re-import back into Unity / UMotion Pro.


It would be great to either get some help being able to export fbx files that can be modified for re-import or maybe some trick for being able to reverse an animation within UMotion Pro somehow?


Thanks for any help.

Answer

Hi,
thank you very much for your support request.

To reverse an animation in UMotion there are two ways:

  1. Select all keys in the Dopesheet (CTRL + A) and click on Edit --> Reverse.
  2. The blue bar that appears next to the current selected keys in the Dopesheet window can not only be used to scale the animation, but also to reverse it (if you drag the blue bar pass the opposite blue bar you apply a negative scaling --> reflecting).

To export your animation to *.fbx with your character's mesh, you need to use the "Update Existing File" write mode:


That way you can export the animation to the *.fbx of your character (or a duplication of it). For more information, click on the "?" button in the UI. Exporting in write mode "Export As New File" is always going to just include the "naked" armature.

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

Best regards,
Peter

Not a bug

Pose Editor is disabled

LushkinR 5 years ago updated 5 years ago 2

Hello, i have some issues with Community version.
I am unable to both of Pose and Clip editor which seems appearing as disabled : 

Image 54

I am unable to drag&drop any of GameObjects to (or select from) Pose editor.

I have updated to las version of Unity => 2019.2.5f1 but I firstly started on 2019.2.3f1

Answer

Hi,

thank you very much for your support request.

In order to being able to drag a character to the Pose Editor, a UMotion project file needs to be opened first. You can either create a new UMotion project or load an existing one. You can do this via the "File" menu in the Clip Editor.

Check out the quick start tutorial for further information:

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

Best regards,
Peter

Answered

Animate by blending between keyframes

iv2b 5 years ago updated 4 years ago 5

Hi, i've been trying to mimic overgrowth's approach to animations in unity (you can find the explanation here) and i was wondering if uMotion could help me in achieving that.

In short what this method involves is having very few keyframes and interpolating between them using curves, which is perfect for prototyping. For example a walk loop can be done with only 2 frames.

At first i got this done by splitting keyframes into animations (thus animations with only 1 frame), putting them in a blend tree and switching between them using a script. This however has a few issues: the mecanim graph becomes exceedingly complex over time, i need a script to handle the animations and animation speed is ignored (as the script sets in which point of the animation i'm at every frame).

Using transitions isn't a good solution either since it only provides linear interpolation.

So the only solutions i'm left with are baking keyframes into an animation and dealing with the playables API.

The former method would be handier as it'd allow for quicker development by letting the animator see the changes very quickly when making changes, plus having the final output be contained in an animation file means it's possible to make it work with mecanim as well.

The issue is that each property has its own curve, both in uMotion and in unity's own animator window, meaning that in order to do an "ease in" curve (as an example) i'd need to change the right tangent of every property for the specified node, which for a humanoid character can easily mean changing 50+ curves, while more complex curves would be essentially impossible.

As for using playables, clips do support ease in and ease out curves which can be used alongside single frame animations to get the desired result, but i'm still clueless as to how that would work when putting everything together (such as using them in blend trees for example) and i've yet to see examples of characters controlled via playables that don't involve janky scripts.

The ideal solution would be to have a single interpolation curve within uMotion itself. In a new or imported animation it'd just be a line going from 0 (start of the animation) to 1(end of the animation). It might be better/worse to have a curve for each keyframe.

Or alternatively a "speed" curve that in a new or imported animation would sit at a value of 1, allowing for a very similar effect but in a way that is probably easier to execute (as it'd be a matter of changing how long each frame lasts based on the curve).

In both these cases it'd be possible to quickly create more natural animations (for example making a decent looking jump animation becomes trivial with this approach) while possibly leading to a fully finished animation (overgrowth's character animator uses less than 20 keyframes!) just by refining it.

Is this already possible with uMotion in some way?

If not, would you consider adding this feature? And do you know how i could tackle this animation approach (either through playables or with other software that has the feature i'm looking for)?

Thank you in advance! :)

Answer

Hi,

thank you very much for your support request.

Personally, I would go for a custom script based solution. You could use ScriptableObjects to store structs with the single key frame poses (use one quaternion per bone/transform). Another ScriptableObject could define the blending behavior using a simple AnimationCurve. And then a simple script that applied the poses to the character (iterate through the transforms and apply the blended quaternions). I think that's also the way the overgrowth developer used (if I remember correctly he used his own engine).

You can convert existing *.anim files to your custom ScriptableObject's by getting the animation keys of the *.anim with the appropriate API method: https://docs.unity3d.com/ScriptReference/AnimationUtility.GetCurveBindings.html

If you want to use this to animate a lot of characters at the same time, use the job system / ECS to max out performance.

Best regards,
Peter

Answered

Chaining two animations with root motion

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

I am trying to chain two animations together. In the first the character turns 90 degrees and in the second he walks forward.When I add the second animation onto the first I use an additive layer to rotate the character and position him when the first animation stopped.It should work but the character instead of walking in the new forward direction continues to the side.

It looks like the root motion position is not a local as indicated but rather is the global position.

In fact it is the same problem if I try to rotate a single animation, for example a walk cycle at a 45 degree angle rather than forward.

How can I solve this?Thanks

Answer

Hi,
thank you very much for your support request.

The problem that you have here, is that the local rotation doesn't affect the local position of a transform in Unity (due to the order in which they are applied). So when you adjust the hips rotation, it will not affect the hips local position (which drives the root motion). What you would need in order to rotate the root motion of your character is to rotate a parent transform of the hips, but this is not directly supported for humanoid characters within UMotion (as hips don't have a humanoid parent bone).

To offset root motion of humanoid characters, one way is to use the Inspector shown when the *.anim file is selected (see Root Transform Rotation Offset). Add an offset of 90° before you import it into your UMotion project to get the desired effect:

Another way would be that you (temporary) switch to generic. Duplicate your character and change it's rig to generic. Then create a new UMotion project of type generic and import your previous UMotion project of type humanoid. Then you can add a rotation offset to the hips parent transform (using an additive layer) to offset the root motion. Then export the animation to *.FBX (I recommend saving the animation into your humanoid character's *.FBX file, this ensures that the humanoid avatar setup is correct).

For putting several animations in sequence, there are specific animation sequencing programs made for that exact purpose. In the case of Unity it's called "Unity Timeline". This tool allows you to place sever animations after each other, loop animations and blend from one animation to the other. This is more flexible and consumes less memory then creating long sequences as animation clips (as looping within an animation clip would mean that animation keys are duplicated). UMotion Pro has very good support for Unity Timeline.

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

Best regards,
Peter

Answered

On recording runtime animations and blend trees

zacphillipshemming 5 years ago updated by Peter - Soxware Developer 5 years ago 6

Hi Soxware,

We love the asset and have a quick question recording and baking animations. We are trying to solve a problem with melee combat animations. The animations are "in-place" and the character swings his weapon whilst standing still. As we wanted to be able to move whilst attacking/blocking we chose to use layers and layer upper body of the melee swings over the walking locomotion blend tree. This obviously produces incorrect results as the hips are rotated differently when the character is walking compared to the original "in-place" animtion. To solve the hip bone being in the wrong rotation, we have a second animator where we play the original "in-place" animation and set the layered animators hip bone to be the same as this second animator's (in lateUpdate). However we would prefer not to need two animators per character. Can we use the asset to record the "new" position of the hips for a melee swing animation and bake it in?.I hope I explained this well enough.

Thanks

Zac

Answer

Hi Zac,

thank you very much for your support request.

UMotion supports animation layers (similar to the animation layers of an animator component, but baked into the animation once exported). If you import two animations, you can e.g. copy the hips rotation of one animation and paste it into an override animation layer of the second animation (thus overriding the hips). You can also use the additive animation layer to add a fixed rotation offset to the hips.


In this video tutorial I'm using animation layers in practical use-cases: 

You can also check out the manual (click on the black info button in the animation layers window) for further information.


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

Best regards,
Peter

Answered

Two handed animations for gun

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

Could you give an overview of the workflow for creating a two handed weapon animation where the second hand should be parented to the weapon? I have tried simply parenting the second hand but as soon as I key the parent, the hand jumps out of position.

Answer

Hi,
thank you very much for your support request.

If you create this animation only for a single character (and don't want to share the animation with other characters), I recommend using a "generic" rig setup instead of "humanoid". Animations of type generic have higher quality but can't be shared with other characters (except if they have precisely the same skeleton). More information about humanoid: https://blogs.unity3d.com/2014/05/26/mecanim-humanoids/

If you want to use humanoid, be aware that there might be some small offsets/differences when the animation is played in game due to the lossy nature of the animation re-targeting of the humanoid animation system (probably not noticeable for the player due to camera distance).

  1. Anyway, before you start with UMotion, make the gun a child of the right hand.
  2. Create a new UMotion project and drag the character to the Pose Editor.
  3. Switch into Config Mode and run the IK Setup wizard.
  4. Stay in Config Mode and select the IK handle of the left hand.
  5. Open the "Constraints" tab and disable "IK Pinning Mode" in the "Child-Of Constraint".
  6. Switch back into Pose Mode.
  7. Bring the left hand into the pose where it correctly grabs the weapon.
  8. When you have the left hand's IK handle selected, you can now set the axe as parent (see "Channels"). Key everything.
  9. Set "none" as parent when you want to switch into one handed mode.

I recommend watching the Child-Of video tutorial before using it. There are some common pitfalls you should be aware of.

Please let me know if you have any further questions.

Best regards,
Peter

Answered

Having trouble "grabbing" bones in pose editor

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

Hello,

Having an annoying issue. Creating animations with a model in UMotion usually works well, but lately I find after several bone manipulations, I can no longer "Grab" or select the bones by clicking them like usual. I use stick mode, but switching does not fix the issue.

At first I figured it might have something to do with the focus of the camera, zooming in with the mouse wheel or something like that but compensations for this did not fix the issue.

My current fix is not one I can work with -- Im currently exiting unity and restarting it in order to be able to grab the bones again. This usually last me about 25 or so clicks before it cant find the bones again. I tried focusing on a bone ( I can select them in the clip editor, but that's no way to live ) and hitting the "Focus camera" option in the pose editor but it does nothing.

How do I get it so I can consistently click the bones and grab them?
( Note I already made some longer animations with the same model but it just randomly started happening )

Answer
Anonymous 5 years ago

Ok so I believe I've isolated the asset in question. Following the steps you provided, I got to the point where clicks stopped registering and started stripping the assets out and testing to see if the issue persist. I finally got to an asset called "Ultimate Billboard" a cheap billboard solution. After deleting it ( Link here https://assetstore.unity.com/packages/vfx/shaders/ultimate-billboard-multipurpose-billboard-fog-sprite-shader-111709 ) the latest version 1.0

My version of Unity is 2019.1.11f1

Anyway after deleting it Umotion worked normally. Weird because I hadn't used the billboards yet, I had just planned to and had the asset sitting there up until this point having made a few animations. Anyway, glad that's settled, thanks for the support!

Answered

Required human bone "Hips" not found

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

No work, F***.. If you do not support humanoid so wrote at least... When you try to add a humanoid object.

Image 49

Answer

Thanks for sending me the files. It works perfectly fine here, when the character is correctly configured as humanoid:

Try to import your character again into Unity, select the man.fbx and set Animation type to "Humanoid" then click on apply. This ensures that your character is configured correctly. Then drag&drop man.fbx into your scene and apply it to the UMotion Pose Editor.

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

Best regards,
Peter