We’ve been trying to use Sequencer in a non-standard way, and we’re running into some issues. At a high level, rather than animating the position of the character, we want to animate a target and then use that target’s location to steer the character by other means. We’ve tried several approaches, and run into enough problems that we’re wondering what your recommended method would be.
- We’ve tried a UMovieScenePropertyTrack for a transform property, but this is not very usable for editing. There is no gizmo in the level editor to manipulate keyframes, and it does not draw the trajectory. Is this something that has been addressed in 5.6, or is it on the roadmap?
- We’ve tried adding a subclass of UMovieScene3DTransformTrack and calling SetPropertyNameAndPath in the constructor to point at a a new FTransform property on a new component. This is obviously not intended, but it sort of works. This draws the trajectory in the viewport when it is selected, which is nice. However, it does not animate anything visible when scrubbing, and there is no gizmo in the editor.
- Both the custom track and the property track have the problem that the transform is always relative if the property is on a component. Is there a way to specify that the transform should not be relative to the owning character? In our case, we would like it to be relative to the sequence like the actor’s transform.
- If we wanted to add our own gizmo for these tracks, how would we do that? The TrackEditors in MovieSceneTools are not marked for DLL export, and I don’t see any hooks. Is it even possible to have multiple subclasses of FKeyframeTrackEditor that operate on the same track type?
Hello again! 
For this sort of use-case, I would honestly first look into making a custom actor/component type like “SteeringWaypointActor” or something. Basically, an actor with a transform and maybe some steering parameters (e.g. how fast to reach this waypoint, how much to ease-out when reaching it, maybe even a next waypoint to continue towards, or maybe that actor can actually have more than one waypoint, like a spline or something).
This gives you potentially more bang for you buck:
- You don’t need to mess around with custom Sequencer tracks. You add the actor in the Sequence just like any actor, and you can animate it or place it as needed for a given cinematic. You can make it a Spawnable if you only want it to live as long as the cinematic.
- You can also steer your characters towards a given waypoint without Sequencer, such as some Blueprint-based mission scripting or whatever.
Would that be a viable solution for you?
Yeah, that’s the solution I’m pursuing, actually. I’m adding a MoveTarget actor, animating its position in Sequencer, and using the current position as a move target. I do need the position animated in Sequencer because we’re using this in a cinematic pipeline, so we need the character to be in roughly the right spot at the right time relative to everything else that’s happening. It should work out. It definitely saves a lot of effort with custom track work. But I had been hoping to have something directly attached to the actor that’s moving, like a transform property on a custom component. This would make the association clearer in the UI, and it would be much easier to connect it in the runtime. I’m worried that the Sequencer UI will get confusing when there are multiple cinematic actors and multiple move targets. Hopefully all that can be addressed with less effort than a custom track type.
Thanks!
In the longer term, I am still concerned that we will need some custom track work. In the current setup, a lot of classes in MovieSceneTracks are not marked for DLL export, and there does not appear to be a mechanism for hooking into them. Is it possible to have more than one track editor on a single track type? I’m wondering how I would add functionality to existing tracks without just copy-pasting the code and making a new track type. Is there anything in the roadmap that would address this?
> But I had been hoping to have something directly attached to the actor that’s moving, like a transform property on a custom component. This would make the association clearer in the UI, and it would be much easier to connect it in the runtime. I’m worried that the Sequencer UI will get confusing when there are multiple cinematic actors and multiple move targets. Hopefully all that can be addressed with less effort than a custom track type.
You could indeed have a MoveTarget component on the character itself, instead of using a separate actor… although of course that may become a problem if you don’t have a 1:1 match between move targets and characters. Also, don’t forget you can use APIs like component visualizers and other editor gizmoes to make your MoveTarget component look unique, with cool UX features for your users.
> I’m wondering how I would add functionality to existing tracks without just copy-pasting the code and making a new track type. Is there anything in the roadmap that would address this?
We don’t have anything on the roadmap to address anything like this, but we would need to figure out exactly what the use-cases are first. I wonder if you’re maybe mixing up the UX of animating your actor/component properties with the UX of working with your actor/component properties. Sequencer isn’t meant to have custom UX for animating a property of type XYZ on actor class A vs actor class B. Keyframing and animating a Transform property or a Float property or whatever is meant to have the exact same UX and underlying code regardless of what that property is and what object class it lives on… just like, say, a Blueprint node that sets a property of type Transform or Float is always going to look the same (a Transform or Float pin) regardless of the situation. This may actually be a good exercise: if your users could setup MoveTargets outside of Sequencer, using Blueprint or whatever, what would it look like?