From e2c4ecb8533a0e34ac3c8b72de3b905b4ea49961 Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Sat, 27 Jun 2026 23:51:42 +0200 Subject: [PATCH] Add scene-chain adapter layout workflow --- README.md | 5 + .../scene_chain_adapter_layout_workflow.json | 960 ++++++++++++++++++ 2 files changed, 965 insertions(+) create mode 100644 examples/scene_chain_adapter_layout_workflow.json diff --git a/README.md b/README.md index 2d4033a..aef3d6a 100644 --- a/README.md +++ b/README.md @@ -157,6 +157,11 @@ as one long chain: A dedicated v2 scene-chain Insta/OF branching demo is available at `examples/scene_chain_insta_of_branching_workflow.json`. +A proposed adapter-style v2 layout is available at +`examples/scene_chain_adapter_layout_workflow.json`. It keeps the main scene +chain in one center lane and parks layer-specific option nodes beside the layer +they override. + ## Loop Nodes `SxCP For Loop Start` and `SxCP For Loop End` provide a lightweight replacement diff --git a/examples/scene_chain_adapter_layout_workflow.json b/examples/scene_chain_adapter_layout_workflow.json new file mode 100644 index 0000000..85e8a46 --- /dev/null +++ b/examples/scene_chain_adapter_layout_workflow.json @@ -0,0 +1,960 @@ +{ + "last_node_id": 45, + "last_link_id": 56, + "nodes": [ + { + "id": 1, + "type": "SxCPGlobalSeed", + "pos": [-1900, -1040], + "size": [300, 90], + "flags": {}, + "order": 0, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "seed", "type": "INT", "links": null, "slot_index": 0}, + {"name": "seed_config", "type": "STRING", "links": [1], "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPGlobalSeed"}, + "widgets_values": [20260821] + }, + { + "id": 2, + "type": "SxCPSceneStart", + "pos": [-1260, -600], + "size": [360, 250], + "flags": {}, + "order": 1, + "mode": 0, + "inputs": [ + {"name": "seed_config", "type": "STRING", "link": 1} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [2], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneStart"}, + "widgets_values": [1, 41, 20260821, "raw", "provocative_erotic", "random", "balanced", "sxcppnl7", true] + }, + { + "id": 3, + "type": "SxCPSceneCastOptions", + "pos": [-840, -1040], + "size": [340, 180], + "flags": {}, + "order": 2, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "cast_options", "type": "STRING", "links": [11], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneCastOptions"}, + "widgets_values": ["replace", "mixed_couple", 1, 1, "woman_a", "none"] + }, + { + "id": 4, + "type": "SxCPSceneCast", + "pos": [-840, -600], + "size": [360, 150], + "flags": {}, + "order": 3, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 2}, + {"name": "cast_options", "type": "STRING", "link": 11} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [12], "slot_index": 0}, + {"name": "cast_config", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPSceneCast"}, + "widgets_values": ["mixed_couple", 1, 1, "woman_a", "none"] + }, + { + "id": 5, + "type": "SxCPSceneCharacterOptions", + "pos": [-420, -1040], + "size": [390, 260], + "flags": {}, + "order": 4, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "character_options", "type": "STRING", "links": [14], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneCharacterOptions"}, + "widgets_values": ["replace", "medium", "visible", "enabled", 0.45, 0.35, 0.85, "creator remains visually central"] + }, + { + "id": 6, + "type": "SxCPSceneCharacter", + "pos": [-420, -760], + "size": [390, 360], + "flags": {}, + "order": 5, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 12}, + {"name": "character_options", "type": "STRING", "link": 14}, + {"name": "seed_options", "type": "STRING", "link": 9} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [15], "slot_index": 0}, + {"name": "character_cast", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "character_slot", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 3}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 4} + ], + "properties": {"Node name for S&R": "SxCPSceneCharacter"}, + "widgets_values": [true, "woman", "A", -1, "25-year-old adult", "random", "random", "random", "medium", true, 0.45, "visible", -1.0, -1.0] + }, + { + "id": 7, + "type": "SxCPSceneCharacter", + "pos": [-420, -310], + "size": [390, 360], + "flags": {}, + "order": 6, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 15}, + {"name": "seed_options", "type": "STRING", "link": 13} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [16], "slot_index": 0}, + {"name": "character_cast", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "character_slot", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 3}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 4} + ], + "properties": {"Node name for S&R": "SxCPSceneCharacter"}, + "widgets_values": [true, "man", "A", -1, "40-year-old adult", "random", "random", "average", "compact", true, 0.35, "visible", -1.0, -1.0] + }, + { + "id": 8, + "type": "SxCPSceneWardrobeOptions", + "pos": [40, -1040], + "size": [410, 320], + "flags": {}, + "order": 7, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "wardrobe_options", "type": "STRING", "links": [18], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneWardrobeOptions"}, + "widgets_values": ["replace", "woman", "A", "minimal", "explicit_nude", true, "black lace lingerie set with stockings and garter details", "", "thin necklace, small earrings", "softcore outfit only; hardcore branch should not repeat outfit tokens"] + }, + { + "id": 9, + "type": "SxCPSceneWardrobe", + "pos": [40, -760], + "size": [390, 250], + "flags": {}, + "order": 8, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 16}, + {"name": "wardrobe_options", "type": "STRING", "link": 18}, + {"name": "seed_options", "type": "STRING", "link": 17} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [19], "slot_index": 0}, + {"name": "character_cast", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPSceneWardrobe"}, + "widgets_values": [true, "woman", "A", "minimal", "black lace lingerie set with stockings and garter details", "fully nude", ""] + }, + { + "id": 10, + "type": "SxCPSceneWardrobeOptions", + "pos": [40, 10], + "size": [410, 290], + "flags": {}, + "order": 9, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "wardrobe_options", "type": "STRING", "links": [20], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneWardrobeOptions"}, + "widgets_values": ["replace", "man", "A", "full", "dressed", true, "half-open black shirt with dark trousers", "shirt open, lower body mostly off-camera when explicit action is framed", "", "partner outfit stays simpler than creator outfit"] + }, + { + "id": 11, + "type": "SxCPSceneWardrobe", + "pos": [40, -360], + "size": [390, 250], + "flags": {}, + "order": 10, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 19}, + {"name": "wardrobe_options", "type": "STRING", "link": 20}, + {"name": "seed_options", "type": "STRING", "link": 21} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [22], "slot_index": 0}, + {"name": "character_cast", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPSceneWardrobe"}, + "widgets_values": [true, "man", "A", "full", "half-open black shirt with dark trousers", "shirt open, lower body mostly off-camera when explicit action is framed", ""] + }, + { + "id": 12, + "type": "SxCPSceneLocationLayoutOptions", + "pos": [500, -1040], + "size": [410, 250], + "flags": {}, + "order": 11, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "location_options", "type": "STRING", "links": [23], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneLocationLayoutOptions"}, + "widgets_values": ["replace", "near desk edge, laptop corner, chair back", "warm work desks, laptop tables, glass partition seams", "repeated desk rows, plants, tall windows", "semi_public", "semi_public", "coworking lounge layout that survives camera rerolls"] + }, + { + "id": 13, + "type": "SxCPSceneLocation", + "pos": [500, -760], + "size": [410, 210], + "flags": {}, + "order": 12, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 22}, + {"name": "location_options", "type": "STRING", "link": 23}, + {"name": "seed_options", "type": "STRING", "link": 24} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [25], "slot_index": 0}, + {"name": "location_config", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPSceneLocation"}, + "widgets_values": [true, "replace", "custom_only", "coworking lounge with tall windows, warm desks, glass partitions, plants, and polished office-lounge surfaces", "shared location base"] + }, + { + "id": 14, + "type": "SxCPSceneSetDressingOptions", + "pos": [500, -170], + "size": [410, 230], + "flags": {}, + "order": 13, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "set_options", "type": "STRING", "links": [26], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneSetDressingOptions"}, + "widgets_values": ["replace", "laptop corner and polished tabletop line", "desks, chairs, glass seams, plant rows", "phone, coffee cup, folded jacket", "warm wood, glass reflections, muted office light", "keep props beside or behind the action, not blocking the subject"] + }, + { + "id": 15, + "type": "SxCPSceneSetDressing", + "pos": [500, -470], + "size": [410, 250], + "flags": {}, + "order": 14, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 25}, + {"name": "set_options", "type": "STRING", "link": 26} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [27], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneSetDressing"}, + "widgets_values": [true, "", "", "", ""] + }, + { + "id": 16, + "type": "SxCPSceneBlockingOptions", + "pos": [960, -1040], + "size": [410, 270], + "flags": {}, + "order": 15, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "blocking_options", "type": "STRING", "links": [28], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneBlockingOptions"}, + "widgets_values": ["replace", "custom", "woman close to the desk edge with room depth behind her", "man close enough for the hardcore branch but not forced into the softcore pose", "three_quarter", "foreground", "subjects dominate the frame while the coworking pattern remains visible", "shared blocking base before branch-specific action"] + }, + { + "id": 17, + "type": "SxCPSceneBlocking", + "pos": [960, -760], + "size": [410, 250], + "flags": {}, + "order": 16, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 27}, + {"name": "blocking_options", "type": "STRING", "link": 28} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [29], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneBlocking"}, + "widgets_values": [true, "custom", "", "", ""] + }, + { + "id": 18, + "type": "SxCPSceneActionOptions", + "pos": [960, -170], + "size": [410, 190], + "flags": {}, + "order": 17, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "action_options", "type": "STRING", "links": [30], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneActionOptions"}, + "widgets_values": ["replace", "softcore", "softcore_tease", "no_change", "soft branch starts as an outfit tease; hardcore branch replaces action through the action filter"] + }, + { + "id": 19, + "type": "SxCPSceneAction", + "pos": [960, -470], + "size": [410, 210], + "flags": {}, + "order": 18, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 29}, + {"name": "action_options", "type": "STRING", "link": 30}, + {"name": "seed_options", "type": "STRING", "link": 31} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [32], "slot_index": 0}, + {"name": "hardcore_position_config", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPSceneAction"}, + "widgets_values": [true, "regular", "no_change", ""] + }, + { + "id": 20, + "type": "SxCPScenePerformanceOptions", + "pos": [1420, -1040], + "size": [410, 250], + "flags": {}, + "order": 19, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "performance_options", "type": "STRING", "links": [33], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPScenePerformanceOptions"}, + "widgets_values": ["replace", "enabled", "fixed", 0.55, "camera", "on_body", "posed", "controlled creator-camera expression"] + }, + { + "id": 21, + "type": "SxCPScenePerformance", + "pos": [1420, -760], + "size": [410, 180], + "flags": {}, + "order": 20, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 32}, + {"name": "performance_options", "type": "STRING", "link": 33} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [34], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPScenePerformance"}, + "widgets_values": [true, "fixed", 0.55, ""] + }, + { + "id": 22, + "type": "SxCPSceneCameraOptions", + "pos": [1420, -150], + "size": [410, 170], + "flags": {}, + "order": 21, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "camera_options", "type": "STRING", "links": [35], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneCameraOptions"}, + "widgets_values": ["replace", "from_camera_config", true, "camera should adapt to the location layout instead of replacing it"] + }, + { + "id": 23, + "type": "SxCPSceneCamera", + "pos": [1420, -530], + "size": [410, 330], + "flags": {}, + "order": 22, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 34}, + {"name": "camera_options", "type": "STRING", "link": 35} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [36], "slot_index": 0}, + {"name": "camera_config", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPSceneCamera"}, + "widgets_values": [true, "standard", "three_quarter", "eye_level", "auto", "auto", "vertical_story", "auto", "strong", "compact", ""] + }, + { + "id": 24, + "type": "SxCPSceneCompositionOptions", + "pos": [1880, -1040], + "size": [410, 200], + "flags": {}, + "order": 23, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "composition_options", "type": "STRING", "links": [37], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneCompositionOptions"}, + "widgets_values": ["replace", "body", "three_quarter", "clear", "subject remains dominant while desk rows and glass seams prove the location"] + }, + { + "id": 25, + "type": "SxCPSceneComposition", + "pos": [1880, -760], + "size": [410, 210], + "flags": {}, + "order": 24, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 36}, + {"name": "composition_options", "type": "STRING", "link": 37} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [38], "slot_index": 0}, + {"name": "composition_config", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPSceneComposition"}, + "widgets_values": [true, "replace", "no_outfit_check", "", ""] + }, + { + "id": 26, + "type": "SxCPSceneLightingOptions", + "pos": [1880, -150], + "size": [410, 220], + "flags": {}, + "order": 25, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "lighting_options", "type": "STRING", "links": [39], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneLightingOptions"}, + "widgets_values": ["replace", "window_light", "soft", "medium", "warm", "evening", "soft office-window light with practical lamps in the background"] + }, + { + "id": 27, + "type": "SxCPSceneLighting", + "pos": [1880, -470], + "size": [410, 210], + "flags": {}, + "order": 26, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 38}, + {"name": "lighting_options", "type": "STRING", "link": 39} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [40], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneLighting"}, + "widgets_values": [true, "auto", "auto", "auto", "auto", ""] + }, + { + "id": 28, + "type": "SxCPSceneBranchOptions", + "pos": [2340, -1040], + "size": [390, 180], + "flags": {}, + "order": 27, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "branch_options", "type": "STRING", "links": [41, 44, 47], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneBranchOptions"}, + "widgets_values": ["replace", "both", "same_creator_same_room", "hybrid", "same cast, same coworking room, different explicitness"] + }, + { + "id": 29, + "type": "SxCPSceneBranchPair", + "pos": [2340, -600], + "size": [340, 130], + "flags": {}, + "order": 28, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 40}, + {"name": "branch_options", "type": "STRING", "link": 41}, + {"name": "seed_options", "type": "STRING", "link": 42} + ], + "outputs": [ + {"name": "softcore_scene", "type": "STRING", "links": [43], "slot_index": 0}, + {"name": "hardcore_scene", "type": "STRING", "links": [45], "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPSceneBranchPair"}, + "widgets_values": ["same_creator_same_room", "hybrid"] + }, + { + "id": 30, + "type": "SxCPSoftcoreBranchOptions", + "pos": [2760, -760], + "size": [390, 260], + "flags": {}, + "order": 29, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 43}, + {"name": "branch_options", "type": "STRING", "link": 44} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [49], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSoftcoreBranchOptions"}, + "widgets_values": ["same_as_hardcore", "lingerie_tease", true, 0.45, "from_camera_config", "compact", ""] + }, + { + "id": 31, + "type": "SxCPHardcoreActionFilter", + "pos": [2340, -310], + "size": [360, 300], + "flags": {}, + "order": 30, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "hardcore_position_config", "type": "STRING", "links": [46], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1} + ], + "properties": {"Node name for S&R": "SxCPHardcoreActionFilter"}, + "widgets_values": ["penetration_only", false, false, true, false, false, false, false, false, false, false] + }, + { + "id": 32, + "type": "SxCPHardcoreBranchOptions", + "pos": [2760, -350], + "size": [390, 360], + "flags": {}, + "order": 31, + "mode": 0, + "inputs": [ + {"name": "scene", "type": "STRING", "link": 45}, + {"name": "hardcore_position_config", "type": "STRING", "link": 46}, + {"name": "branch_options", "type": "STRING", "link": 47}, + {"name": "seed_options", "type": "STRING", "link": 48} + ], + "outputs": [ + {"name": "scene", "type": "STRING", "links": [50], "slot_index": 0}, + {"name": "hardcore_position_config", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 3} + ], + "properties": {"Node name for S&R": "SxCPHardcoreBranchOptions"}, + "widgets_values": ["couple", 1, 1, "hardcore", true, 0.85, "explicit_nude", "from_camera_config", "compact", "balanced", ""] + }, + { + "id": 33, + "type": "SxCPScenePairOutput", + "pos": [3220, -600], + "size": [430, 290], + "flags": {}, + "order": 32, + "mode": 0, + "inputs": [ + {"name": "softcore_scene", "type": "STRING", "link": 49}, + {"name": "hardcore_scene", "type": "STRING", "link": 50} + ], + "outputs": [ + {"name": "softcore_prompt", "type": "STRING", "links": [53], "slot_index": 0}, + {"name": "hardcore_prompt", "type": "STRING", "links": [54], "slot_index": 1}, + {"name": "softcore_negative_prompt", "type": "STRING", "links": null, "slot_index": 2}, + {"name": "hardcore_negative_prompt", "type": "STRING", "links": null, "slot_index": 3}, + {"name": "softcore_caption", "type": "STRING", "links": null, "slot_index": 4}, + {"name": "hardcore_caption", "type": "STRING", "links": null, "slot_index": 5}, + {"name": "shared_descriptor", "type": "STRING", "links": null, "slot_index": 6}, + {"name": "metadata_json", "type": "STRING", "links": [51, 52], "slot_index": 7}, + {"name": "scene_metadata_json", "type": "STRING", "links": null, "slot_index": 8} + ], + "properties": {"Node name for S&R": "SxCPScenePairOutput"}, + "widgets_values": [] + }, + { + "id": 34, + "type": "SxCPKrea2Formatter", + "pos": [3720, -760], + "size": [390, 270], + "flags": {}, + "order": 33, + "mode": 0, + "inputs": [ + {"name": "metadata_json", "type": "STRING", "link": 51} + ], + "outputs": [ + {"name": "krea_prompt", "type": "STRING", "links": null, "slot_index": 0}, + {"name": "negative_prompt", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "krea_softcore_prompt", "type": "STRING", "links": [55], "slot_index": 2}, + {"name": "krea_hardcore_prompt", "type": "STRING", "links": [56], "slot_index": 3}, + {"name": "softcore_negative_prompt", "type": "STRING", "links": null, "slot_index": 4}, + {"name": "hardcore_negative_prompt", "type": "STRING", "links": null, "slot_index": 5}, + {"name": "method", "type": "STRING", "links": null, "slot_index": 6}, + {"name": "route_trace_json", "type": "STRING", "links": null, "slot_index": 7} + ], + "properties": {"Node name for S&R": "SxCPKrea2Formatter"}, + "widgets_values": ["", "metadata_json", "auto", "balanced", "preserve", false, "", ""] + }, + { + "id": 35, + "type": "SxCPCaptionNaturalizer", + "pos": [3720, -370], + "size": [390, 240], + "flags": {}, + "order": 34, + "mode": 0, + "inputs": [ + {"name": "metadata_json", "type": "STRING", "link": 52} + ], + "outputs": [ + {"name": "natural_caption", "type": "STRING", "links": null, "slot_index": 0}, + {"name": "method", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "route_trace_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPCaptionNaturalizer"}, + "widgets_values": ["", "metadata_json", "training_dense", "balanced", "drop_style_tail", "sxcppnl7", true, "auto"] + }, + { + "id": 36, + "type": "SxCPPreviewAnyAsText", + "pos": [4200, -900], + "size": [420, 180], + "flags": {}, + "order": 35, + "mode": 0, + "inputs": [ + {"name": "value", "type": "*", "link": 53} + ], + "outputs": [ + {"name": "text", "type": "STRING", "links": null, "slot_index": 0} + ], + "properties": {"Node name for S&R": "SxCPPreviewAnyAsText"}, + "widgets_values": ["Raw softcore prompt preview", "auto", 30000] + }, + { + "id": 37, + "type": "SxCPPreviewAnyAsText", + "pos": [4200, -690], + "size": [420, 180], + "flags": {}, + "order": 36, + "mode": 0, + "inputs": [ + {"name": "value", "type": "*", "link": 54} + ], + "outputs": [ + {"name": "text", "type": "STRING", "links": null, "slot_index": 0} + ], + "properties": {"Node name for S&R": "SxCPPreviewAnyAsText"}, + "widgets_values": ["Raw hardcore prompt preview", "auto", 30000] + }, + { + "id": 38, + "type": "SxCPPreviewAnyAsText", + "pos": [4200, -480], + "size": [420, 180], + "flags": {}, + "order": 37, + "mode": 0, + "inputs": [ + {"name": "value", "type": "*", "link": 55} + ], + "outputs": [ + {"name": "text", "type": "STRING", "links": null, "slot_index": 0} + ], + "properties": {"Node name for S&R": "SxCPPreviewAnyAsText"}, + "widgets_values": ["Krea softcore prompt preview", "auto", 30000] + }, + { + "id": 39, + "type": "SxCPPreviewAnyAsText", + "pos": [4200, -270], + "size": [420, 180], + "flags": {}, + "order": 38, + "mode": 0, + "inputs": [ + {"name": "value", "type": "*", "link": 56} + ], + "outputs": [ + {"name": "text", "type": "STRING", "links": null, "slot_index": 0} + ], + "properties": {"Node name for S&R": "SxCPPreviewAnyAsText"}, + "widgets_values": ["Krea hardcore prompt preview", "auto", 30000] + }, + { + "id": 40, + "type": "Note", + "pos": [-1900, -470], + "size": [560, 260], + "flags": {}, + "order": 39, + "mode": 0, + "inputs": [], + "outputs": [], + "properties": {}, + "widgets_values": [ + "Proposed adapter layout: the center row is the mental-model chain (scene start -> cast -> characters -> wardrobe -> location -> set -> blocking -> action -> performance -> camera -> composition -> lighting -> branch). Adapter nodes sit above/below the layer they override. The seed adapter bus on the left is chained once and reused by character, wardrobe, location, action, and hardcore branch nodes." + ] + }, + { + "id": 41, + "type": "SxCPSceneLayerSeedOptions", + "pos": [-1900, -900], + "size": [340, 170], + "flags": {}, + "order": 40, + "mode": 0, + "inputs": [], + "outputs": [ + {"name": "seed_options", "type": "STRING", "links": [3], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneLayerSeedOptions"}, + "widgets_values": ["character", "fixed", 20260831, "person", "same_for_all_rows", "replace_layer"] + }, + { + "id": 42, + "type": "SxCPSceneLayerSeedOptions", + "pos": [-1900, -710], + "size": [340, 170], + "flags": {}, + "order": 41, + "mode": 0, + "inputs": [ + {"name": "seed_options", "type": "STRING", "link": 3} + ], + "outputs": [ + {"name": "seed_options", "type": "STRING", "links": [4], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneLayerSeedOptions"}, + "widgets_values": ["wardrobe", "fixed", 20260832, "content", "same_for_all_rows", "add"] + }, + { + "id": 43, + "type": "SxCPSceneLayerSeedOptions", + "pos": [-1540, -900], + "size": [340, 170], + "flags": {}, + "order": 42, + "mode": 0, + "inputs": [ + {"name": "seed_options", "type": "STRING", "link": 4} + ], + "outputs": [ + {"name": "seed_options", "type": "STRING", "links": [5], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneLayerSeedOptions"}, + "widgets_values": ["location", "fixed", 20260833, "scene", "same_for_all_rows", "add"] + }, + { + "id": 44, + "type": "SxCPSceneLayerSeedOptions", + "pos": [-1540, -710], + "size": [340, 170], + "flags": {}, + "order": 43, + "mode": 0, + "inputs": [ + {"name": "seed_options", "type": "STRING", "link": 5} + ], + "outputs": [ + {"name": "seed_options", "type": "STRING", "links": [6], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneLayerSeedOptions"}, + "widgets_values": ["action", "fixed", 20260834, "pose", "same_for_all_rows", "add"] + }, + { + "id": 45, + "type": "SxCPSceneLayerSeedOptions", + "pos": [-1540, -520], + "size": [340, 170], + "flags": {}, + "order": 44, + "mode": 0, + "inputs": [ + {"name": "seed_options", "type": "STRING", "link": 6} + ], + "outputs": [ + {"name": "seed_options", "type": "STRING", "links": [9, 13, 17, 21, 24, 31, 42, 48], "slot_index": 0}, + {"name": "summary", "type": "STRING", "links": null, "slot_index": 1}, + {"name": "metadata_json", "type": "STRING", "links": null, "slot_index": 2} + ], + "properties": {"Node name for S&R": "SxCPSceneLayerSeedOptions"}, + "widgets_values": ["hardcore_branch", "fixed", 20260835, "pose", "same_for_all_rows", "add"] + } + ], + "links": [ + [1, 1, 1, 2, 0, "STRING"], + [2, 2, 0, 4, 0, "STRING"], + [3, 41, 0, 42, 0, "STRING"], + [4, 42, 0, 43, 0, "STRING"], + [5, 43, 0, 44, 0, "STRING"], + [6, 44, 0, 45, 0, "STRING"], + [9, 45, 0, 6, 2, "STRING"], + [11, 3, 0, 4, 1, "STRING"], + [12, 4, 0, 6, 0, "STRING"], + [13, 45, 0, 7, 1, "STRING"], + [14, 5, 0, 6, 1, "STRING"], + [15, 6, 0, 7, 0, "STRING"], + [16, 7, 0, 9, 0, "STRING"], + [17, 45, 0, 9, 2, "STRING"], + [18, 8, 0, 9, 1, "STRING"], + [19, 9, 0, 11, 0, "STRING"], + [20, 10, 0, 11, 1, "STRING"], + [21, 45, 0, 11, 2, "STRING"], + [22, 11, 0, 13, 0, "STRING"], + [23, 12, 0, 13, 1, "STRING"], + [24, 45, 0, 13, 2, "STRING"], + [25, 13, 0, 15, 0, "STRING"], + [26, 14, 0, 15, 1, "STRING"], + [27, 15, 0, 17, 0, "STRING"], + [28, 16, 0, 17, 1, "STRING"], + [29, 17, 0, 19, 0, "STRING"], + [30, 18, 0, 19, 1, "STRING"], + [31, 45, 0, 19, 2, "STRING"], + [32, 19, 0, 21, 0, "STRING"], + [33, 20, 0, 21, 1, "STRING"], + [34, 21, 0, 23, 0, "STRING"], + [35, 22, 0, 23, 1, "STRING"], + [36, 23, 0, 25, 0, "STRING"], + [37, 24, 0, 25, 1, "STRING"], + [38, 25, 0, 27, 0, "STRING"], + [39, 26, 0, 27, 1, "STRING"], + [40, 27, 0, 29, 0, "STRING"], + [41, 28, 0, 29, 1, "STRING"], + [42, 45, 0, 29, 2, "STRING"], + [43, 29, 0, 30, 0, "STRING"], + [44, 28, 0, 30, 1, "STRING"], + [45, 29, 1, 32, 0, "STRING"], + [46, 31, 0, 32, 1, "STRING"], + [47, 28, 0, 32, 2, "STRING"], + [48, 45, 0, 32, 3, "STRING"], + [49, 30, 0, 33, 0, "STRING"], + [50, 32, 0, 33, 1, "STRING"], + [51, 33, 7, 34, 0, "STRING"], + [52, 33, 7, 35, 0, "STRING"], + [53, 33, 0, 36, 0, "STRING"], + [54, 33, 1, 37, 0, "STRING"], + [55, 34, 2, 38, 0, "STRING"], + [56, 34, 3, 39, 0, "STRING"] + ], + "groups": [ + { + "title": "Seed Adapter Bus", + "bounding": [-1930, -1090, 760, 780], + "color": "#4d6b8f", + "font_size": 24 + }, + { + "title": "Main Scene Chain", + "bounding": [-1290, -810, 3610, 900], + "color": "#3f789e", + "font_size": 24 + }, + { + "title": "Layer Option Adapters", + "bounding": [-870, -1090, 3220, 1180], + "color": "#6b5a8f", + "font_size": 24 + }, + { + "title": "Softcore/Hardcore Branch Adapters", + "bounding": [2310, -1090, 880, 1160], + "color": "#8a5a5a", + "font_size": 24 + }, + { + "title": "Pair Output, Formatters, Persistent Text Previews", + "bounding": [3190, -950, 1470, 900], + "color": "#4d7f45", + "font_size": 24 + } + ], + "config": {}, + "extra": { + "ds": { + "scale": 0.52, + "offset": [1290, 665] + } + }, + "version": 0.4 +}