Character Direction Studio
A whole direction department in one node — it writes the brief, you run the sampler
- image
- camera_desc
- light_desc
- settings_out
- positive_prompt
- negative_prompt
- director_prompt
- pose_guide
- metadata_json
Ask any artist who keeps losing character consistency and they'll tell you the same thing: the prompt is where it falls apart. MKRCharacterCustomizer - "Character Direction Studio" in the UI - is the node that industrializes prompt writing for character shots. You feed it 3D camera and light positions plus a handful of creative choices, and it returns a complete positive/negative prompt pair, camera and light descriptions, a pose-guide image, and a "director sheet" that lays it all out visually. It doesn't run any inference itself - it's a direction tool that hands your sampler a better brief.
From MKRShift_Nodes by criskb. Install via ComfyUI Manager (search "MKRShift_Nodes") or git clone https://github.com/criskb/MKRShift_Nodes into custom_nodes/, restart. It ships a custom frontend (WEB_DIRECTORY) for a nicer UI, and needs no models.
How it works
The node interprets settings_json (a JSON bundle describing camera position, light position, and character params) against a coordinate system and distance/height/side bands. From those it derives human-readable descriptions: camera gets "low angle viewpoint, orbit 245 deg, 85mm lens," light gets "high key light, controlled fill." Then it assembles the positive prompt from your subject/outfit prompts, the chosen style_preset, shot type, mood, and optional quality tags; the negative prompt from your base plus style negatives. It renders a pose_guide image (a stick-blockout at capture_w × capture_h) and a director_sheet (pose + scene map + both prompts) as review output.
The inputs that matter
settings_json(required) - camera/light/params. This is the "studio" part; it's how the node knows your lighting intent.model_path(required, can be empty) - shown on the sheet for reference, so you remember which model the brief was written for.style_preset- the five presets (cinematic_photoreal, editorial_fashion, stylized_anime, fantasy_concept_art, game_character_sheet) change the prompt's flavor and negatives.shot_type,mood,add_quality_tags- the creative dials.
Outputs: positive_prompt, negative_prompt, director_prompt (both, joined), camera_desc, light_desc, settings_out, pose_guide, the image (director sheet), and metadata_json recording the full setup.
The straight talk
Wire its prompt outputs into a standard CLIP Text Encode and you're done - this is the one node in the pack that directly feeds the sampler. Its real value is reproducibility: the same settings JSON gives the same brief every time, so your character shots stop drifting because you rewrote the prompt by hand at 2am. It won't fix identity drift by itself - for that you still want a LoRA or an edit-model workflow (see the character-consistency playbook) - but a stable, detailed prompt is the foundation that makes every other consistency tool work better.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| settings_json | STRING | {} | — |
| model_path | STRING | — | |
| capture_w | INT | 1024256–2048 | — |
| capture_h | INT | 1024256–2048 | — |
| subject_promptopt | STRING | hero character design | — |
| outfit_promptopt | STRING | detailed outfit, production-ready costume | — |
| style_presetopt | COMBO | cinematic_photoreal | 5 options: cinematic_photoreal, editorial_fashion, stylized_anime, fantasy_concept_art, game_character_sheet |
| shot_typeopt | COMBO | full body | 5 options: full body, three quarter, cowboy shot, waist up, close portrait |
| moodopt | COMBO | confident | 6 options: neutral, confident, heroic, mysterious, friendly, intense |
| add_quality_tagsopt | BOOLEAN | true | — |
| negative_prompt_baseopt | STRING | bad anatomy, low quality, lowres, deformed | — |
Outputs (9)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| camera_desc | STRING | — |
| light_desc | STRING | — |
| settings_out | STRING | — |
| positive_prompt | STRING | — |
| negative_prompt | STRING | — |
| director_prompt | STRING | — |
| pose_guide | IMAGE | — |
| metadata_json | STRING | — |