I’ve been trying to make dynamic animations for my UI elements for a while, and currently it seems that there is no way to create blended animations in UMG.
Currently I can only create animation tracks and play those tracks, but can’t find a way to smoothly transition from one animation to other, without waiting for finish or cutting animation while it’s playing.
Take for example dynamic cursor widget that changes it’s shape depending on object that it’s hovering over - with state machine that would just require me to create states with (usually one-keyframe) animations, and then specify transition rules and parameters.
Is there any way to use something like animation blueprint in UMG to utilize animation state machine, instead of just simple tracks?
For those that used Unity, this kind of workflow should be familiar, since there I can use their state machine for almost anything.
I was having trouble finding people with similar issue, so maybe I have wrong approach to this problem? Is there better way to blend animations in UI elements in UE4?
Depends on the UMG and your setup I think.
If yyou have one UMG with all the assets you can just add ALL the items to the track and have a full animation sequence that you can call in from BP.
If you set up the different FadeIn/FadeOut as separate animation tracks you can then play them on a per-element basis via code based on some event you pilot.
for the Hovering size change, you have an On Mouse Over state that you can use in BP to affect or alter the rest - or play a pre-defined animation such as “cursor grow”. an anim where you scale the cursor up.
just a basic example/idea - not sure that’s what you want, but it does work…
Well, I was mostly reffering to ability to blend the animations. Example:
- Cursor hovering over Actor A will have Shape A
- Cursor hovering over Actor B will have Shape B
- Let’s assume there are other shapes in our timeline for other purposes.
- Let’s assume that I want to keep it designer-friendly, so no hardcoding transforms in C++ or blueprints.
If I’m using multiple tracks or even single track, I don’t have a way to start from current transform state of all components and then smoothly blend it into my Shape A animation when needed. I’m assuming that I don’t know what state will happen before player hovers over Actor A. Now - I could create various tracks that blend situations like Shape A -> Shape B, Shape B -> Shape A, but that can result in really long list of tracks to create, depending on how much states are planned. And tweaking one animation would require tweaks in others.
I’m looking for something similar to skeletal mesh animations - specify state and assigned animation (or blend tree), then specify what rules for state switching, and how animations in those states should blend when switching state. So that - no matter what animation was running previously or if it was looping - player will not see sudden cuts to other animations.
Writing that by hand and making it easy to use by my designer, would probably take a long time, so I think I’ll try not to force too much animations into my current project’s UI. Thanks anyway.
Sounds like you may want to make this onto a feature request for the engine.
I personally dont really like the PowerPoint style animations in umg either, but in reality its flat/2d and its intuitive…