BD Anim Retarget
Put HunyuanMotion animation on any UEFN character without touching a keyframe
- animated_fbx
You rigged a character with the BrainDead autorig pipeline and you want to drop a generated motion clip on it. That's exactly the hole BD Anim Retarget fills: it takes a HunyuanMotion animation (which is driven by the SMPL-H skeleton) and transfers it onto a UEFN-rigged character, then writes an animated FBX you can import straight into UEFN/Fortnite.
It sits at the very end of the autorig chain, which is the only reason it makes sense as a node at all. The pipeline runs BD_AutoRigMIA (Mixamo-style rig from a mesh) → BD_AutoRigUEFN (that gets reboned to the UEFN skeleton using a bundled Mannequin as weight donor) → and now this node. Without it you'd be exporting a static rig and doing the retarget by hand in Blender or Maya - which is exactly the sort of manual cleanup the KB's 3D generation doc warns is the real cost of image-to-3D work.
How it works
Under the hood this is a headless Blender job (the pack's Blender nodes all run Blender as a subprocess). The two skeletons are completely different animals - SMPL-H uses names like Pelvis, L_Hip, Spine1, while UEFN expects pelvis, thigh_l, spine_01. The node maps the source bones onto the target via Blender Copy Rotation constraints, bakes the result, and exports a new FBX where the character mesh is deformed by the transferred motion. You don't see any of that; you just get a file.
The inputs that matter
- motion_fbx - the animated SMPL-H FBX straight out of
HYMotionExportFBX. This carries the skeleton animation data. - character_fbx - the UEFN-rigged character from
BD_AutoRigUEFN. - fps - default 30. This must match the frame rate your HunyuanMotion clip was generated at, or the motion will come out running at the wrong speed. It's the one value beginners trip on.
The rest of the inputs are the pack's standard save plumbing: filename, name_prefix (supports subdirs like autorig/mychar), auto_increment, and the context_id/suffix/context_custom_vars trio for the BD Save Context template system. If you've set up one BD Save Context node you can leave context_id empty and it auto-picks.
Output is a single animated_fbx STRING - the path to the file it wrote.
Install and the one real gotcha
Install the pack the normal way - ComfyUI Manager, search "BrainDead", hit install and restart, or:
cd ComfyUI/custom_nodes
git clone https://github.com/BizaNator/ComfyUI-BrainDead
cd ComfyUI-BrainDead
pip install -r requirements.txt
Two things to know before you're surprised. First, this pack is built on the ComfyUI V3 node API - if the nodes don't show up after install, your ComfyUI is probably too old; update it first. Second, this is a Blender node, and the pack's README says Blender is "bundled in lib/" - it isn't, not the actual binary. The code looks for a bundled build, then sibling packs (GeometryPack, UniRig), then a system Blender at /usr/bin/blender. So: have a Blender on your system (or in a sibling pack), or every Blender-based node including this one will fail with "Blender not found."
No model downloads here - the MIA weights you already pulled for BD_AutoRigMIA are all this needs. Wire it, set fps, run, and your character finally walks.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| motion_fbx | STRING | Animated SMPL-H FBX — output of HYMotionExportFBX. Contains the skeleton animation data. | |
| character_fbx | STRING | UEFN-rigged character FBX — output of BD_AutoRigUEFN. The mesh and skeleton that will be animated. | |
| fps | INT | 301–120 | Frame rate of the source animation (must match HunyuanMotion generation fps). |
| filenameopt | STRING | anim_retarget | Base filename without extension. |
| name_prefixopt | STRING | Prepended to filename. Supports subdirs (e.g. 'autorig/mychar'). | |
| auto_incrementopt | BOOLEAN | true | Auto-increment filename to avoid overwriting. |
| context_idopt | STRING | BD_SaveContext id for template-based naming. Empty + one registered context = auto-pick. When resolved, filename/name_prefix pass through as %filename%/%name_prefix%. | |
| suffixopt | STRING | Per-save suffix → %suffix% in the context template. | |
| context_custom_varsopt | STRING | Extra key=value template vars (one per line). Only used when context_id resolves. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| animated_fbx | STRING | — |