Nodes/HYM-Runner/HY-Motion Runner v5
ComfyUI Node

HY-Motion Runner v5

Text-to-motion that lands as an FBX file — no keyframing, no API

By JRCaisy·Created 4 months ago·Updated 4 months ago· 1
HY-Motion Runner v5
    • status
    • fbx_path
    • output_folder
    • log
    promptfast athletic style jump ahead with strong landing
    presetnone
    reload_preset_libraryfalse
    model_variantHY-Motion-1.0-Lite
    categoryLocomotion
    base_nameJump
    prefix
    suffix_###
    start_index1
    padding3
    duration_frames100
    seed_moderandom
    num_seeds1
    fixed_seed123
    overwrite_modenext
    flatten_fbxtrue
    cleanup_temptrue
    open_output_folderfalse
    disable_rewritetrue
    disable_duration_esttrue

    Type a sentence, get a .fbx file that moves. That's the whole pitch of HYMotionRunner (displayed as "HY-Motion Runner v5"), and it sits at the end of Tencent's HY-Motion-1.0 - the billion-parameter DiT/flow-matching text-to-motion model that shipped open in late 2025. The name is honest: this node doesn't run diffusion itself. It's a bridge that shells out to Tencent's local_infer.py CLI, waits for it to finish, then picks the FBX out of the temp folder, renames it, and files it away with a .meta.json next to it. If your goal is "feed a game studio or an Unreal pipeline predictable animation files," that bookkeeping is half the value.

    Most people meeting HY-Motion for the first time use jtydhr88's in-repo ComfyUI port, which is cleaner for one-off experiments. This one is aimed at the other end of the spectrum: deterministic names, category folders, overwrite rules, per-shot logs. It's a plumbing node in the truest sense - check comfyui-node-plumbing.md for the pattern - and it's very new, with effectively zero community footprint yet. Treat it as production tooling from a single author (JRCaisy, crediting Caisy & Aki), not a polished mainline node.

    How it works

    Under the hood it's a subprocess.run at the ComfyUI level. It writes your prompt into a JSON at hy_root/examples/example_prompts/, then invokes:

    venv/bin/python local_infer.py --model_path ckpts/tencent/<variant> \
      --input_text_dir <prompt dir> --output_dir <temp> --num_seeds N \
      [--disable_rewrite] [--disable_duration_est]
    

    It finds the first .fbx in the output, copies it to your clean name, writes a .log.txt plus .meta.json (prompt, effective prompt, exact command, return code), and - if you want - wipes the temp folder. One honest caveat grounded in the code: seed_mode = fixed only sets PYTHONHASHSEED and Python's random.seed before the subprocess. That's not a real inference seed, so don't expect bit-identical motion from it; treat "fixed" as "more stable ordering," not reproducibility.

    The inputs that matter

    Everything is required widgets, and the ones you'll actually touch are few:

    • prompt - plain English motion description, e.g. the default "fast athletic style jump ahead with strong landing".
    • preset - 16 canned motions (idle, run, jump, attack_heavy, death…) loaded from preset_library.json; pick one and it's prepended to your prompt. reload_preset_library re-reads that JSON so you can edit it live.
    • model_variant - HY-Motion-1.0-Lite (default) or the full HY-Motion-1.0.
    • duration_frames - 30–600; 100 is roughly a few seconds.
    • category / base_name / prefix / suffix - the naming system. Put # or ### in prefix/suffix and it increments (so _v### gives _v001, _v002…). overwrite_mode = next / overwrite / skip.

    Outputs: status, fbx_path, output_folder, log. Wire fbx_path anywhere you want to record where the file went - it's a string output, so it's mostly for downstream logging, not further processing.

    Installing it

    The node itself is trivial: ComfyUI Manager → search "HY-Motion Runner", or

    cd ComfyUI/custom_nodes && git clone https://github.com/JRCaisy/HYM-Runner
    

    then restart ComfyUI. There's no requirements.txt in the pack - the node has zero Python deps because it doesn't import the model. The heavy lift is HY-Motion itself: clone Tencent-Hunyuan/HY-Motion-1.0, git lfs pull, create a venv, pip install -r requirements.txt, and grab the checkpoints (HY-Motion-1.0 or -Lite, clip-vit-large-patch14, and Qwen3-8B for the text encoder). Realistic VRAM: the Lite model wants ~4GB and the full ~8GB, plus the Qwen3-8B encoder (int4 quant ~4GB, unquantized ~16GB).

    The trap: hy_root and final_output_root are hardcoded Windows paths in hy_motion_node.py - E:\AI\HY-Motion-1.0 and E:\GRapHiC\Animations\HYM - and it looks for venv\Scripts\python.exe. On Linux you must edit both to your layout (venv/bin/python, and your real output dir) before it will run.

    Gotchas

    The node returns clean ERROR: status strings for each path it can't find (HY-Motion root, its python, local_infer.py, or the model dir) - read status and log first when something dies. The community's classic post-install crash is No module named 'torchdiffeq'; pip install torchdiffeq into the HY-Motion venv fixes it. And when you see No SMPL data found... during inference, ignore it - the README says it plainly and it doesn't stop FBX export.

    One thing to know going in: this generates a built-in SMPL humanoid skeleton, not a rigged character. You'll retarget onto your own skeleton in whatever engine you use. Generated motion is a starting point, exactly like the 3D assets in 3d-generation.md - usable, but the last 10% of polish is still on you.

    CategoryHY-Motion

    Inputs (20)

    NameTypeDefaultDescription
    promptSTRINGfast athletic style jump ahead with strong landing
    presetCOMBOnone17 options: none, attack_heavy, attack_light, crouch_idle, crouch_walk, death, +11
    reload_preset_libraryBOOLEANfalse
    model_variantCOMBOHY-Motion-1.0-Lite2 options: HY-Motion-1.0-Lite, HY-Motion-1.0
    categorySTRINGLocomotion
    base_nameSTRINGJump
    prefixSTRING
    suffixSTRING_###
    start_indexINT11–999999
    paddingINT31–8
    duration_framesINT10030–600
    seed_modeCOMBOrandom2 options: random, fixed
    num_seedsINT11–8
    fixed_seedINT1230–999999999
    overwrite_modeCOMBOnext3 options: next, overwrite, skip
    flatten_fbxBOOLEANtrue
    cleanup_tempBOOLEANtrue
    open_output_folderBOOLEANfalse
    disable_rewriteBOOLEANtrue
    disable_duration_estBOOLEANtrue

    Outputs (4)

    NameTypeDescription
    statusSTRING
    fbx_pathSTRING
    output_folderSTRING
    logSTRING