Nodes/comfyui-game-assets-maker/Rig To Spine Export
ComfyUI Node

Rig To Spine Export

From layer parts to a Spine rig you can actually import

By quinteroac·Created 4 months ago·Updated 4 months ago· 20
Rig To Spine Export
  • parts
  • rig
  • spine_json
  • json_path
  • atlas_path
  • images_dir
  • report
filename_prefixgame_asset_spine
scale1.000
animation_presetall
animation_duration2.00
animation_intensity1.00
blink_interval3.00

This is the payoff node of the whole pack. GameAssets_RigToSpineExport takes your layer parts and a GAME_ASSET_RIG and writes a Spine-style package - JSON, atlas, and PNG region attachments - that you can open in Spine and start animating. It even auto-generates idle animations for you. That's the full arc: generated art → layer decomposition → rig → importable Spine project.

It's part of comfyui-game-assets-maker, quinteroac's pack shared on r/comfyui as a playground for game-asset pipelines - and this is where the playground metaphor ends, because this node is the one that produces something a professional tool can consume.

How it works

Wire in parts (from SeeThrough_PostProcess in jtydhr88/ComfyUI-See-through) and rig (from SeeThrough Parts Pose Rig, ideally). The node writes a timestamped folder under ComfyUI's output directory:

game_asset_spine_YYYYmmdd_HHMMSS_xxxxxxxx/
  game_asset_spine_YYYYmmdd_HHMMSS_xxxxxxxx.json
  game_asset_spine_YYYYmmdd_HHMMSS_xxxxxxxx.atlas
  images/
    face.png
    front-hair.png
    ...

Each SeeThrough part becomes a PNG region attachment, rig bones become Spine bones, slots keep the part order, and image-space Y coordinates get flipped to Spine's Y-up convention. Bones get length and setup rotation from the rig's head/tail points, and attachments are counter-rotated so the character stays assembled. Common parts get a sensible hierarchy - hair, iris, and eyelashes become point controls for sway/blink, static bits like legwear and ears stay as attachments mapped to the nearest control.

Then there are the auto-animations. animation_preset (default all) writes idle_breath, blink, hair_sway, and face_alive, plus a combined idle loop, using bone transforms only so they work with region attachments. animation_duration, animation_intensity, and blink_interval tune the loop.

After the node runs, hit the Download Spine ZIP button on the node (added by the pack's JS) to grab JSON + atlas + images as one archive.

The honest caveat

The README says it plainly and so will I: this is an MVP region-attachment export, not a mesh/skinning export. You get a solid starting point to refine in Spine, not a finished rig. Anyone selling you "one click to perfect Spine rig" from auto-decomposition is overselling; this node is honest about being the first draft.

Outputs

spine_json (the full JSON as text), json_path, atlas_path, images_dir, and report (exported/skipped parts, animation names). scale rescales the whole export; filename_prefix names the folder.

Installing

ComfyUI Manager (search "comfyui-game-assets-maker") or:

cd ComfyUI/custom_nodes
git clone https://github.com/quinteroac/ComfyUI-GameAssetsMaker.git
cd ComfyUI-GameAssetsMaker
pip install -r requirements.txt

Restart after. The pack needs only opencv-python; the real setup cost is the prerequisites - See-through for the parts, comfyui_controlnet_aux + DWPose for the pose rig, and Spine itself to open what it exports.

Where people get burned

Don't skip the preview step. Export a rig you haven't eyeballed in Rig To SVG Preview and you'll import misplaced pivots into Spine and wonder why the idle animation looks like a seizure. Also: scale affects everything, so set it before you export, not after. And if animations come out of the box looking robotic - well, they're procedural bone transforms on an MVP exporter. That's the starting point the node promises.

CategoryGame Assets/Rigging

Inputs (8)

NameTypeDefaultDescription
partsSEETHROUGH_PARTS
rigGAME_ASSET_RIG
filename_prefixSTRINGgame_asset_spine
scaleFLOAT1.0000.001–100
animation_presetCOMBOall7 options: all, full_idle, idle_breath, blink, hair_sway, face_alive, +1
animation_durationFLOAT2.000.25–30
animation_intensityFLOAT1.000–5
blink_intervalFLOAT3.000.25–30

Outputs (5)

NameTypeDescription
spine_jsonSTRING
json_pathSTRING
atlas_pathSTRING
images_dirSTRING
reportSTRING