Rig To Spine Export
From layer parts to a Spine rig you can actually import
- parts
- rig
- spine_json
- json_path
- atlas_path
- images_dir
- report
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.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| parts | SEETHROUGH_PARTS | — | |
| rig | GAME_ASSET_RIG | — | |
| filename_prefix | STRING | game_asset_spine | — |
| scale | FLOAT | 1.0000.001–100 | — |
| animation_preset | COMBO | all | 7 options: all, full_idle, idle_breath, blink, hair_sway, face_alive, +1 |
| animation_duration | FLOAT | 2.000.25–30 | — |
| animation_intensity | FLOAT | 1.000–5 | — |
| blink_interval | FLOAT | 3.000.25–30 | — |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| spine_json | STRING | — |
| json_path | STRING | — |
| atlas_path | STRING | — |
| images_dir | STRING | — |
| report | STRING | — |