qwen21-nsfw-pose
Use when generating sexy/NSFW or posed images with local Qwen-Image 2.1 — pose/NSFW LoRAs (tawsLoRa femaledVaginus, TheseAlpacas, posture-v3), pose transfer from an existing image, or exact pose control via VNCCS PoseStudio 3D pose library. Triggers: 性感姿势, 摆姿势, NSFW 出图, 换姿势, 姿势控制, pose transfer, pose lora, VNCCS, 人偶姿势, 姿势库. Independent of any general image-generation skill (which handles SFW text/edit/cutout work).
含まれるファイル(141)
- SKILL.md19.8 KB
- .github/workflows/validate.yml474 B
- .gitignore38 B
- downloads/samples/comfy_145231547.json48.0 KB
- downloads/samples/comfy_145233010.json48.9 KB
- downloads/samples/comfy_145340251.json367.0 KB
- downloads/samples/phase5_meta.json4.3 KB
- downloads/samples/taws_v13_massage_author.jpg9.0 MB
- downloads/samples/taws_v13_shower_author.jpg10.4 MB
- downloads/samples/thesealpacas_v2_selfie_author.jpg2.5 MB
- install/setup.md7.4 KB
- pose_library/local_user_poses/Uncategorized/1.json18.7 KB
- pose_library/local_user_poses/Uncategorized/1.webp20.3 KB
- pose_library/local_user_poses/Uncategorized/Bent over toe touch profile.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Bent over toe touch profile.webp17.1 KB
- pose_library/local_user_poses/Uncategorized/Boxing Stance.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Boxing Stance.webp13.3 KB
- pose_library/local_user_poses/Uncategorized/Crawling rear.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Crawling rear.webp0 B
- pose_library/local_user_poses/Uncategorized/Crawling.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Crawling.webp20.3 KB
- pose_library/local_user_poses/Uncategorized/Feet Apart profile.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Feet Apart profile.webp10.7 KB
- pose_library/local_user_poses/Uncategorized/feet apart rear.json18.8 KB
- pose_library/local_user_poses/Uncategorized/feet apart rear.webp10.7 KB
- pose_library/local_user_poses/Uncategorized/Feet Apart.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Feet Apart.webp0 B
- pose_library/local_user_poses/Uncategorized/Fetal overhead.json18.7 KB
- pose_library/local_user_poses/Uncategorized/Fetal overhead.webp22.2 KB
- pose_library/local_user_poses/Uncategorized/Fetal rear.json18.7 KB
- pose_library/local_user_poses/Uncategorized/Fetal rear.webp0 B
- pose_library/local_user_poses/Uncategorized/Fighting Straight Punch.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Fighting Straight Punch.webp0 B
- pose_library/local_user_poses/Uncategorized/forward step.json18.8 KB
- pose_library/local_user_poses/Uncategorized/forward step.webp10.1 KB
- pose_library/local_user_poses/Uncategorized/Jumping.json18.7 KB
- pose_library/local_user_poses/Uncategorized/Jumping.webp13.6 KB
- pose_library/local_user_poses/Uncategorized/Kicking.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Kicking.webp15.4 KB
- pose_library/local_user_poses/Uncategorized/knee raised profile.json18.8 KB
- pose_library/local_user_poses/Uncategorized/knee raised profile.webp10.8 KB
- pose_library/local_user_poses/Uncategorized/Kneeling Forward on Hands.json18.9 KB
- pose_library/local_user_poses/Uncategorized/Kneeling Forward on Hands.webp18.5 KB
- pose_library/local_user_poses/Uncategorized/Kneeling Leaning Back.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Kneeling Leaning Back.webp21.3 KB
- pose_library/local_user_poses/Uncategorized/Kneeling Legs Apart.json19.0 KB
- pose_library/local_user_poses/Uncategorized/Kneeling Legs Apart.webp17.8 KB
- pose_library/local_user_poses/Uncategorized/Kneeling overhead.json18.9 KB
- pose_library/local_user_poses/Uncategorized/Kneeling overhead.webp23.5 KB
- pose_library/local_user_poses/Uncategorized/Kneeling side.json19.4 KB
- pose_library/local_user_poses/Uncategorized/Kneeling side.webp19.4 KB
- pose_library/local_user_poses/Uncategorized/Kneeling.json19.1 KB
- pose_library/local_user_poses/Uncategorized/Kneeling.webp15.7 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Knees Spread Apart.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Knees Spread Apart.webp23.0 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Knees Up Together.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Knees Up Together.webp19.2 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Legs Akimbo.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Legs Akimbo.webp19.1 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Legs Crossed.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Legs Crossed.webp17.2 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Legs Spread.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Laying Back Legs Spread.webp16.9 KB
- pose_library/local_user_poses/Uncategorized/Laying on Back.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Laying on Back.webp17.3 KB
- pose_library/local_user_poses/Uncategorized/Leaning Back legs spread.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Leaning Back legs spread.webp22.0 KB
- pose_library/local_user_poses/Uncategorized/Legs Crosed.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Legs Crosed.webp10.4 KB
- pose_library/local_user_poses/Uncategorized/Prone Feet Up profile.json18.7 KB
- pose_library/local_user_poses/Uncategorized/Prone Feet Up profile.webp21.2 KB
- pose_library/local_user_poses/Uncategorized/Prone Legs Up Side.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Prone Legs Up Side.webp22.1 KB
- pose_library/local_user_poses/Uncategorized/Prone on Knees side.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Prone on Knees side.webp17.8 KB
- pose_library/local_user_poses/Uncategorized/Prone.json18.7 KB
- pose_library/local_user_poses/Uncategorized/Prone.webp20.9 KB
- pose_library/local_user_poses/Uncategorized/raised foot.json18.8 KB
- pose_library/local_user_poses/Uncategorized/raised foot.webp11.2 KB
- pose_library/local_user_poses/Uncategorized/Seated on Floor.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Seated on Floor.webp18.0 KB
- pose_library/local_user_poses/Uncategorized/Sitting legs crossed.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Sitting legs crossed.webp17.7 KB
- pose_library/local_user_poses/Uncategorized/sitting up on side.json18.7 KB
- pose_library/local_user_poses/Uncategorized/sitting up on side.webp16.7 KB
- pose_library/local_user_poses/Uncategorized/Squatting Forward on Hands.json19.0 KB
- pose_library/local_user_poses/Uncategorized/Squatting Forward on Hands.webp15.8 KB
- pose_library/local_user_poses/Uncategorized/Squatting Leaning Back.json18.9 KB
- pose_library/local_user_poses/Uncategorized/Squatting Leaning Back.webp0 B
- pose_library/local_user_poses/Uncategorized/Squatting Leg Extended.json18.9 KB
- pose_library/local_user_poses/Uncategorized/Squatting Leg Extended.webp16.7 KB
- pose_library/local_user_poses/Uncategorized/Squatting Legs Spread.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Squatting Legs Spread.webp20.9 KB
- pose_library/local_user_poses/Uncategorized/Squatting overhead.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Squatting overhead.webp16.1 KB
- pose_library/local_user_poses/Uncategorized/Squatting rear.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Squatting rear.webp16.5 KB
- pose_library/local_user_poses/Uncategorized/Squatting side.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Squatting side.webp14.6 KB
- pose_library/local_user_poses/Uncategorized/Squatting.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Squatting.webp13.1 KB
- pose_library/local_user_poses/Uncategorized/Standing Hand on Hip.json18.7 KB
- pose_library/local_user_poses/Uncategorized/Standing Hand on Hip.webp12.3 KB
- pose_library/local_user_poses/Uncategorized/Standing Leaning Back.json18.7 KB
- pose_library/local_user_poses/Uncategorized/Standing Leaning Back.webp13.0 KB
- pose_library/local_user_poses/Uncategorized/Standing Leaning Forward.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Standing Leaning Forward.webp14.2 KB
- pose_library/local_user_poses/Uncategorized/Standing One Hand on Hip 2.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Standing One Hand on Hip 2.webp13.3 KB
- pose_library/local_user_poses/Uncategorized/Standing One Leg Up.json18.7 KB
- pose_library/local_user_poses/Uncategorized/Standing One Leg Up.webp12.7 KB
- pose_library/local_user_poses/Uncategorized/standing profile right.json18.8 KB
- pose_library/local_user_poses/Uncategorized/standing profile right.webp9.1 KB
- pose_library/local_user_poses/Uncategorized/Standing profile.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Standing profile.webp9.9 KB
- pose_library/local_user_poses/Uncategorized/standing rear.json18.8 KB
- pose_library/local_user_poses/Uncategorized/standing rear.webp9.8 KB
- pose_library/local_user_poses/Uncategorized/Standing.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Standing.webp10.2 KB
- pose_library/local_user_poses/Uncategorized/Walking profile.json18.8 KB
- pose_library/local_user_poses/Uncategorized/Walking profile.webp11.5 KB
- prompts/taws_v13_massage.params.json247 B
- prompts/taws_v13_massage.txt1.2 KB
- prompts/taws_v13_shower.params.json314 B
- prompts/taws_v13_shower.txt1.4 KB
- prompts/thesealpacas_v2_selfie.params.json318 B
- prompts/thesealpacas_v2_selfie.txt507 B
- README.md5.0 KB
- references/pose_examples/01_seaside.png3.3 MB
- references/pose_examples/01b_seaside_lora.png3.1 MB
- references/pose_examples/06_l2_squat_lowangle.png3.0 MB
- references/src_standing.png1.2 MB
- scripts/build_phase5_sheet.py2.9 KB
- scripts/media_lock.py2.5 KB
- scripts/qwen_pose_test.py11.7 KB
- scripts/run_phase5.py2.6 KB
- scripts/run_vnccs_ui.py12.1 KB
- scripts/validate_package.py2.6 KB
- workflows/qwen21_edit.json1.6 KB
- workflows/qwen21_t2i.json1.6 KB
- workflows/VNCCS_PoseStudio_QI2.1.json42.0 KB
SKILL.md(原文)
インストールする前に、エージェントに与えられる指示の中身を確認できます。
Qwen-Image 2.1 NSFW / Pose Pipeline
Local photorealistic NSFW + pose control: ComfyUI + Qwen-Image 2.1 (int8 convrot)
- NSFW LoRAs + a 136-pose VNCCS 3D pose library.
Path convention: everything in this skill is relative to the skill root
(this directory). Scripts in scripts/, workflow graphs in workflows/,
author prompts in prompts/, reference images in references/,
author sample data (originals + metadata) in downloads/samples/.
ComfyUI-side locations (models, LoRAs, pose library) are configurable via env
vars — see install/setup.md and §2. The default host for ComfyUI is
http://127.0.0.1:8188 (override with COMFYUI_URL).
This file is self-contained: setup, recipe, pose selection, and a first-run author case are all inside.
0. First run — follow the author's case (recommended)
The fastest way to trust the pipeline is re-running the author's own sample prompt and comparing against the author's published image (verified 2026-10-12):
python3 scripts/qwen_pose_test.py \
--mode t2i --name author_case_shower \
--prompt "$(cat prompts/taws_v13_shower.txt)" \
--seed 80964 \
--steps 50 --cfg 2.5 --sampler er_sde --scheduler beta \
--width 1152 --height 1728 \
--lora "qwen2_1-femaledVaginus-nsfw-v1_3-fine_L22-31.safetensors" \
--lora-strength 1.0 \
--out outputs/author_case/shower.png
- Other cases:
prompts/taws_v13_massage.txt(30 steps, same seed, per its.params.json) andprompts/thesealpacas_v2_selfie.txt(CFG 4.0 +thesealpacas-nsfw-v2@0.8; its.txtends with a[negative]section — pass that to--negative). - Author originals to compare against:
downloads/samples/*_author.jpg(shower / massage / selfie). Full author metadata (prompts/params/seed/ complete ComfyUI graph) indownloads/samples/phase5_meta.json.
1. Routing
| Request | Route | Tool |
|---|---|---|
| New sexy/NSFW image from a text idea | ① T2I + NSFW LoRA (mandatory) | scripts/qwen_pose_test.py --mode t2i |
| Change pose of an existing character image (keep face/clothes) | ② Edit | scripts/qwen_pose_test.py --mode edit |
| Exact pose from the 3D pose library (136 poses) | ④ VNCCS PoseStudio | scripts/run_vnccs_ui.py (browser automation) |
| Do NOT use: a plain photo as pose reference — the model composites it as a second person or ignores it (tested) |
Outputs land under ./outputs/ (the scripts create directories as needed).
2. Setup — what this package contains and what to install
2.1 In this package
| Path | Content |
|---|---|
SKILL.md | this file |
scripts/ | qwen_pose_test.py (routes ①②), run_vnccs_ui.py (route ④), run_phase5.py + build_phase5_sheet.py (case re-run & comparison sheet), media_lock.py (shared media lock, bundled), validate_package.py (offline package integrity check) |
workflows/ | qwen21_t2i.json, qwen21_edit.json (official Qwen-Image 2.1 graphs), VNCCS_PoseStudio_QI2.1.json |
prompts/ | the 3 author prompts + .params.json (the exact local-test settings) |
references/ | pose_examples/ (L0/L1/L2 seaside examples), src_standing.png (default character for route ④) |
downloads/samples/ | author originals *_author.jpg (shower/massage/selfie) + phase5_meta.json (prompt, params, seed, complete graph JSONs) + the 3 raw ComfyUI graph files — used by scripts/run_phase5.py & build_phase5_sheet.py |
pose_library/local_user_poses/Uncategorized/ | 55 curated extra pose JSONs + previews — copy into ComfyUI's PoseLibrary/local_user_poses/Uncategorized/ after installing the node |
install/setup.md | full install guide (models, LoRAs, node, pose repos, commands) |
2.2 ComfyUI-side dependencies (see install/setup.md for exact commands)
- Base models (3 files) from HF
Comfy-Org/Qwen-Image-2.1:diffusion_models/qwen_image_2.1_int8_convrot.safetensors,text_encoders/qwen3vl_8b_int8_convrot.safetensors,vae/qwen_image_2.1_vae_bf16.safetensors— into the ComfyUI model dirs. - LoRAs (into ComfyUI
models/loras/):
| File (size) | Use | Source |
|---|---|---|
qwen2_1-femaledVaginus-nsfw-v1_3-fine_L22-31.safetensors (608M) | default: anatomy + pose, sharpest | Civitai model 2986844 — tawsLoRa "Qwen Image 2.1 - FemaledVaginus-NSFW" |
qwen2_1-femaledVaginus-nsfw-v1.3-fine.safetensors (608M) | same family, v1.3 | Civitai model 2986844 |
thesealpacas-nsfw-v2.safetensors (79.7M) | most reveal, "influencer" face drift | Civitai model 2958918 |
nsfw-posture-v3.safetensors (84M) | strongest pose/body emphasis | Civitai model 2988215 |
qwen21-nsfw-image-edit.safetensors (84M) | edit-route undress/pose changes | HF RunningHubAI/Qwen-Image-2.1-NSFW-Image-Edit (mirror of oreolove "Nude Edit"; original Civitai page delisted) |
VNCCS_QI2_PoseStudioV1.1.safetensors (159M) | only for route ④ | HF MIUProject/VNCCS_PoseStudio_QI2.1 (same repo as the workflow JSON) |
- VNCCS_Utils custom node: https://github.com/AHEKOT/ComfyUI_VNCCS_Utils →
clone into
ComfyUI/custom_nodes/, then restart ComfyUI once. - Pose library: 4 HuggingFace repos (the public catalog as of 2026-10-12):
Totemistyk/General_Poses_PoseStudio(50),Totemistyk/Ballet_PoseStudio(3 in manifest; the repo actually ships 58 — register + refresh, then copy this package's 55 curated extras intolocal_user_poses/Uncategorized/),MIUProject/VNCCS_PoseLibrary_Main(16),MIUProject/MySuperPoseRepo(12). Register:curl -X POST 127.0.0.1:8188/vnccs/pose_library/repositories/add -d '{"repo_id":"<owner>/<repo>"}'. Total after setup: 136. A repo refresh deletes local files not in the remote manifest — extra/ curated poses belong inPoseLibrary/local_user_poses/<Category>/(always listed, never auto-cleaned). Pose list API:GET /vnccs/pose_library/list. - Route ④ extras: any CDP Chrome (default
127.0.0.1:18800) +browser_client.py+ playwright. On the original host these live in~/.openclaw/tools/browser/; elsewhere pointrun_vnccs_ui.pyat an equivalent CDP endpoint (it only needsconnect_sync(playwright)to return a browser with one context — a minimal stand-in is fine). - media_lock: bundled in
scripts/; both scripts import it first from the package, then fall back to~/.openclaw/tools.
The base model is qwen_image_2.1_int8_convrot.safetensors — the same model
the Civitai authors of these LoRAs used, so their published prompts/params
transfer well. (Note: one of the three author samples actually ran on a
different base with 5 stacked LoRAs; we reproduced it with the single
thesealpacas-v2 LoRA on the convrot base — see Parameter provenance below.)
Download tips (verified): Civitai via the official CLI or
curl -H "Authorization: Bearer <token>" <file-url>; HuggingFace via
hf-mirror.com directly (no proxy — a proxy causes SSL_ERROR).
3. Route ① — T2I (the "author recipe", validated 2026-10-12)
3.1 Mandatory recipe — do not weaken silently
This recipe reproduces Civitai showcase-level results. All of the following are part of the recipe; a deviation changes the result and must be told to the user:
- Sampler
er_sde+ schedulerbeta(not euler/simple) - CFG 2.5 (the A1 reference; 2.5–4 works, CFG 1 starves the LoRA)
- Steps = the reference sample's value: 50 (A1 provenance, table below)
- Size 1152×1728 portrait 2:3 (
--width 1152 --height 1728); keep--resolution 1024(that flag feedsTextEncodeQwenImage21, it is not pixel size) - A LoRA is always on for route ①. Default:
qwen2_1-femaledVaginus-nsfw-v1_3-fine_L22-31.safetensors@ 1.0 - The prompt is the main lever — it must follow the author structure (§3.2) at the author's density (300–1500 characters, explicit terms). Short/keyword prompts and SFW-generic phrasing are what make output look bland.
- Pass the reference sample's seed when you claim "reproduction" (A1 seed = 80964). The harness default seed (424242) is fine for new creative runs but must not be labelled as the author's result.
Parameter provenance (source: scripts/run_phase5.py + each run's *.png.json):
| Run record | Steps | CFG | Seed | LoRA strength (local test) |
|---|---|---|---|---|
| A1 shower (primary reference) | 50 | 2.5 | 80964 | 1.0 |
| A2 massage (separate sample) | 30 | 2.5 | 80964 | 1.0 |
| B1 selfie | 50 | 4.0 | 124880844757561 | 0.8 (thesealpacas-v2) |
| C1 control | 50 | 2.5 | 80964 | no LoRA |
Preserve each sample's settings as a unit; do not mix one sample's prompt with another sample's params and present it as "the author recipe".
3.2 Prompt structure (copy the pattern, fill the scene)
The working prompts all contain, in this order — write all 7, no omissions:
- Camera: "A hyper-realistic photograph / low-angle shot / top-down overhead shot", lens and angle
- Subject: age, build, hair (color, wet/dry, placement)
- Pose: pick one from the pose ladder (§4) and spell out each limb (which leg bent, where the hands are, what the head/gaze does)
- Setting + lighting: "warm steamy light", "neon bokeh", "soft morning light through sheer curtains"
- Skin: "glistening", "visible pores", "natural skin texture", "slick oily sheen"
- Anatomy/reveal where desired — the LoRAs were trained on explicit terms (e.g. "labia majora ... innie distinctly visible"); generic words ("seductive") do almost nothing
- Finish: "8k resolution, cinematic lighting, candid 'caught in the moment' atmosphere, photorealistic anatomy"
Template (a real author prompt runs 300–1500 chars):
A hyper-realistic, {camera} shot {subject with age/build/hair state},
{one pose from §4, limb by limb}. {Setting + lighting}. Her skin is
{glistening/visible pores/slick oily sheen}. {explicit anatomy/reveal wording}.
{face/expression}. 8k resolution, cinematic lighting, candid "caught in the
moment" atmosphere, photorealistic anatomy.
Before writing, load a verified author prompt and rewrite it for your scene —
prompts/*.txt (+ matching .params.json). Writing from scratch is what makes
results look generic.
3.3 Deviations — tell, don't silently do it
If the user asks for a shorter prompt, a SFW-generic prompt, "no LoRA", fewer steps, or a different sampler — and if you (the agent) ever need to deviate from the recipe for any reason (model refuses a token, out-of-memory, etc.): say the expected cost out loud, show the evidence, and proceed only after confirmation. Never present a weakened run as "the recipe's result"; label what was changed next to the delivered image. Evidence to cite:
- True controlled experiment (single variable = LoRA):
C1(author prompt, 50 steps, seed 80964, no LoRA) vsA1(identical prompt/params + LoRA): no-LoRA still looks showcase-grade as a photograph, but the LoRA is what adds the skin/gloss/anatomy detail the author's images have. So "no LoRA" ≈ "good photograph, not the author's texture". - Visual demo (multiple variables: prompt + outfit + LoRA + seed):
references/pose_examples/01_seaside.png(L0, no LoRA) vs01b_seaside_lora.png(L1 + LoRA) vs06_l2_squat_lowangle.png(L2 + low angle + LoRA) — shows the ladder of how much the full recipe adds. It demonstrates the effect but does not isolate any single factor.
3.4 Known limits of the harness
- One LoRA per run.
qwen_pose_test.pyinjects a singleLoraLoaderModelOnly(node id 99) betweenUNETLoaderandKSampler. Civitai showcase workflows often stack 3–5 LoRAs; to reproduce those, chain extraLoraLoaderModelOnlynodes inbuild_workflow(). - No refine pass / no EasyCache. Authors add a 2× lanczos upscale + a 25-step
denoise 0.35pass andEasyCache;QwenImage21Cacheis broken on the original host (aimdo memory compile error) and the route ④ runner removes it. A/B runs matched the authors' look without the refine pass — add it only when a job needs extra sharpness.
4. Pose selection (the "boldness scale") — match the user's request
Read the user's request (clothes state, desired mood, scene) → pick a tier → give a concrete pose, not a vague one. "Bold" is three levers combined: pose openness × camera angle × clothing/wet state.
4.1 Tiers (English wording to use in route ① prompts)
- L0 closed / editorial (clothed SFW): standing with weight on one leg, hand on hip or in pocket; sitting on a chair, legs crossed at the ankles; leaning on a railing/wall, looking back over the shoulder; mid-stride walking.
- L1 open (swimwear / wet / relaxed): crouching with knees apart, hands on the floor; sitting on the floor with knees opened to one side; lying on her side in bed, propped on an elbow, looking back over the shoulder; kneeling with hands behind; reclining on a sofa with legs open.
- L2 bold (author style — always pair with the NSFW LoRA + low angle): standing with legs apart, shot from a low angle looking up; lying prone with hips lifted toward the camera; sitting with legs wide open, leaning forward on the elbows; kneeling on one knee with the other leg extended to the side, torso arched back; lying on her back with legs open, one hand behind the head.
- L3 extreme / cropped: extreme low angle looking up between open legs; overhead shot lying flat with legs open; cropped framing (waist-up or mid-thigh) to emphasize the pose.
4.2 Suggestion table (user request → tier → concrete pose)
| User asks for (examples) | Tier | Route ④ library pose families (--list-poses names) | Route ① prompt wording |
|---|---|---|---|
| 全着装、自然/编辑感 (standing, portrait, office/street) | L0 | Standing / Sitting / Walking / Close Up | standing with weight on one leg, hand in pocket; seated on a chair, legs crossed at the ankles |
| 泳装/湿身/海滩/浴室 (swimwear, wet, relaxed) | L1 | Squatting / Kneeling / Laying Back | crouching with knees apart, hands on the floor, looking back over the shoulder |
| 大胆/NSFW (nude + LoRA, low angle, "author style") | L2 | Kneeling / Laying Back / Prone / Splits / Crawling / Dancing on knees | standing with legs apart from a low angle; prone with hips lifted toward the camera; seated wide, leaning forward on elbows |
| 极端/特写构图 (crop, extreme low, overhead) | L3 | Splits / any L2 family + crop framing | extreme low angle looking up between open legs; overhead, lying flat with legs open |
Rules:
- Decide the reveal first: clothed → L0; swimwear/wet → L1; nude + NSFW LoRA → L2. Pairing the LoRA with an L0 pose is the most common cause of "bland" NSFW output (observed, not a proven law).
- Camera angle amplifies the pose (empirical heuristic): low angle ≈ +1 boldness, overhead ≈ +1. "Low angle + L1" ≈ "eye level + L2" — this is why the author's shower/massage shots read as bold despite simple poses.
- One pose per prompt, limb by limb; two competing pose descriptions get blended.
- When the user names a pose they saw somewhere, search the library first:
python3 scripts/run_vnccs_ui.py --list-poses(136 entries with file paths).
5. Route ② — Edit (pose change with identity preservation)
python3 scripts/qwen_pose_test.py \
--mode edit --name pose_change --input /absolute/base.png \
--prompt "change her pose to kneeling on one knee, hands on hips, keep face hair and outfit" \
--cfg 3 --sampler er_sde --scheduler beta --steps 20 \
--out outputs/pose_change.png
CFG 3 is more stable for edit mode. SFW instruction prompts keep NSFW LoRAs from
triggering; add --lora qwen21-nsfw-image-edit.safetensors only when undressing.
6. Route ④ — VNCCS PoseStudio (exact pose from the 3D library)
The VNCCS_PoseStudio node needs the ComfyUI web frontend for its 3D "live
capture"; the headless API fails with "Live capture timed out". So the runner
drives a CDP browser: load the official graph → set character image + pose
JSON → queue → collect outputs from disk. ~60–90 s each.
# list all 136 poses with resolved file paths
python3 scripts/run_vnccs_ui.py --list-poses
# run one pose on a character image
python3 scripts/run_vnccs_ui.py --pose "squatting leaning back" \
[--char /absolute/face.png] [--timeout 900]
--posetakes the name/slug case-insensitively (crawling,Squatting Leaning Back,arabesque). 9 names exist in more than one repository (Standing A,CloseUp A, …); qualify with<repo>/<category>/<name>(exact keys printed by--list-poses, e.g.miuproject_vnccs_poselibrary_main/standing/standing_a).- The runner re-indexes the pose library on every call — newly downloaded poses
are usable immediately. Each run writes
<pose>_<stamp>.meta.jsonnext to the outputs and never clobbers previous results (unique comfy prefix per run). - Output:
./outputs/vnccs_ui/(override withVNCCS_UI_OUT). The 3D doll is a bare MakeHuman mannequin — nude prompts + pose transfer can produce nude output (expected: the model reads the doll's state). - Pose fidelity caveat: each pose JSON carries its own
cameraParams(yaw/pitch/zoom); the generated image inherits that viewpoint. Poses whose shape only reads from another angle (e.g. a true arabesque's extended back leg) come out front-facing and ambiguous — rotate the doll in the UI and re-run, or pick a pose that reads from the front.
7. Environment & Safety
- ComfyUI as a service (original host:
systemctl --user status|restart comfyui.service). After installing new custom nodes, one restart is required. - Both route scripts take the bundled media lock in shared mode
(
media_lock(exclusive=False, wait_timeout=...)) so they don't fight video jobs on a shared machine; route ④ wraps the whole browser run in it. - On the original host, video tasks hold the lock exclusively (~06:45 / 09:00 / 11:30 openclaw windows); expect waits, not conflicts.
- If a graph includes
QwenImage21Cacheand the host errors on it (aimdo memory compile error), remove the node and rewire LoRA → KSampler (the route ④ runner does this automatically in the browser). - Never modify the workflow JSONs in this package's
workflows/while a run is in flight; the harness works on in-memory copies anyway. - A 50-step 1152×1728 run takes ~200–400 s on the int8 model; a 30-step edit run ~60–120 s.
8. Verification
- Check the harness printed
ok: trueand the output file is non-empty. - Visually inspect with an image-reading tool (composition, pose match, anatomy, face). For pose-transfer runs, compare against the reference.
- For reproductions of published images, compare side-by-side with the author
original (
downloads/samples/*_author.jpg; comparison-sheet example:scripts/build_phase5_sheet.py). - Record prompt/seed/steps/LoRA in the run's
*.jsonmeta file (harnesses write one automatically for routes ①②④). - When a recipe deviation was made (weaker prompt, no LoRA, fewer steps, default seed), label the output and state the deviation next to it in the delivery message.
Last full verification: 2026-10-12 — route ① (4 author-prompt reproductions),
route ② (9/9 pose edits with identity preserved), route ④ (6 pose runs:
crawling, kneeling side, leaning back, sitting side, squatting leaning back,
arabesque — the last one verified for output only, pose-shape match unverified),
pose index count 136 == GET /vnccs/pose_library/list, pose-ladder A/B images
in references/pose_examples/.
レビュー
まだレビューはありません。使ってみた感想をお寄せください。