Skip to content

Animation Workbench

Animation Workbench reviews animation coverage across the complete widget hierarchy, including widgets without keys. Its coverage matrix, animation library, and clip comparisons identify missing properties, inconsistent structure, timing differences, orphaned bindings, and end-state issues.

Authors can add standard channels, adopt reviewed comparison structure, copy timing or values, and apply scoped repairs. An optional bridge connects animations to state-machine definitions.

Use Animation Studio for direct keyframe and curve editing. WbpAnimationWorkbench works on normal UWidgetAnimation and MovieScene data and provides the broader review context around those edits.

It does not introduce a new runtime playback format. The workbench reads and organizes the same animation data Unreal already stores for widget animations, then exposes higher-level views that are better suited to UI animation authoring than raw per-animation track lists.

The workbench is one part of the larger UI Foundry authoring loop. Use it to decide whether a Widget Blueprint animation is structurally healthy, use Anim Tools when the clip needs deeper repair or remapping, and use WBP Materials when a material used by the widget needs catalog metadata, preview assets, graph inspection, or compliance review.

In the Unreal Editor UI the tool is labeled Anim Workbench so menu entries and docked tabs stay short enough to read. The module and documentation still use WbpAnimationWorkbench where the C++ module name matters.

Open the module from:

  • the top-level UI Foundry -> Anim Workbench editor menu
  • Content Browser right-click on a Widget Blueprint asset -> Open In Anim Workbench
  • inside an open Widget Blueprint editor as the dockable Anim Workbench tab/panel
  • Widget Blueprint editor toolbar -> Anim Workbench
  • Widget Blueprint editor toolbar -> Validate Animations
  • Widget Blueprint editor toolbar -> Reconcile Current
  • Widget Blueprint editor toolbar -> Normalize Current
  • Widget Blueprint editor toolbar -> Open Matching State Machine
  • embedded workbench toolbar -> smart state-machine bridge actions such as Create State From <Clip> or Open Bound State For <Clip>
  • Widget Blueprint Designer / hierarchy right-click on a widget -> UI Foundry -> Open In Anim Workbench
  • Widget Blueprint Designer / hierarchy right-click on a widget -> UI Foundry -> Focus Selected Subtree In Anim Workbench
  • Widget Blueprint Designer / hierarchy right-click on a widget -> UI Foundry -> Pin Selected Widget In Anim Workbench
  • Widget Blueprint Designer / hierarchy right-click on a widget -> UI Foundry -> Add Standard Channels In Anim Workbench
  • Widget Blueprint Designer / hierarchy right-click on a widget -> UI Foundry -> Validate In Anim Workbench
  • Widget Blueprint Designer / hierarchy right-click on a widget -> UI Foundry -> Reconcile Current Animation In Anim Workbench
  • Widget Blueprint Designer / hierarchy right-click on a widget -> UI Foundry -> Open Matching State Machine

Then either:

  • pick a Widget Blueprint from the asset selector, or
  • keep the workbench open and swap between Widget Blueprints as needed

The Widget Blueprint picker includes both the normal Content Browser browse button and a use-current-selection button, so you can target the selected Widget Blueprint without hunting for it again.

The menu entry is registered under the top-level UI Foundry category in the Level Editor, Widget Blueprint editor, and common asset-editor contexts. Widget Blueprint editor menus are registered per live editor context so actions can route to the embedded panel instead of opening a disconnected global window.

When the workbench is opened from an active Widget Blueprint editor, it now binds to that editor context and stays in sync with the live session:

  • the selected widget in the Designer/hierarchy updates the workbench selection
  • the currently viewed widget animation updates the selected animation in the workbench
  • choosing a widget row in the workbench pushes that selection back to the Widget Blueprint editor
  • choosing an animation in the workbench pushes the viewed animation back to the Widget Blueprint editor
  • the new widget context-menu commands can drive focus, pinning, and standard-channel creation directly against the current editor selection
  • the Widget Blueprint toolbar can now trigger validation, current-animation reconcile/normalize, and matching state-machine navigation without leaving the editor flow
  • Widget Blueprint toolbar and widget-context actions now target the embedded editor panel first when a live Widget Blueprint editor context is available
  • the selected animation now surfaces whether it is already state-bound, and the embedded workbench can create a new state from that clip when there is a single obvious matching definition
  • selected/compare clip binding status is now surfaced directly in the workbench review UI, including warnings when sibling clips disagree on state-machine coverage
  • the workbench now remembers per-asset view state such as view mode, sort mode, filter, selected clip, compare clip, focused subtree, and pinned widgets
  • opening a matching state machine from the workbench focuses the exact matching state in the graph, and opening a matching clip from the state-machine graph jumps back into the owning Widget Blueprint animation context
  • keyboard shortcuts are available for common workbench actions:
  • Ctrl+R refresh
  • Ctrl+V validate
  • Ctrl+E reveal the selected widget in the selected animation
  • Ctrl+B open or create the matching animation state
  • F focus the selected subtree
  • P pin the selected widget

The workbench is no longer limited to a global utility window.

When you are working inside a Widget Blueprint editor, the module also registers a dockable Anim Workbench editor tab. That panel lives inside the normal Widget Blueprint tab system, so it can be docked beside Details, the Designer, or other editor tabs and reopened through the editor’s tab/view workflow.

That embedded panel uses the live FWidgetBlueprintEditor session as its source of truth:

  • it shares the current Widget Blueprint automatically
  • it follows the current widget selection
  • it follows the currently viewed animation
  • toolbar and context-menu commands route into that embedded panel instead of opening a disconnected global tool whenever possible

The standalone Nomad workbench window still exists for project-wide browsing or opening a Widget Blueprint from outside an active editor session.

The workbench now supports three layout modes:

  • Auto
  • Docked
  • Expanded

Auto switches into the compact docked presentation when the panel gets narrow enough to behave like a companion pane beside the normal Widget Blueprint and animation timeline layout.

The docked presentation is intentionally calmer than the older all-at-once dashboard:

  • the command surface collapses into a compact command bar plus More
  • long summary prose is replaced by status chips
  • the old stacked hint and repair banners are merged into a single contextual status strip
  • overview, library, compare, and state-bridge summaries now also surface state-machine health counts, so shared-clip reuse and missing-clip references are visible without opening the issue list first
  • the contextual status strip now carries a direct bridge action too, so when the current clip has state-machine issues you can jump straight to Review State Machine, Create State, or Open Matching State Machines
  • that same status strip now prioritizes repair-heavy states too, so safe-fix situations jump straight into Fix Safe Issues or Fix Safe Issues (All) before falling back to bridge/navigation actions
  • when the selected clip is already healthy, that same status strip now falls through to direct Sequencer handoff actions such as Reveal In Sequencer or Open Sequencer, so the next step can stay inside the live WBP animation flow instead of bouncing through menus
  • the compare summary now carries its own direct action too, so sibling-clip divergence can jump straight into Adopt Compare Structure, Copy Compare Timing, or the relevant bind-state flow without hunting through the command sections
  • validation and coverage notes move into a collapsible inspector instead of permanently consuming the right side of the panel
  • if you have not explicitly focused a subtree, docked mode auto-scopes itself to the currently selected widget subtree from the live Widget Blueprint editor
  • docked mode also nudges the active view toward the most relevant context:
  • no selected clip -> Animation Library
  • selected clip plus compare clip -> Compare Diff
  • selected clip plus selected widget -> Hierarchy
  • selected clip without a specific widget -> Coverage Matrix
  • command visibility is more contextual too:
  • compare-copy and compare-structure actions stay hidden until a compare clip is chosen
  • widget-only navigation actions stay hidden until a widget is selected
  • clip-only actions stay hidden until a clip is selected
  • when a command is disabled instead of hidden, its tooltip explains why, so the panel behaves more like guided workflow than a static button shelf

Expanded keeps the fuller review-and-repair layout for wider standalone or undocked sessions.

For day-to-day WBP authoring, use the embedded Anim Workbench tab as a companion panel rather than a large standalone dashboard:

  1. Open the Widget Blueprint.
  2. Dock Anim Workbench beside Details or below the hierarchy.
  3. Select widgets normally in Designer or the hierarchy.
  4. Let the workbench auto-scope to the selected widget subtree in docked mode.
  5. Use the status strip’s primary action for the next step: reveal, validate, repair, bind, or review state machine wiring.

This keeps the native Designer, animation timeline, and workbench in one loop. Use the standalone window when you want a wider audit view across a Widget Blueprint’s entire animation library.

The workbench now exposes a recommended workflow rail directly in the panel:

  1. Design
  2. Animate
  3. Bind
  4. Review
  5. Ship

This is not just decorative status. The active stage changes based on the current Widget Blueprint, clip selection, binding state, and surfaced issues.

The primary button beside the workflow summary acts as the recommended next step for the current context. For example, it can:

  • guide you to choose a Widget Blueprint
  • analyze existing clips
  • bind the selected clip to a matching animation state
  • fix safe issues when review is the current stage
  • run a final validation pass when the asset is already healthy

That makes the workbench read more like a guided animation workflow and less like a flat toolbox.

The workbench currently exposes four primary views.

If a view surfaces material-related drift or an animated material parameter issue, treat the workbench as the triage point: open the clip or widget context from here, then use Anim Tools for animation-track repair or WBP Materials for material-asset inspection.

This is the default hierarchy review surface.

What it shows:

  • the widget hierarchy in stable Widget Designer order
  • one row for every widget, not just widgets keyed in the currently selected animation
  • status information for whether a widget is keyed in the current animation, keyed elsewhere, or has no tracks
  • issue counts per widget row

This solves the common problem where an animation only shows the tracks that already exist, making it hard to tell what is missing.

The matrix projects the widget tree across every widget animation in the current Widget Blueprint.

It is designed to answer questions like:

  • which widgets are animated anywhere?
  • which widgets are keyed in one animation but missing from another?
  • which widgets only appear in one clip and may have drifted out of sync with related animations?

Each animation gets its own column, and each widget row shows whether that widget has a track in that animation.

The secondary compare picker lets you keep one animation selected as the main target while highlighting coverage gaps against a sibling clip. This is useful for spotting widgets that were animated in one state animation but accidentally omitted from another.

The library is an animation-level summary view.

Each animation entry shows:

  • display name
  • duration
  • keyed widget count
  • total track count
  • orphan warning count
  • property drift count
  • state binding status against matching WbpAnimStateMachineDefinition assets
  • surfaced warning/error totals
  • a short summary sentence

The library row now also makes clip status more scannable:

  • a bound/unbound chip in the animation name column
  • a selected/compare chip when the row matches the active clip pair
  • the existing state-binding column and summary text for the full detail

Selecting an animation in the library also syncs the workbench selection and opens that animation in the Widget Blueprint editor for direct Unreal-native editing.

The compare diff view turns the selected animation plus compare animation pairing into a widget-by-widget property review surface.

Each row shows:

  • the widget
  • the selected animation’s animated property set
  • the compare animation’s animated property set
  • a diff summary showing missing and extra properties

This goes beyond simple coverage gaps and helps spot when one clip animates RenderOpacity and RenderTransform, while the sibling clip only animates one of those properties.

It also now surfaces selected-vs-compare state-machine binding coverage, so a clip pair can be reviewed not only for property drift but also for runtime state wiring drift.

The toolbar provides:

  • view mode selection
  • sort mode selection
  • widget filtering
  • animation selection
  • compare animation selection
  • grouped action sections:
  • Review
  • Repair
  • Author
  • State Machine
  • Navigate

Current sort modes:

  • Hierarchy
  • Alphabetical
  • Keyed First
  • Pinned First
  • Warnings First

Current filters:

  • All Widgets
  • Keyed Anywhere
  • Keyed In Selected Animation
  • Widgets With Issues

These apply across the hierarchy and matrix surfaces so you can quickly focus on problem areas.

The command surface is intentionally grouped by intent instead of exposing one long flat list. This keeps the embedded panel usable when docked into narrower Widget Blueprint layouts while still keeping advanced tools close at hand.

The grouped actions are now context-aware as well:

  • actions that need a selected clip, compare clip, or widget stay out of the way until that context exists
  • repair actions explain when there are no surfaced safe fixes instead of silently doing nothing
  • state-machine actions explain whether the current clip can be bound or whether a matching definition exists
  • animation reveal actions explicitly describe the Sequencer/timeline handoff they perform

The right-hand panel surfaces validation and consistency findings gathered from the current Widget Blueprint.

Current checks include:

  • no widget animations defined
  • animations that have no bound widget tracks
  • orphaned bindings pointing at widgets no longer in the hierarchy
  • supported property tracks that end in values different from widget defaults
  • widgets keyed in other animations but missing from the selected animation
  • widgets that only participate in a single animation across a multi-animation Widget Blueprint
  • widgets keyed in the compare animation but missing from the selected animation

This is intentionally a consistency-oriented validation pass rather than a full Sequencer replacement.

Copy Validation Report copies a plain-text summary of the current widget blueprint, selected animation, compare animation, subtree focus, pinned widgets, and all surfaced issues. That makes it easy to drop a coverage audit into task notes or a review thread.

The workbench also surfaces two lightweight guidance bands above the main split view:

  • an action hint when no Widget Blueprint is selected, no animations exist, no clip is selected, compare mode is still unused, or the selected clip is still unbound
  • a safe repair preview that estimates how many surfaced issues can be auto-repaired by reconcile and normalization

Validation items are now actionable. Clicking an issue in the right-hand list will:

  • select the related animation when the issue is clip-specific
  • select the related widget when the issue is widget-specific
  • reveal the relevant context back in the Widget Blueprint editor when possible

The issue surface is also more explicit now:

  • each issue carries a source chip such as Coverage, Compare, Binding, MovieScene, Drift, or State
  • safe auto-fix candidates are marked directly instead of being implied by prose
  • state-machine issues now also call out clips reused across multiple states and clips referenced by matching definitions that do not exist on the current widget blueprint
  • the validation panel can be filtered to:
  • All Issues
  • Warnings + Errors
  • Safe Fixes
  • copied validation reports now include issue source, safe-fix state, and recommended next steps

The toolbar includes:

  • Reconcile Current Animation
  • Reconcile All Animations
  • Normalize Current Animation
  • Normalize All Animations
  • Fix Safe Issues (Current)
  • Fix Safe Issues (All)
  • Adopt Compare Structure
  • Add Standard Channels
  • Key Current State To End
  • Copy Compare Timing
  • Copy Compare Values
  • Focus Selected Subtree
  • Clear Focus
  • Pin Selected Widget
  • Reveal Selected Widget In Animation
  • Reveal Selected Widget In Designer
  • Create State From <SelectedAnimation> or Open Bound State For <SelectedAnimation> depending on clip binding state

Reconcile Current Animation and Reconcile All Animations now perform real editor-side cleanup on the selected animation(s):

  • remove orphaned widget bindings that no longer map to the current widget hierarchy
  • push MovieScene binding sort order back to widget hierarchy order
  • refresh coverage and validation immediately after the fix-up pass

They still do not rewrite keyed values or create new animation channels automatically.

Normalize Current Animation and Normalize All Animations repair supported end-state drift by pushing restore values to the end of the selected animation(s). The current implementation covers:

  • float property tracks
  • bool property tracks
  • byte property tracks such as visibility-backed channels
  • color property tracks
  • Render Transform 2D transform tracks

This makes it much easier to fix clips that leave opacity, visibility, transform, or color values in a non-baseline state at the end of playback.

Fix Safe Issues (Current) and Fix Safe Issues (All) run the safe automated repair pass by combining:

  • reconcile cleanup for stale bindings and hierarchy-order drift
  • normalization for supported end-state property drift

This gives the workbench a one-click “repair what can be repaired safely” path without inventing new runtime data or rewriting arbitrary unsupported channels.

Adopt Compare Structure uses the compare animation as a reference and clones missing track structure into the selected animation for matching widgets. That gives the workbench a safe way to add missing expected tracks/channels from a sibling clip without replacing existing keys in the target animation.

Add Standard Channels adds the workbench’s baseline UI animation channels to the selected animation for the currently targeted widgets. The current standard set is:

  • RenderOpacity
  • RenderTransform

This gives you a fast way to seed common UI animation tracks without hand-adding them widget by widget in the raw animation timeline.

Key Current State To End stamps the current widget state to the end of the selected animation for supported tracks. This is useful when you want to author a visual end pose in the Widget Blueprint and then commit it back into the clip as restore or finish keys.

Copy Compare Timing copies section timing from the compare animation into matching tracks on the selected animation. Copy Compare Values goes further and replaces matching track data from the compare animation, including cloning missing widget bindings/tracks for the targeted widgets.

Focus Selected Subtree narrows the hierarchy and matrix views to the selected widget and its descendants. Pin Selected Widget marks important rows so they can be surfaced first with the Pinned First sort mode.

Reveal Selected Widget In Animation opens the owning Widget Blueprint editor, switches to the selected clip, reapplies the selected widget back into the editor selection, and pushes focus into the timeline so the handoff feels like one continuous edit path. Reveal Selected Widget In Designer keeps the current clip context but pushes the selected row back into the live Widget Blueprint selection so you can jump directly back to Designer-oriented editing.

The workbench is designed to complement native Unreal tooling, not trap data inside a parallel system.

You can:

  • open the owning Widget Blueprint editor
  • open the currently selected animation in the Widget Blueprint editor
  • open the first matching WbpAnimStateMachineDefinition for the current widget blueprint / selected animation pair
  • open all matching state machine definitions when several authored definitions share the same widget class

That keeps the workbench aligned with standard UWidgetAnimation workflows and makes it safe to adopt incrementally.

The workbench now has an editor-side bridge back into the WBP animation state machine tooling.

When a WbpAnimStateMachineDefinition:

  • declares the current Widget Blueprint class as its Owner Widget Class, and
  • contains a state whose AnimationName matches the workbench’s selected animation

the workbench can open that definition asset directly from its toolbar.

The bridge is now clip-aware instead of navigation-only:

  • if the selected animation is already referenced by a matching state, the workbench opens that bound definition and focuses the matching state in the graph
  • if the selected animation is not referenced yet and there is exactly one matching definition for the current Widget Blueprint class, the workbench can create a new state directly from the selected clip
  • if several definitions match the same widget class, the workbench stays conservative and opens the candidates instead of guessing which asset to mutate

This gives you a practical clip-to-state handoff:

  • pick a widget animation clip in the workbench
  • review coverage, drift, and compare data
  • jump straight to the matching state machine definition to tune runtime state behavior

The bridge is also less one-sided now:

  • opening a matching clip from the state-machine graph returns to the owning Widget Blueprint animation context
  • when that happens, the workbench now surfaces a temporary clip/state focus cue in its chips, bridge summary, status strip, hierarchy rows, coverage cells, compare diff rows, and animation-library summaries so the currently opened clip reads as coming from a specific state instead of just silently changing selection
  • that bridge focus also works in the other direction now, so the state graph can visually elevate the bridged state node itself instead of only echoing the relationship in header text
  • the state-machine graph header now surfaces compact definition-health and selected-state status cues, so bound-clip health is visible even before you jump back out to the workbench

It is intentionally asset-based rather than inventing a new binding format, so the bridge works with the current authored data model instead of requiring migration.

The workbench is intentionally:

  • hierarchy-aware
  • consistency-focused
  • validation-heavy
  • optimized for Widget Blueprint animation workflows

It still uses Unreal’s existing widget animation data underneath, so runtime playback and serialized animation content remain standard.

The implemented module focuses on:

  • hierarchy-first coverage
  • cross-animation visibility
  • stable sorting
  • animation-library overview
  • compare-diff surface for widget/property participation
  • validation surfacing
  • property drift detection for supported track types
  • one-click end-state normalization for supported track types
  • one-click safe repair passes that combine reconcile and normalization
  • compare-driven adoption of missing track structure
  • standard channel seeding for common widget animation properties
  • current-state stamping to animation end for supported track types
  • compare-driven timing/value copy tools for targeted widgets
  • direct handoff to native Widget Blueprint animation editing
  • embedded dockable workbench panel inside the Widget Blueprint editor
  • direct widget-context-menu actions from inside the Widget Blueprint editor
  • state-machine-aware navigation based on Owner Widget Class plus selected AnimationName

Use Animation Studio for direct key editing and Anim Tools for targeted diagnostics and cleanup. See In development for the additions currently being implemented and validated.