MorphCue
Play morph targets (blend shapes) right on your animation tracks: layered morphs with easing, loops, blend modes, presets, modular-character targeting, left/right mirrorβ¦
Highlights
All 17 features βMorphCue lets animators drive morph targets exactly where the animation happens. Right-click a notify track in any animation sequence or montage, add a Morph Cue notify state, drag it over the frames you want and pick morph targets from a searchable list filled from the preview mesh. Blinks, smiles, breathing, muscle bulges, corrective shapes and cloth wrinkles play in sync with the animation without baking curves and without Blueprint or C++ logic.
Each Morph Cue holds any number of layers. A layer plays one morph target from value A to value B, from B to A, from A to B and back, or holds A, with one of ten easing functions or your own Curve Float. Layers can loop several times, play over only part of the notify, and combine with the current shape in Override, Additive or Multiply mode. When the notify ends - or the animation is interrupted - the morphs keep their final value, return to the value they had before, or reset to zero, as you choose.
Morph Cue Presets are data assets of named weights: build facial expressions, visemes or body shapes once and play them from a notify, from Blueprint or from C++. For modular characters, a cue can also drive every skeletal mesh attached to the playing mesh or every mesh on the actor, filtered by component tag. Mirroring swaps left and right tokens such as _L and _R in morph names, and random end values and random delays make repeated blinks and twitches look natural.
The Morph Cue Player component plays the same morphs at runtime without an animation: play, blend to a value, play a full layer, blend in or clear a preset, stop with or without restoring, and get an event when a morph finishes. A Blueprint function library lists morph targets, sets many weights at once, captures and resets weights, evaluates easings and mirrors names.
One notify can run on a whole crowd at the same time: MorphCue keeps a separate state for every mesh playing the animation. On UE 5.8 a cue can follow the animation's own time, so it respects play rate and editor scrubbing. The MorphCue.Debug console variable prints every weight written.
MorphCue is part of the Alpha XP collection for Unreal Engine 4.27 and 5.8. Every feature is exposed to Blueprints and C++, it ships with styled HTML documentation, and it is compiled and verified warning-free against clean UE 4.27 and UE 5.8 projects.
Key features
- Morph Cue notify state for animation sequences, montages and composites
- Any number of morph layers per notify, each with its own values, easing and timing
- Playback A, A to B, B to A and A to B to A
- Ten easing functions (Linear, Sine, Quad, Cubic, Expo, Smooth Step) plus a custom
- Loops and per-layer windows inside the notify
- Blend modes: Override, Additive and Multiply against the starting weight
- End actions: keep final value, restore previous value or reset to zero, also on
- Morph Cue Preset data assets for expressions, visemes and body shapes
- Modular characters: drive attached meshes or every mesh on the actor, with a component
- Random end offset and random delay for natural variation
- Left/right mirroring of morph names with configurable token pairs
- Morph Cue Player component with play, blend, preset, stop and a finished event
- Searchable morph picker in the details panel with free typing and unknown-name
- Animation Time source that follows play rate and scrubbing (UE 5.8)
- Correct on many characters at once (state per mesh)
- Blueprint function library and C++ evaluation helpers
- MorphCue.Debug console variable
Blueprint & C++ API
The API is organised into these entry points:
| Class | Type | Nodes | Use it for |
|---|---|---|---|
| MorphCueLibrary | Function library | 12 | Blueprint helpers for morph targets. |
| MorphCueComponent | Actor component | 11 | Plays morph targets and presets from Blueprint or C++ without an animation: blinks, expressions, damage morphs, breathing. Ticks only while something is playing. |
| MorphCueNotifyState | Anim Notify State | 2 | Plays one or more morph targets over the frames this notify covers on an animation track. |
| MorphCuePreset | Data asset | 2 | A named set of morph target weights (an expression, a viseme, a body shape...). Play it from a Morph Cue notify, the Morph Cue Player component or the library. |
Callable runs when executed Β· Pure no exec pin, returns a value
| Node | Type | Available on | Description |
|---|---|---|---|
| Play Morph(Morph: Name, From: Float, To: Float, Duration: Float, Easing: Morph Cue Easing) | Callable | Component | Plays Morph from From to To over Duration seconds. |
| Blend Morph To(Morph: Name, Target: Float, Duration: Float, Easing: Morph Cue Easing) | Callable | Component | Blends Morph from its current weight to Target over Duration seconds. |
| Play Layer(Layer: Morph Cue Layer, Duration: Float, End Action: Morph Cue End Action) | Callable | Component | Plays a full layer (playback, loops, window, blend mode, variation) over Duration seconds. |
| Play Preset(Preset: Morph Cue Preset, Duration: Float, Weight: Float, Easing: Morph Cue Easing) | Callable | Component | Blends every morph of Preset from its current weight to its preset weight (scaled by Weight). |
| Clear Preset(Preset: Morph Cue Preset, Duration: Float, Easing: Morph Cue Easing) | Callable | Component | Blends every morph of Preset back to zero. |
| Stop Morph(Morph: Name, Restore: Boolean) | Callable | Component | Stops Morph. Restore puts back the weight it had when it started. |
| Stop All(Restore: Boolean) | Callable | Component | Stops everything. Restore puts back the weights the morphs had when they started. |
| Is Morph Playing(Morph: Name) β Boolean | Pure | Component | True while Morph is playing. |
| Get Playing Count() β Integer | Pure | Component | Number of morphs playing. |
| Set Target Mesh(Mesh: Skeletal Mesh Component) | Callable | Component | Sets the mesh to drive at runtime (overrides Target Mesh Reference). |
| Get Target Mesh() β Skeletal Mesh Component | Pure | Component | The mesh being driven. |
| Get Morph Target Names(Mesh: Skeletal Mesh Component) β Array of Name | Pure | Static | Names of every morph target of the mesh asset used by Mesh. |
| Get Morph Target Names From Asset(Mesh Asset: Skeletal Mesh) β Array of Name | Pure | Static | Names of every morph target of a skeletal mesh asset. |
| Set Morph Targets(Mesh: Skeletal Mesh Component, Values: Array of Morph Cue Value, Targets: Morph Cue Mesh Targets, Mesh Tag: Name) | Callable | Static | Sets several morph target weights at once on Mesh and, optionally, its attached or sibling meshes. |
| Apply Preset(Mesh: Skeletal Mesh Component, Preset: Morph Cue Preset, Weight: Float, Targets: Morph Cue Mesh Targets, Mesh Tag: Name) | Callable | Static | Applies a preset instantly, scaled by Weight. |
| Capture Morph Targets(Mesh: Skeletal Mesh Component, Only Non Zero: Boolean) β Array of Morph Cue Value | Callable | Static | Reads the current weight of every morph target of Mesh (only the non-zero ones by default). |
| Reset Morph Targets(Mesh: Skeletal Mesh Component, Targets: Morph Cue Mesh Targets, Mesh Tag: Name) | Callable | Static | Clears every morph target weight on Mesh and, optionally, its attached or sibling meshes. |
| Evaluate Easing(Easing: Morph Cue Easing, Alpha: Float) β Float | Pure | Static | Evaluates an easing function at Alpha (0-1). Custom Curve returns Alpha unchanged here. |
| Evaluate Layer(Layer: Morph Cue Layer, Time: Float, Duration: Float) β Float | Pure | Static | Played value of Layer at Time seconds of a cue lasting Duration seconds. |
| Mirror Morph Name(Morph: Name, Pairs: Array of Morph Cue Mirror Pair) β Name | Pure | Static | Swaps the first matching left/right token in Morph (for example Brow_L to Brow_R). |
| Gather Target Meshes(Mesh: Skeletal Mesh Component, Targets: Morph Cue Mesh Targets, Mesh Tag: Name) β Array of Skeletal Mesh Component | Callable | Static | The meshes a cue started on Mesh would drive. Meshes other than Mesh must carry MeshTag when it is set. |
| To Morph Cue Name(Name: Name) β Morph Cue Name | Pure | Static | Name to Morph Cue Name. |
| To Name(Morph: Morph Cue Name) β Name | Pure | Static | Morph Cue Name to Name. |
| Get Resolved Layers() β Array of Morph Cue Layer | Pure | Anim Notify State | Layers this cue will play: Layers plus the expanded preset, with names mirrored when Mirror is on. |
| Get Active Instance Count() β Integer | Pure | Anim Notify State | Number of meshes currently running this cue. |
| Get Value(Morph: Name, Default: Float) β Float | Pure | Data asset | Weight of Morph in this preset, or Default when the preset does not contain it. |
| Has Morph(Morph: Name) β Boolean | Pure | Data asset | True when this preset contains Morph. |
Events & delegates
Bind these in Blueprint (drag off the object β Bind Event) or with AddDynamic in C++.
| Event | Parameters | When it fires |
|---|---|---|
| On Morph Finished | Morph (Name) | Called when a morph finished playing (not when it was stopped). |
Options & enums
| Enum | Values |
|---|---|
| Playback | A A to B B to A A to B to A |
| Easing | Linear Sine In Sine Out Sine In Out Quad In Quad Out Quad In Out Cubic In Out Expo In Out Smooth Step Custom Curve |
| Blend Mode | Override Additive Multiply |
| End Action | Keep Final Value Restore Previous Value Reset To Zero |
| Time Source | Elapsed Time Animation Time |
| Mesh Targets | This Mesh This Mesh And Attached Meshes All Meshes On Actor |
Compatibility
One ready-made build per engine version is included in the download β copy the one that matches your project.
| Platform | Supported in |
|---|---|
| Windows | Editor & packaged |
| macOS | Editor & packaged |
| Module | Type | Loading phase |
|---|---|---|
| MorphCue | Runtime | Default |
| MorphCueEditor | Editor | Default |
Technical details
| Code modules | MorphCue (Runtime), MorphCueEditor (Editor) |
|---|---|
| Blueprints | 0 Β· C++ classes: 4 |
| Network replicated | No |
| Development platforms | Windows: Yes, Mac: Yes |
| Target build platforms | Win64, Mac |
| Third-party software | No |
| Engine versions | Unreal Engine 4.27 Β· 5.8 β a build for each is included |
| C++ classes | 4 + 4 structs |
| Blueprint nodes | 27 |
| Events | 1 |
| Documentation | Documentation.html (in the download) |
| Download | MorphCue.zip Β· 135 KB |
| Version | v1.0.0 |
What's in the download
| File | What it is |
|---|---|
| MorphCue 4.27.zip | Plugin build for Unreal Engine 4.27 |
| MorphCue 5.8.zip | Plugin build for Unreal Engine 5.8 |
| Documentation.html | Documentation (open in a browser) |
Quick start
- Unzip the download and pick the build that matches your engine (4.27 Β· 5.8).
- Copy the MorphCue folder into your project's Plugins/ folder (create it if needed).
- Open the project, enable MorphCue under Edit βΊ Plugins and restart the editor.
- Right-click in any Blueprint graph and search MorphCue β or include the public headers from C++.
- Package for your target platform (Windows, macOS).
Good to know
Built and verified warning-free for Unreal Engine 4.27 and 5.8. C++ classes: Morph Cue notify state, Morph Cue Preset (data asset), Morph Cue Player component and MorphCue Library. The editor module only adds the morph picker to the details panel. Morph targets are cosmetic and not replicated; notifies run wherever the animation plays. No content assets are included. The modules are enabled for Win64 and Mac; the code is platform-independent engine C++ with no OS-specific calls. Developed and maintained by Alpha XP.
Everything included
- Morph Cue notify state for animation sequences, montages and composites
- Any number of morph layers per notify, each with its own values, easing and timing
- Playback A, A to B, B to A and A to B to A
- Ten easing functions (Linear, Sine, Quad, Cubic, Expo, Smooth Step) plus a customβ¦
- Loops and per-layer windows inside the notify
- Blend modes: Override, Additive and Multiply against the starting weight
- End actions: keep final value, restore previous value or reset to zero, also onβ¦
- Morph Cue Preset data assets for expressions, visemes and body shapes
- Modular characters: drive attached meshes or every mesh on the actor, with a componentβ¦
- Random end offset and random delay for natural variation
- Left/right mirroring of morph names with configurable token pairs
- Morph Cue Player component with play, blend, preset, stop and a finished event
- Searchable morph picker in the details panel with free typing and unknown-nameβ¦
- Animation Time source that follows play rate and scrubbing (UE 5.8)
- Correct on many characters at once (state per mesh)
- Blueprint function library and C++ evaluation helpers
- MorphCue.Debug console variable
Platforms
Requirements
- Unreal Engine 4.27 and 5.8
- Develop on Windows (Win64)
- Blueprints and C++
In the download
Personal
One non-commercial project
- 1 activation seat
- 1 year of updates
- One end product
- Non-commercial use
- Community support
- 14-day refund window
Commercial
Ship paid products
- 5 activation seats
- 1 year of updates
- One paid end product
- Unlimited end users
- Priority support
- Source files
- 14-day refund window
Extended
Resell & white-label
- Unlimited activation seats
- Lifetime updates
- Unlimited end products
- White-label & resell
- 1-hour SLA
- Seat-free team use
- 14-day refund window
One purchase per product, no subscription. Each licence comes with a signed key β 1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended. Paid licences can be refunded within 14 days from your order page.
- v1.0.0Latest
- Unreal Engine 4.27 and 5.8
- Blueprint and C++ API, HTML documentation
Be the first to review MorphCue β reviews come from customers who bought it, so every one is a verified purchase.
Frequently asked
How do I get the files after paying?
Straight after checkout you land on your order page with the download button and your licence key. A receipt is emailed to you, and every order stays in My library.
Which licence do I need?
Personal β One non-commercial project. Commercial β Ship paid products. Extended β Resell & white-label. The Licences tab compares them side by side.
On how many devices can I activate it?
1 seat on Personal, 5 seats on Commercial, unlimited seats on Extended.
How long do I get updates?
Personal: 1 year of updates, Commercial: 1 year of updates, Extended: lifetime updates, counted from your purchase.
Can I get a refund?
Yes β paid licences can be refunded within 14 days, straight from your order page.
Is the download safe?
The file was scanned with ClamAV when it was published. Its SHA-256 checksum is listed under Features β In the download, so you can verify the file you receive.
Do I need an account?
No. Checkout only needs your email. Signing in keeps all your purchases, keys and downloads together in My library.
More like this
AudioLens
Real-time audio analysis: FFT spectrum, onset and beat detection, and a full set of time- and frequency-domain descriptors..
β β β β β No reviews yetTTechHarbour$14.00BlueprintTCP
BlueprintTCP lets you connect to any TCP server and exchange data entirely from Blueprints β no C++ and no networking boilerplate.
β β β β β No reviews yetTTechHarbour$12.99BluetoothLink
Bluetooth Low Energy for Unreal - scan, connect, read, write and subscribe to BLE devices on Android and iOS.
β β β β β No reviews yetTTechHarbour$11.99ClusterLink
SocketCluster realtime client for Unreal - pub/sub channels, auth engine and JSON codec, usable from Blueprints.
β β β β β No reviews yetTTechHarbour$11.99