Nodes/Link Comfy Nodes/HybridMaMoMask Generate
ComfyUI Node

HybridMaMoMask Generate

Type 'a person walks forward and turns around', get an actual 3D skeleton doing it

By Mister-Link·Created 10 months ago·Updated 6 days ago· 0
HybridMaMoMask Generate
  • model
  • motion
textA person walks forward and turns around.
seed42
duration_seconds0.0
timesteps18
cond_scale4.0
res_cond_scale5.0
temperature1.0
topk_filter_thres0.90
gsamplefalse

This is the node you actually came for. Give it a sentence like "A person walks forward and turns around." and it returns a 22-joint human motion sequence: per-frame joint rotations plus root position at 20 fps, ready to preview in 3D or export to FBX. It's text-to-3D-motion in ComfyUI, which is a genuinely different thing from text-to-video - you get clean, riggable motion data instead of rendered pixels.

How it works

Under the hood this is the HybridMaMoMask research model (a "Hybrid Transformer-Mamba" text-to-motion architecture, from the Chetanaa/T2M Hugging Face Space, MIT). The Generate node walks the four-stage pipeline:

  1. Length estimator - the text gets CLIP-encoded (ViT-B/32) and a small model predicts how many frames the motion should be. This is the default; it's what runs when duration_seconds is 0.
  2. Hybrid mask transformer - generates motion tokens with iterative parallel decoding, the number of refinement passes being your timesteps setting.
  3. Residual transformer - refines those tokens across six residual-quantization levels, which is where the "texture" of the motion gets filled in.
  4. RVQ-VAE decoder - turns tokens back into the continuous 263-dimension HumanML3D motion format, then recover_from_ric converts it to XYZ joint positions.

Every stage is seeded from your seed, so same text + same seed = same motion. It's fully local - no API, no key.

The inputs that matter

  • text - the prompt. Keep it to simple, physically-plausible actions. The model trained on motion-capture descriptions (HumanML3D), so "walks forward and turns around" works far better than flowery prose.
  • seed - your motion lottery ticket.
  • duration_seconds (default 0) - 0 means "let the length estimator decide." Set it to force a specific length, but it caps at 9.8 seconds (~196 frames at 20fps).
  • timesteps (default 18, up to 64) - decoding refinement passes. More = higher quality and slower. 18 is a sane start; drop to ~8-10 while iterating on the prompt, crank it for the final pass.
  • cond_scale (default 4) and res_cond_scale (default 5) - classifier-free-guidance strength for the main and residual transformers. Higher = more prompt adherence, less natural motion; the defaults are where most people live.
  • temperature (1.0) and topk_filter_thres (0.9) - sampling randomness and truncation. Lower temperature tightens the motion, higher makes it wander.
  • gsample (false) - a different sampling path for the mask transformer; leave it alone until you know why you want it.

Output is a single motion socket of type HYBRID_MAMOMASK_DATA - not an image, not a latent. It wires into HybridMaMoMask Preview Animation (3D) to watch, or HybridMaMoMask Export FBX to save.

Installing it

It's part of Link Comfy Nodes (Mister-Link/link-comfy-nodes). Install the pack - ComfyUI Manager, search "Link Comfy Nodes", or:

cd ComfyUI/custom_nodes
git clone https://github.com/Mister-Link/link-comfy-nodes
cd link-comfy-nodes
pip install -r requirements.txt

Then restart. The Loader node will pull the ~1GB of model checkpoints on first run.

Common issues

  • Empty text raises "Text prompt is required." - the node doesn't generate from nothing.
  • Motion looks stiff or wobbly - raise timesteps and/or lower cond_scale. Stiffness usually means you're over-guiding.
  • Duration seems random - that's the length estimator being a model with opinions. Set duration_seconds if you need repeatable lengths.
  • Behavior shifted after an update - the pack's README literally says the author changes how nodes behave without warning. If a workflow stops reproducing, that's the first thing to suspect, and pinning the git revision is the cure.

One honest caveat: this is a thesis-model wrapper, not a tuned product. Motions are good for blocking, posing, or driving a retarget, not instantly MoCap-grade. Treat it as a fast way to get a believable first-pass skeleton and you'll be delighted.

CategoryMotion/T2M

Inputs (10)

NameTypeDefaultDescription
modelHYBRID_MAMOMASK_MODEL
textSTRINGA person walks forward and turns around.
seedINT420–2147483647
duration_secondsoptFLOAT0.00–9.80 uses the model's length estimator.
timestepsoptINT181–64
cond_scaleoptFLOAT4.00.1–20
res_cond_scaleoptFLOAT5.00.1–20
temperatureoptFLOAT1.00.1–3
topk_filter_thresoptFLOAT0.900–1
gsampleoptBOOLEANfalse

Outputs (1)

NameTypeDescription
motionHYBRID_MAMOMASK_DATA