๐บ HY-Motion Model (dropdown)
The wrapper directory that trips everyone up
- model_path
HY-Motion is Tencent's open motion model - one of the repos the Hunyuan program was still actively pushing through 2026, alongside the HunyuanWorld line. It hands you a .npz motion, which is exactly what you feed into a rig or an avatar pipeline. Its ComfyUI loader wants a model_path STRING, hand-typed, absolute. This node hands you the right one from a dropdown, including the part everyone gets wrong: the doubled directory name.
The problem it solves
Raw-STRING path inputs are the tax you pay for using other people's custom nodes. You copy an example workflow, it has /mnt/data/models/... in a text field, you edit it, you typo it, you get a loader error that tells you nothing about which of the four path-shaped fields is wrong. A dropdown removes the typo class of failure entirely and makes the workflow portable-ish, since the path is resolved from your machine's configuration rather than baked in.
How it works
The node scans the immediate subdirectories of your HY-Motion root and lists them as a dropdown - one entry per checkpoint variant. It skips hidden entries (dotfiles), so a .cache sitting next to your weights doesn't pollute the list.
Then it does something the other directory pickers in this pack don't. The selected variant is expanded into a nested path: <root>/<variant>/<variant>. That's because HY-Motion's checkpoint layout drops the model into a same-named wrapper directory, so HY-Motion-1.0 the variant becomes .../tencent/HY-Motion-1.0/HY-Motion-1.0 on disk. If you've ever pointed a loader at the outer folder and gotten a "config not found" style error, that layout is why. Here you pick the variant once and the wrapper is handled.
The root itself is HYMOTION_MODEL_ROOT if that environment variable is set, otherwise the pack's built-in default. It also re-runs when the root directory's mtime changes, so dropping in a new variant invalidates the node rather than serving you a stale path.
Inputs and output
model_dir - the dropdown. One row per variant under the root; a placeholder row if the folder is empty or unreadable. Pick the variant, not the weights file.
model_path - a STRING: the fully expanded nested path. Wire it into HYMotionTextTo3D's model_path input. Because it's a plain STRING, it also drops into any other node that wants the same path.
Installing it
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/JayDataEngineer/melite-utility-nodes.git
Restart, or install Melite Utility Nodes through ComfyUI Manager. The pack's requirements.txt pulls matplotlib and av; this picker needs neither, but they come along.
The node ships no models - you download HY-Motion yourself. Then point it at your root:
export HYMOTION_MODEL_ROOT=/path/to/HY-Motion/ckpts/tencent
Set that where ComfyUI actually reads its environment: the launcher script, a systemd unit, the Docker -e flag or an ENV line in your build. Setting it in a shell you don't launch ComfyUI from is the classic no-op.
Note the layout: the root must be the folder containing the variants, not the variant folder itself. The pack's default assumes .../HY-Motion/ckpts/tencent with variants inside it.
Where it bites
- Empty dropdown. If the root doesn't exist or has no subdirectories, you get one placeholder row and the node refuses to run with a message naming the env var to set. That's the good failure - but it looks like a broken node until you read the text.
- Off-by-one directory. Pointing
HYMOTION_MODEL_ROOTat a variant rather than the containing folder gives you a list of that variant's subdirectories, and a nonsense nested path from there. If the dropdown contents look like internals, your root is one level too deep. - Only immediate children are listed. Deeper nesting is invisible; the picker is not a recursive search.
- If you're new to HY-Motion, expect to figure it out yourself. There's essentially no ComfyUI community discussion of this model - no threads, no wrapper packs, no shared workflows - which is precisely why a first-party picker for it exists. The upside is that the README for this node is honest about what the path should look like, which is more than most 3D-era model repos manage.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| model_dir | COMBO | (no model directories found) | HY-Motion checkpoint variant. Resolves to the nested model path <root>/<variant>/<variant> expected by HYMotionTextTo3D. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| model_path | STRING | โ |