Core Concepts & Architecture
Texturge’s core philosophy is to treat every glyph in text as an independently animatable entity. By controlling each character’s transform (position, scale, rotation, shear), color, opacity, shadow, and letter spacing on a per-frame basis at runtime, it achieves everything from simple typewriter reveals to complex per-character animations.
Module Structure
Texturge consists of two modules:
| Module | Type | Responsibility |
|---|---|---|
Texturge | Runtime | Animation core, rich text parsing, Slate widgets, localization, sound effects |
TexturgeEditor | Editor | Animation blueprint editor, designer viewport, Sequencer integration, compiler |
Core Data Flow
Texturge’s animation pipeline follows a Blueprint → Instance → Animator three-stage flow:
┌─────────────────────────────────────────────────────────────────────┐
│ Editor (Edit Time) │
│ │
│ UTextAnimationBlueprint ──compile──▶ UTextAnimationBlueprintGeneratedClass │
│ (track config + keyframes) (compiled GeneratedClass) │
│ │
│ UTextAnimation ──Sequencer──▶ FloatChannel keyframe curves │
│ (MovieScene sequence asset) │
└─────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────┐
│ Runtime │
│ │
│ UTextAnimInstance ──CompileFromAsset()──▶ CompiledTrackData │
│ (compiled from blueprint) (per-track per-frame arrays) │
│ │ │
│ ▼ │
│ UTextAnimator ──TickAnimation()──▶ EvaluateTime() │
│ (pipeline engine) (realtime sample & blend tracks) │
│ │ │
│ ▼ │
│ FAnimationFrameData[] ──OnPaint──▶ FTextRun / SAnimatedTextBlock │
│ (per-char frame cache) (Slate per-glyph rendering) │
└─────────────────────────────────────────────────────────────────────┘
Two Usage Paths
Texturge provides two widgets for different use cases:
| Path | Widget | Use Case |
|---|---|---|
| Plain Text Path | UAnimatedTextBlock | Single animation effect for entire text. Directly assigns a TextAnimationBlueprint asset. |
| Rich Text Path | UAnimatedRichTextBlock | Multiple animation blends via inline tags. Uses TextAnimationDataAsset for tag-to-animation mappings. |
Both paths share the same underlying pipeline (UTextAnimator → UTextAnimInstance), differing only in input:
- Plain Text Path: One
UTextAnimationBlueprint→ oneUTextAnimInstance. - Rich Text Path:
FTagParser→FRenderTreeBuilder→ oneUTextAnimInstanceper animation tag.
Key Asset Types
| Asset | Base Class | Role |
|---|---|---|
UTextAnimationBlueprint | UBlueprint | Animation blueprint for configuring tracks and keyframes (analogous to UWidgetBlueprint) |
UTextAnimation | UMovieSceneSequence | Text animation sequence storing MovieScene timeline data |
UTextAnimationDataAsset | UDataAsset | Rich text animation data asset defining tag→blueprint mappings |
UTextAnimInstance | UObject | Animation instance that compiles blueprint assets and evaluates frame data at runtime |
UTextAnimator | UObject | Animator — typewriter animation pipeline engine driving character reveal and frame generation |
System Requirements
- Engine Version: Unreal Engine 5.7+
- Platforms: Windows (Win64), macOS, Linux
- Dependencies: CommonUI (optional integration)