Files
DemonGatanjieu-Anomalous_Mo…/api/blocks/control_pose.json
T
DemonGatanjieuandClaude Opus 5.5 8ecc261949 Let ready-made blocks say what they hand the next one, and build them as a chain
Every block in api/blocks names what it gives a block after it ("gives": its sampler and its
output node; {} for one that changes the step it is put on) and its own model loader
("own_model"). api/block_chain.py builds a list of steps on a new tab: the picture first, each
next block anchored to what the step before gave, by near_node_id and a new page-only
save_node_id (canvas_roles.js findRoles pins the output node), so a canvas with several
samplers and outputs is no guess. add_nodes' answer names the block it built.

Redraw with another model and face/hand detailing now take the step before's picture
("$save.images") instead of the sampler's decode, which after an enlargement is the older
picture. The two-model routes are built as two-step chains; routes.json no longer names the
loaders.

Checked through the real page on the test ComfyUI: the Tile route on two Anima models (base on
Harem 1.5, Tile redraw on Kirazuri v4, from the base's picture and prompts), then face and hand
detailing after it took the Tile step's colour-matched picture.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-09 00:42:56 +08:00

175 lines
4.5 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"job": "follow",
"want": "pose",
"rank": 1,
"short": "its pose",
"title": {
"zh": "照着姿势画",
"en": "Follow a pose"
},
"about": {
"zh": "读出参考图的姿势,照着这个姿势画。",
"en": "Reads a picture's pose and draws to it."
},
"source": {
"zh": "参考工作流的「底图控制网」组",
"en": "The reference workflow's ControlNet group"
},
"packs": {
"DWPreprocessor": "comfyui_controlnet_aux"
},
"takes": "reference",
"control": "pose",
"nodes": {
"reference": {
"class_type": "LoadImage",
"inputs": {
"image": "$image"
}
},
"pose": {
"class_type": "DWPreprocessor",
"inputs": {
"image": [
"reference",
0
],
"detect_hand": "enable",
"detect_body": "enable",
"detect_face": "enable",
"resolution": 1024,
"bbox_detector": "yolox_l.torchscript.pt",
"pose_estimator": "dw-ll_ucoco_384_bs5.torchscript.pt",
"scale_stick_for_xinsr_cn": "disable"
}
},
"controlnet": {
"class_type": "ControlNetLoader",
"inputs": {
"control_net_name": "$controlnet"
}
},
"steer": {
"class_type": "ControlNetApplyAdvanced",
"inputs": {
"positive": [
"$sampler.positive",
"*"
],
"negative": [
"$sampler.negative",
"*"
],
"control_net": [
"controlnet",
0
],
"image": [
"pose",
0
],
"vae": [
"$decode.vae",
"*"
],
"strength": 0.8,
"start_percent": 0.0,
"end_percent": 0.8
},
"wire_to": "$sampler"
},
"look": {
"class_type": "PreviewImage",
"inputs": {
"images": [
"pose",
0
]
}
}
},
"after": "run_workflow: the picture now takes that pose (strength 0.8, for the first 80% of the steps; lower either for a looser pose). The prompt still says who and what: change it if it fights the pose. Its pose skeleton is among the run's previews: if it is empty or wrong (a crowded or very stylised picture), try control_depth.",
"gives": {},
"variants": {
"anima": {
"packs": {
"DWPreprocessor": "comfyui_controlnet_aux",
"AnimaLLLiteApply_sdscripts": "ComfyUI-Anima-LLLite"
},
"control": null,
"lllite": "pose",
"nodes": {
"reference": {
"class_type": "LoadImage",
"inputs": {
"image": "$image"
}
},
"pose": {
"class_type": "DWPreprocessor",
"inputs": {
"image": [
"reference",
0
],
"detect_hand": "enable",
"detect_body": "enable",
"detect_face": "enable",
"resolution": 1024,
"bbox_detector": "yolox_l.torchscript.pt",
"pose_estimator": "dw-ll_ucoco_384_bs5.torchscript.pt",
"scale_stick_for_xinsr_cn": "disable"
}
},
"steer": {
"class_type": "AnimaLLLiteApply_sdscripts",
"inputs": {
"model": [
"$sampler.model",
"*"
],
"lllite_name": "$lllite",
"image": [
"pose",
0
],
"strength": 1.0,
"start_percent": 0.0,
"end_percent": 1.0,
"preserve_wrapper": true
},
"wire_to": "$sampler"
},
"look": {
"class_type": "PreviewImage",
"inputs": {
"images": [
"pose",
0
]
}
}
},
"after": "On this Anima model an Anima ControlNet-LLLite steers it, more gently than an SDXL ControlNet: say in the prompt what the picture shows (how many people, what they do), or the prompt wins. Strength 1.0 for all the steps; up to 1.5 holds it closer. run_workflow. Its pose skeleton is among the run's previews: if it is empty or wrong (a crowded or very stylised picture), try control_depth."
}
},
"models": [
"noob_openpose",
"thibauld_openpose_sdxl",
"union_promax_sdxl",
"anima_lllite_pose"
],
"tested": {
"gpu": "RTX 4050 Laptop",
"vram_gb": 6,
"date": "2026-10-27",
"runs": [
{
"model": "SDXL (Illustrious)",
"size": "832×1216",
"seconds": 64
}
]
}
}