Jump to content

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 comment

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 comment
  • 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 comment
  • 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 comment

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 comment
  • 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 comment
  • 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 comment

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 comment
  • 1 year later...
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 comment
  • 3 years later...
  • 1 year later...

Согласен с коллегами, сильно не хватает root motion. Может добавите в samples примерный код, или мастер класс проведёте - если его ещё не было?

И можно узнать примерные сроки? Думаю у всех будет более быстрый прогресс, когда появится система. Спасибо.

Link to comment
×
×
  • Create New...