root motion on/off


photo

Recommended Posts

We are in the middle of character controller design, we have already 240 basic mocaps ready. We encountered typical problem, stationary (root is on the place) vs moving animation (root is moved by animation). We had lots of discussion on this topic, each has its own + and -. Proper solution is probably to have some hybrid model. I was googling little bit and problem is perfectly descibed here:

 

Typically in game animation, a character's collision capsule (or other shape) is driven through the scene by the controller. Data from this capsule is then used to drive animation. For instance, if the capsule is moving forward, the system then knows to play a running or walking animation on the character to give the appearance that the character is moving under its own power.

However, this type of motion is not always ideal for every situation. In some cases, it makes sense for complex animations to actually drive the collision capsule, and not the other way around. This is where root motion handling becomes critical for your games.

 

+

 

So, what does this mean? Now that the system is taking the root motion of the character's animation into account, it is then able to reapply that same motion to the character's collision capsule. This means that it can still have the exact same motion that the animator intended, but it can also respond properly to in-game collisions and other physics and gameplay events.

 

Without this, we loose lots of added value of motion capture, I typically loose 1 axis of movement, which in some animations does not look natural (various idle animations with hip move in all 3 dimensions, more complex actsions, etc). I would also need to prepare unique motion defition (probably some key frames for bezier curve definition) for every animation with not constant or circular root motion to keep original dynamic of movement. Now we have 240, we will have around 500 animation at the end, at least 2/3 are not linear => not good idea.

 

whole article with detailed description is here:

 

https://docs.unrealengine.com/latest/INT/Engine/Animation/RootMotion/index.html

 

Is there already way how to effectively do this in Unigine (root motion handling => ability continue playing from the end point of the animation)? We probably can do some custom code, but I am afraid of big performance impact with lots of characters in scene (we plan to have 100+ at once). The best would be to support root motion directly in engine (as Unity, UDK, etc... do).

Link to post

Hey, Jirka!

 

I believe that all you need to do is to collect collision shapes of your characters in a list and then just apply latest frame transform from root bone to them. It shouldn't be too slow to do on script side.

Link to post
  • 5 months later...

I had on mind ability to "pin" root bone to defined axes, or let animation move in any direction (if you have "moving animation"). This is for example Unity implemenation:

 

root.png

 

http://docs.unity3d.com/Manual/RootMotion.html

 

This is functionality to cope with problem described in that EU4 manual. So I can take set of various motion captures and directly in engine decide, which animation will be moved by code (I will pin xy axes) or which animation will move itself. It has several advantages:

1) it is far easier to animate into some direction, than on place. Also I can use mocaps with less processing

2) if i restrict animation to some axis (to stay on place), I have to implement "lost information" in code. For walking forward it is easy (and better to drive by code), for animations like in that UE4 example it can be very tricky, literaly it would force me to implement some bezier curve based system to alow animation move back and forward in non linear speed. So in this case is better to have animation which moves itself and also moves colliders.

3) I dont have to do conversion outside of engine (to pin), so it saves lots of time, especially if I need to change something. I can use as it is, i dont have to do axis restriction outside of engine, because I can do it inside of engine if necesary. So it makes whole pipeline one step shorter.

4) It simplifies developement of character controller

 

It would be probably possible to develop such solution by ourselves, but I think this should be in core, everybody who does character animation will need this (I dont know if Unity does it on the fly, or bakes it into animation file. Probably the second, would be faster).

 

I dont know if you undertand my point, usually until you start working with character animation it is not that obvious.

Link to post
  • 1 month later...

Hi Jirka,

 

Sorry for the late reply.

 

I've added this suggestion to our TODO list. Our devs are already did some successfull experiments with this task. I think this feature will be available by the end of this year or at the beginning of the 2016.

 

Thanks!

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to post

Hi Jirka,

 

Sorry for the late reply.

 

I've added this suggestion to our TODO list. Our devs are already did some successfull experiments with this task. I think this feature will be available by the end of this year or at the beginning of the 2016.

 

Thanks!

 

Wow, thanks!

Link to post
  • 3 months later...

Hi Jirka,

 

Sorry for the late reply.

 

I've added this suggestion to our TODO list. Our devs are already did some successfull experiments with this task. I think this feature will be available by the end of this year or at the beginning of the 2016.

 

Thanks!

 

Any progress? Without this feature we are not able to solve some animation issues in effective way.

Link to post
  • 5 months later...

Hi Jirka,

 

Animation system needs to be upgraded (internally in engine sources) to be capable of new features - such as root motion transform. This feature is currently postponed to the next SDK updates. Can't guarantee that it will be available in 2.4 as well.

 

I will surely let you know if I will get more information.

 

Sorry for the inconvenience caused.

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to post

Hi Jirka,

 

Animation system needs to be upgraded (internally in engine sources) to be capable of new features - such as root motion transform. This feature is currently postponed to the next SDK updates. Can't guarantee that it will be available in 2.4 as well.

 

I will surely let you know if I will get more information.

 

Sorry for the inconvenience caused.

 

This is quite limiting, without root motion it is not possible to create modern/realistic/complex character controller. This mean, that we have to implement some "workaround" and then remake it for root motion when it is supported by Unigine internally. Not good news. Anyway thanks for information.

Link to post
  • 1 year later...

Any progress with that? We are now quite limited.

Link to post
16 hours ago, silent said:

Hi Jirka,

Sorry, that feature is currently has low priority. Can it be just scripted on your side?

This is being investigated right now. My concern is performance of such scripted solution.

Link to post
  • 3 years later...

Hello Guys,

@silent Is this feature implemented now in 2.13 ? I don't remember seeing it somewhere in the documentation.

Link to post

Nitroboy,

I'm afraid, no. The amount of work that is hidden under the hood is much bigger than we initially thought, so it's delayed right now.

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to post

2.14 list something new about the animation systems though. What is it then?

Link to post

Hi David,

I think we will update roadmap within 1-2 weeks and add some correction here to reflect the current development and research stage.

Thanks!

How to submit a good bug report
---
FTP server for test scenes and user uploads:

Link to post

Thank you. Please make this a priority. It is lacking.

Link to post