Hi,
when moving a character via the transform track the velocity for the character movement component is always 0. is there a way to bake this out that we’re missing?
Hi,
when moving a character via the transform track the velocity for the character movement component is always 0. is there a way to bake this out that we’re missing?
Steps to Reproduce
Hey there, the Velocity property of the character movement component (CMC) is intended to drive the location, so not the other way around where Velocity is derived from actor location changes.
I understand you want to derive the velocity value, is this to feed into animation systems (anim bp, motion matching)? If so, I can ask around how we deal with characters moved with Sequencer in our projects.
Exactly, that velocity is often used to drive things like RVO avoidance and animation. Also it is used to return it here (APawn::GetVelocity). So it seems pretty risky to not have it get updated from the transform tracks as a lot of systems will get 0 and assume the character is not moving.. Additionally, if you were to get the capsule component’s component velocity it is also 0. I was hoping we were just missing a setting somewhere for the transform track to update the data. I’d like to avoid hacking in a check in the anim instance based on previous frames for lots of reasons, like the char move comp handling moving bases.
You mention RVO avoidance - are you moving some characters through a Level Sequence while other AI controlled characters need to move around them: so mixing characters with predetermined trajectories and AI controlled ones?
“Additionally, if you were to get the capsule component’s component velocity it is also 0.”
This is expected, you can regard animating a character’s transform via a Level Sequence as teleporting over a very small distance each tick.
I’ll ask around internally about recommendations to make animation-driven location be compatible with RVO and animation.
Thanks. Part of this is just managing the early block ins where we want to move people and would be nice to be able to drive the anim graph based on it.
With the extract room motion to transform track it would be nice to have an option on the transform track to be able to control whether it should be treated as teleport or a “root motion source” as in a few cases we really are just trying to move the character via the track. Collision and other stuff blocking the movement could be desired in specific cases rather than just teleporting through it.
Please let us know what your teams typically do or if they are using contextual anim scenes or other systems instead.
“Part of this is just managing the early block ins where we want to move people”
Got it.
I asked around in our animation, sequencer and Fortnite teams. We don’t have any systems in place to automate converting Sequencer transform tracks to character velocity. We either animate walking characters as non-playable actors (non-pawns) or use AIController pathing like in LEGO Fortnite Odyssey NPCs running towards you before triggering dialogue but that’s a simple scenario.
Here’s some more of our thoughts:
Thanks! We’ll try some of those suggestions and see which works best for us.
Happy to help with gathering those thoughts from the team! I’ll close this case though if you have followup questions after trying things out, feel free to respond here or post a new question and link to this.