I just don't see the "Generate root motion curves" button although I am using 5.0.0f4. This is what is looks like when I click an animation: According to the tuturial (http://unity3d.com/learn/tutorials/modules/beginner/unity-5/root-motion-authoring), it should look like this: Does anybody know what might be the reason why I don't see this button?
1. So you have a animation that translates in world space (walk forward cycle) exported out and in game? 2. Then you selected your prefab in game with the Animator component and checked on the "Apply Root motion" check box? I am just rehashing the steps just in case you forgot one of them. It is possible that this is a bug and should be submitted.
No, its not exported, its an animation made in unity. Then i select the animation clip file, and there should be a "Generate root motion curves" button, but there isn't.
Ok, it might sound strange, but i think i understand why i misunderstood why was there no "Generate root motion curves". It is because all my animation clips, do not have any motions on the ROOT object, aka the object on which the animator component is located. Although i have animations that change position/rotation of the objects, none of them is for the root object. TL;DR To have a "Generate ROOT motion curves" button, the ROOT object must have any motion. It does not count for the child objects (obviously). PS I sometimes amaze myself
@iSinner Thanks. I thought that the "Generate root motion curves" button was to magically generate root motion for an animation that does not have Z-motion at all. Like a person walking in place. But obviously it isn't mean to for this purpose.
@iSinner, you are right, if there is no animation curve on your root node we can't generate the root motion.
Exactly. Which is why i mentioned step 1. You guys don't seem like animators, so I assumed that is what your problem is. You didn't have any animation for Unity to reference from and convert it. You need to animate the root node translating in world in your 3d package then export it out. Unity made the next step easier for us in 5. Instead of getting code support created to get this "working". You just press a button and it works.
Can Unity not estimate the root motion automagically from the feet bones? Ok, I guess that is out-of-scope, but it would simply be amazing. --- It occured so often to me that after having purchased an animation from the asset store, the developer said that root motion was not included and that they wouldn't do it due to the lack of requests for it. Especially when it comes to an asynchronously moving zombie, this is utter nonsensense, but also for all other moving creatures because movement is never 100% synchronously.
No. No engine can do that. since it is the user who needs to tell the engine what he/she wants. The engine isn't going to be able to guess what you want with no information. But this wasn't a problem in the past. Where most engines required you to animate all locomotion animations in place, rather than translating in world space down the Y axis. Which is something you can do in Unity with extra code support. But will be extra work, since most of the animation assets in the store are built for translating in world space in mind. It is nonsense for the animator not have have included the root node animation in his asset package. It takes little effort to animate it and gives your product another purpose in a system that utilizes different methods of translating the character in game. I would suggest keeping an eye out for those kinds of details when purchasing assets though.
As Jself stated most engines in the past required in-place animation creation. Root motion only came about (opinion) for the purpose to support humanoid (read mocap) motions for retargeting.
Mocap can only be used if the rig you are retargeting to is setup to use root motion. Root motion came about to support the ability to retarget mocap animations. This is only my opinion - there is no quotes from official sources I can reference.