Nodes/BrainDead Nodes/BD Anim Retarget
ComfyUI Node

BD Anim Retarget

Put HunyuanMotion animation on any UEFN character without touching a keyframe

By BizaNator·Created 8 months ago·Updated 3 days ago· 15
BD Anim Retarget
    • animated_fbx
    motion_fbx
    character_fbx
    fps30
    filenameanim_retarget
    name_prefix
    auto_incrementtrue
    context_id
    suffix
    context_custom_vars

    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.

    Category🧠BrainDead/AutoRig

    Inputs (9)

    NameTypeDefaultDescription
    motion_fbxSTRINGAnimated SMPL-H FBX — output of HYMotionExportFBX. Contains the skeleton animation data.
    character_fbxSTRINGUEFN-rigged character FBX — output of BD_AutoRigUEFN. The mesh and skeleton that will be animated.
    fpsINT301–120Frame rate of the source animation (must match HunyuanMotion generation fps).
    filenameoptSTRINGanim_retargetBase filename without extension.
    name_prefixoptSTRINGPrepended to filename. Supports subdirs (e.g. 'autorig/mychar').
    auto_incrementoptBOOLEANtrueAuto-increment filename to avoid overwriting.
    context_idoptSTRINGBD_SaveContext id for template-based naming. Empty + one registered context = auto-pick. When resolved, filename/name_prefix pass through as %filename%/%name_prefix%.
    suffixoptSTRINGPer-save suffix → %suffix% in the context template.
    context_custom_varsoptSTRINGExtra key=value template vars (one per line). Only used when context_id resolves.

    Outputs (1)

    NameTypeDescription
    animated_fbxSTRING