Skip to content

Use 3D Modules

Use normal Text Studio effects for per-frame reveal, color, transparency, material channels, and glyph motion. Use Placement for baselines. Add a 3D Module only when reusable work must participate around mesh generation or glyph-object lifecycle. This boundary keeps common animation cheap, keeps geometry decisions inspectable, and makes cache compatibility understandable.

Read the 3D Modules inspector

The 3D Modules foldout shows cards in effective execution order. Each card reports its shared asset identity, display name, priority, roles, pipeline stages, and outgoing-change participation. Open Module edits the shared asset. Make Unique creates a private reusable copy before experimentation. Remove detaches the module from this host.

Create Module opens one catalog for all built-in module types. Attach Existing references a module already used elsewhere. Module Inputs are assigned separately because the same module asset can consume different host values. Relevant changes request a live rebuild, so the inspector and scene remain synchronized without a manual refresh loop.

Text Studio 3D Modules inspector showing ordered module cards, shared assets, execution roles, stages, and host inputs.

Module cards expose effective order, stages, shared identity, outgoing participation, creation, and host inputs.

Execution order, roles, and stages

A module declares the narrowest truthful role and stage. Priority resolves intentional ordering among compatible work. Pre-geometry work changes the input to topology generation. Post-geometry work changes or transforms generated geometry. Lifecycle responders observe named text or glyph events. Outgoing modules participate when old glyphs overlap a changed text result.

Only one module may drive outgoing glyph motion for a host because two motion owners would fight over the same retained glyph. Any number of spawners and other lifecycle responders may observe the same text change. The inspector reports conflicts before the result becomes ambiguous.

Layout Transform

Layout Transform applies a curve-weighted position, rotation, and scale offset after base placement and before generated glyph geometry is presented. Choose Per Glyph for a repeated transformation across the line or Whole Text for one shared transform. An optional Float Module Input can multiply influence without modifying the module asset.

Use it for reusable secondary layout art direction, such as lifting the center of a title, rotating a word family, or scaling a whole sign after its authored baseline. Keep primary line, arc, spline, and spatial-form placement in Text Studio Placement so the source layout remains easy to reason about.

Deformer Stack

A Deformer Stack applies ordered, topology-preserving deformation. Built-in operations include Bend, Arc, Shear, Pinch, Flare, Spherize, Cylindrical Wrap, Wave, Noise, and Twist. Each operation can work in Glyph, Word, Line, Text, Object, or World space.

Automatic bounds make a reusable effect adapt to the current text. Custom bounds give deliberate art-direction control. Falloff limits the deformation within those bounds. Order matters: a bend followed by a twist does not produce the same geometry as a twist followed by a bend, so inspect the stack from top to bottom and isolate one operation when diagnosing a shape.

Glyph Prefab Spawner

Glyph Prefab Spawner maintains at most one pooled prefab instance per rendered glyph, not one per geometry layer. It can respond to Topology Built, Reveal Started, Reveal Completed, Hide Started, Hide Completed, and Outgoing Handoff. Choose the semantic glyph pose or a named socket, then choose Trigger Pose for a one-time spawn pose or Follow Glyph for an attachment that continues to track.

Delay, lifetime, parent, position offset, rotation, and scale shape the spawned response. An optional Boolean Module Input can enable or suppress the spawner per host. The hard limit is 256 instances per module and host; lowering the authored maximum trims retained instances. Use short lifetimes and pooled prefabs for spark, accent, socket, and handoff VFX.

Outgoing Glyph Motion

Outgoing Glyph Motion applies only during Overlap Handoff. It retains glyphs displaced by a live text change while the new result arrives. Batched mode keeps the transition lightweight. Rigidbody mode creates individual physics behavior and exposes mass and Physics Material in addition to gravity, initial velocity, scatter, spin, drag, lifetime, and shrink.

A host supports at most eight concurrent outgoing changes and a hard total of 512 outgoing glyphs. The serialized default is 256. These bounds prevent a rapidly changing score, timer, or counter from creating unbounded retained geometry. Choose a shorter lifetime or batched motion before raising the authored limit.

Module Inputs

Module Inputs are named, host-owned values consumed by shared module assets. Names are case-insensitive and types are exact: Float, Integer, Boolean, String, Color, Vector, Curve, Gradient, and Object. A Layout Transform reads a Float influence. A Glyph Prefab Spawner reads a Boolean enabled value. A type mismatch is reported instead of silently converting a value.

Use inputs for meaningful per-host variation, such as strength, enabled state, color, or an object reference. Do not mirror every module field into inputs. The asset should still represent a coherent reusable behavior when no input holder is assigned.

Caching and Prepared only

Topology-preserving post-geometry modules can often reuse warmed source geometry and apply their result afterward. Pre-geometry modules and topology-changing post-geometry modules change cache identity or the reusable result and may block Prepared only. The module card and Build Readiness explain that impact. Freeze a finished object, prepare an exact compatible variant, or use Generate if missing according to the real runtime workload.

Custom modules must declare truthful stages, roles, required channels, geometry impact, bounds behavior, threading support, and cache impact. Shared ScriptableObject assets keep mutable per-host state on a host-owned runtime object. Register semantic material regions only when downstream effects and diagnostics can address them consistently.