Nodes/ComfyUI-BrainDead/BD Native Fortnite Skeleton
ComfyUI Node

BD Native Fortnite Skeleton

The repose that makes them actually bind

By BizaNator·Created 8 months ago·Updated about 19 hours ago· 15
BD Native Fortnite Skeleton
    • fbx_path
    • blend_path
    • report_path
    source_asset
    target_profileNATIVE_DEVICE
    filenameNativeCharacter
    require_fingerstrue
    source_rigroot
    reference_fbx
    reference_contract
    converter_script
    blender_executable

    Let's be honest about who this node is for before you go anywhere near it. If you've been generating 3D characters with Pixal3D or TRELLIS2 and dreaming of dropping them into Fortnite, you've already hit the wall the KB's 3D essay describes: generated meshes have no rig, and "anything that has to deform, animate, or ship in a game as-is" needs a retopology and rig pass you did not sign up for. BD Native Fortnite Skeleton (class BD_TargetFortniteSkeleton) is the last step of that pass - the one that takes a character already rigged and bound to Epic's UEFN skeleton and reposes it to Fortnite's measured Character Device reference so it binds, poses, and stays put in-engine. It won't rig your mesh for you. It finishes one that's already rigged.

    Where it sits in the pipeline

    It's the tail end of the pack's AutoRig category, which the top-level README hasn't even caught up to yet (the real doc lives at docs/native-skeleton-target.md in the repo):

    Mesh → BD_AutoRigMIA → BD_AutoRigUEFN → BD_TargetFortniteSkeleton
           (auto-rig,        (Mixamo →        (native completion,
            Mixamo skel)      Fab UEFN skel)   repose + audit)
    

    That middle step is worth understanding: BD_AutoRigUEFN transfers weights from the Fab/UEFN mannequin, and the native Character Device has a different rest pose than that mannequin. That difference is exactly why this node exists. It reposes the Basis pose and every morph against the measured device (or full Player) reference, keeping your existing weights and shape keys, re-exports the whole rig, then reimports its own FBX and audits it. No model files, no GPU - this is pure CPU Blender work.

    The inputs that matter

    • source_asset - a file path to a rigged .fbx or .blend with canonical (UEFN-named) bones. This is a string field, not a file browser; paste the path.
    • target_profile - NATIVE_DEVICE (default; the 88-bone body core) is the one you want. NATIVE_PLAYER goes for the full 280-entry Player hierarchy but needs a newer private backend. FAB_UEFN is the legacy option.
    • require_fingers - on by default, and this is where people get burned. A full character must already weight all 30 finger bones, or the job dies before export. That failure is the intended signal: repair the hands. Turn it off only for standalone parts like a head or feet.
    • filename - output name, and it's strict: letters, digits, and underscores only, must start with a letter.

    The optional fields (reference_fbx, reference_contract, converter_script, blender_executable, source_rig) are the escape hatch for anyone not on the author's studio NAS - more on that below.

    Outputs are three string paths: fbx_path (the completed native rig), blend_path (an editable copy), and report_path (the conversion.json audit). Wire them into a string/display node or just read them - it's an output node, so nothing downstream consumes a mesh here.

    Installing and the honest catch

    Install the pack the usual way - ComfyUI Manager, search "BrainDead", or git clone into custom_nodes/. The requirements.txt (MoGe, natten, and friends) only feeds the image-to-3D nodes; this one needs none of it.

    Here's the thing the README glosses over: this node expects a private studio backend that is not in the repo. The defaults resolve to B:\Brains\... or /mnt/tank/Studio/Brains/... - the author's Biloxi Studios NAS - where a convert_skeleton_target.py script plus a measured reference FBX and its .provenance.json contract live. On your machine those paths don't exist, and you'll get a FileNotFoundError. To use it outside the studio you must supply your own converter_script, reference_fbx, and reference_contract, and point blender_executable at a real install.

    Two more gotchas. It's pinned to exactly Blender 5.1.2 - the code checks the version string and refuses anything else, so "any Blender" won't do. And it never caches: every queue run re-reads the source asset (which is deliberate - files change in place), so don't be surprised it re-runs every time.

    Honest bottom line: this is a genuinely useful node if you're shipping custom characters into Fortnite UEFN and you have the reference skeleton and converter to point at it. If you're not, it's a great demonstration that the hard part of "AI character into a game" is never the generation - it's the skeleton, the weights, and the fingers.

    Category🧠BrainDead/AutoRig

    Inputs (9)

    NameTypeDefaultDescription
    source_assetSTRINGRigged FBX or .blend with canonical bone names.
    target_profileCOMBONATIVE_DEVICE3 options: NATIVE_DEVICE, NATIVE_PLAYER, FAB_UEFN
    filenameSTRINGNativeCharacter
    require_fingersBOOLEANtrueFull characters must weight all 30 finger bones. Disable for standalone non-hand parts.
    source_rigoptSTRINGroot
    reference_fbxoptSTRING
    reference_contractoptSTRING
    converter_scriptoptSTRING
    blender_executableoptSTRING

    Outputs (3)

    NameTypeDescription
    fbx_pathSTRING
    blend_pathSTRING
    report_pathSTRING