# Appendix F — Midjourney V7 Protocols for Reference Image Generation

> **Version:** V7 (default since June 17, 2025)
> **Purpose:** Reference image generation for character sheets, location refs, prop refs, and lighting refs
> **Downstream:** Breakdown agent prompt generation, Reference Workshop, storyboard pipeline

---

## Role in Pipeline

Midjourney is used for **concepting and reference sheet generation** — the images that get locked in the Reference Workshop and fed as conditioning references to Flux 2 during storyboard frame generation.

```
Breakdown Agent generates MJ prompts
    → User runs prompts in MJ (Draft → Final workflow)
    → Drops results into Reference Workshop
    → Locks approved refs
    → Storyboard agent maps locked refs to Flux 2 slots 1-8
```

MJ is NOT used for final frame generation (that's Flux 2). MJ's job is producing the best possible reference sheets so Flux 2 has clean, consistent identity anchors.

---

## V7 Parameter Reference

### Core Parameters

| Parameter | Range | Default | Usage |
|-----------|-------|---------|-------|
| `--ar` | Any ratio (no decimals) | 1:1 | Aspect ratio. Use `2:3` for portraits, `16:9` for environments, `1:1` for props |
| `--s` / `--stylize` | 0–1000 | 100 | MJ aesthetic strength. **Low (25-100) for reference sheets** — accuracy over art. High (400+) for mood boards |
| `--chaos` | 0–100 | 0 | Variation between grid images. Use `--chaos 15-25` for exploring options, `0` when locked on a look |
| `--seed` | 0–4294967295 | Random | Fixed seed for controlled A/B testing. Use same seed when comparing prompt wording changes |
| `--no` | Text list | — | Negative prompting. e.g., `--no text, watermark, signature, blur` |
| `--q` | 0.5, 1, 2, 4 | 1 | Quality/GPU time. Use `--q 4` for final polished renders only |
| `--stop` | 10–100 | 100 | Stop generation early. `--stop 80` for softer, painterly drafts |
| `--raw` | Flag | Off | Disables MJ's aesthetic auto-pilot. More photorealistic, less stylized. **Use for reference sheets** |

### V7-Specific Parameters

| Parameter | Range | Default | Usage |
|-----------|-------|---------|-------|
| `--oref` | Image URL | — | **Omni Reference** — replaces `--cref` in v7. Identity anchor for character consistency. Upload your locked front-view ref, use as oref for all other angles |
| `--ow` | 0–1000 | 100 | Omni Weight. `100` = balanced. `400+` = strict identity match. `25-50` = loose style transfer |
| `--sref` | Image URL or code | — | **Style Reference** — captures aesthetic vibe (color, texture, lighting, medium). Does NOT copy subjects |
| `--sw` | 0–1000 | 100 | Style Weight. Controls sref influence strength |
| `--sv` | 4 or 6 | 6 | Style Reference version. `6` is current default |
| `--exp` | Flag | Off | Experimental mode for final polished renders |
| `--p` | Flag | Off | Personalization — uses your MJ taste profile. Turn off for neutral reference sheets |

### Modes

| Mode | How to Activate | When to Use |
|------|----------------|-------------|
| **Draft Mode** | Settings > V7 > Draft Mode | 10x faster, half GPU cost. Use for rapid iteration and prompt testing |
| **Raw Mode** | `--raw` in prompt | Disables aesthetic auto-pilot. More photorealistic output. **Default for reference sheets** |
| **Standard Mode** | Default (no flag) | MJ adds creative interpretation. Use for mood boards and exploration |

### Legacy Parameters (Still Work in V7)

| Parameter | Note |
|-----------|------|
| `--cref` | Replaced by `--oref` in v7. Still works but `--oref` is smarter |
| `--cw` | Replaced by `--ow` |
| `--iw` | Image prompt weight. Can combine with `--oref` for very strict matching |
| `--v 6.1` | **DO NOT USE** — generates with old model. Omit entirely (v7 is default) or use `--v 7` explicitly |

### Lens Effects in V7

V7 does **NOT** have a `--lens` flag. Using `--lens` will produce "Unknown flag: lens". The `--lens` parameter appears in some blog posts and third-party guides but is not a valid Midjourney parameter.

**How to achieve lens effects:** Include focal length and camera language naturally in the prompt text. V7's language model understands photography and cinematography concepts natively.

**Examples:**
- `"85mm portrait, shallow depth of field, cinematic realism"` — telephoto portrait compression
- `"24mm wide angle establishing shot, deep focus"` — wide environment with spatial depth
- `"100mm macro product photography, dark background"` — tight product/prop detail
- `"35mm editorial photograph, atmospheric"` — mid-range editorial look

Combine lens language with `--raw` for more photorealistic lens simulation. The `--raw` flag removes MJ's aesthetic auto-pilot, letting the camera language in your prompt text drive the visual result more directly.

### Film Stock Note

Film stock descriptors (e.g., "Kodak Vision3 500T", "Fujifilm Eterna 400") are **Flux 2 prompt concepts**, not Midjourney parameters. MJ does not have `--lut` or any film stock control flags (these appeared in unreliable third-party guides but produce "Unknown flag" errors).

- **For Midjourney:** Use `--sref` with reference images to influence color grading and look/feel. This is more reliable than text-based color grading.
- **For Flux 2:** Film stock is codified per-project in `visual_bible.md` and used by the storyboard agent when building Flux 2 hybrid prompts. See `appendix_e_flux2_protocols.md`.

---

## Prompt Structure for Reference Sheets

### V7 Philosophy: Short, High-Signal, Reference-Heavy

V7 prefers **short descriptive phrases** (20-40 words) with reference images doing the heavy lifting. Unlike v5/v6 which rewarded long detailed prompts, v7's language model understands context better and gets confused by over-specification.

### Character Reference Sheet Formula

```
[Subject identity], [key distinguishing features], [current wardrobe phase],
[pose/angle], [environment context], [lighting],
cinematic [shot type], [focal length] lens --ar 2:3 --s 75 --raw --no text watermark
```

**Example (GOOD — v7 native):**
```
Young woman salvager, amber debt counter locked to left wrist,
salvage hook on belt, patched cargo pants, rebreather around neck,
front-facing portrait, industrial generation ship corridor,
rust orange emergency lighting, cinematic portrait, 85mm lens
--ar 2:3 --s 75 --raw --no text watermark signature
```

**Example (BAD — v6 style, too long):**
```
Portrait of a young woman, late 20s, lean wiry build, cyberpunk debt counter
device locked to left wrist glowing amber numbers, industrial salvage hook on
belt worn smooth from years of use, patched-together rebreather mask hanging
around neck, industrial sci-fi generation ship interior, corroded metal walls
with rust flakes, rust orange and emergency red lighting, cinematic portrait,
detailed face, determined calculating expression, sweat and grime, dark hair
pulled back for work --ar 2:3 --s 750 --v 6.1
```

The bad example has 80+ words, `--s 750` (fights accuracy), and `--v 6.1`.

### Character Hero Shot (First Generation — No Refs Yet)

```
[Subject], [3-4 key visual identifiers], [wardrobe],
[neutral 3/4 pose], studio lighting, character design sheet,
cinematic realism, 85mm lens --ar 2:3 --s 50 --raw --no text watermark
```

This first hero shot becomes the `--oref` anchor for all subsequent angle generations.

### Character Angle Variants (Using Locked Hero as --oref)

```
[Same subject], [wardrobe phase description],
[specific angle: front view | left profile | three-quarter view | full body],
[environment], [lighting], 85mm lens
--ar 2:3 --s 75 --raw --oref [hero_image_url] --ow 300
--no text watermark
```

Use `--ow 300` for strict identity match across angles. The `--oref` image is the locked hero shot.

### Location Establishing Shot Formula

```
[Location name], [key architectural/environmental details],
[atmosphere and condition], wide establishing shot,
cinematic, [lighting description], 24mm wide angle
--ar 16:9 --s 100 --raw --no text watermark
```

### Location Detail Texture Formula

```
[Specific detail element], [material/texture], [condition],
macro detail shot, 85mm lens, [lighting], [atmosphere]
--ar 1:1 --s 75 --raw --no text watermark
```

### Prop Reference Formula

```
[Prop name and description], [material and condition],
[key visual details], product photography,
100mm macro product photography, dark background, [lighting]
--ar 1:1 --s 50 --raw --no text watermark
```

### Lighting Reference Formula

```
[Lighting scenario description], [color temperature],
[quality: hard/soft/volumetric], [source direction],
atmospheric photograph, cinematic
--ar 16:9 --s 150 --no text watermark
```

---

## Recommended Parameter Presets

### Per Asset Type

| Asset Type | `--ar` | `--s` | `--raw` | `--q` | Lens in Prompt Text | Notes |
|------------|--------|-------|---------|-------|---------------------|-------|
| Character Hero Shot | 2:3 | 50 | Yes | 1 | "85mm lens" | First gen, no refs. Becomes oref anchor |
| Character Angle Variant | 2:3 | 75 | Yes | 1 | "85mm lens" | Use `--oref` + `--ow 300` from hero |
| Location Wide | 16:9 | 100 | Yes | 1 | "24mm wide angle" | Establishing shot |
| Location Detail | 1:1 | 75 | Yes | 1 | "85mm lens" | Texture/material close-up |
| Prop Default | 1:1 | 50 | Yes | 1 | "100mm macro" | Product photography style |
| Prop Active State | 1:1 | 75 | Yes | 1 | "85mm lens" | Show prop in use context |
| Lighting Ref | 16:9 | 150 | No | 1 | "35mm editorial" | More artistic interpretation OK |

### For Final Polish Pass

After selecting the best Draft Mode result, re-run with:
```
[same prompt] --q 4 --exp
```

Optionally add `--sref` with a reference image that captures your target color grading/mood. This is more reliable than text-based color grading for achieving a consistent project look.

---

## Workflow: Draft → Final

### Step 1: Draft Mode Exploration
1. Enable Draft Mode in MJ settings
2. Run prompt with `--s 50 --raw` (low stylize, accurate)
3. Generate 4-8 variations quickly
4. Pick the best composition and identity

### Step 2: Refine Prompt
1. Use `--seed [seed_from_best_draft]` to lock the random state
2. Adjust wording — add/remove specific details
3. Re-run in Draft Mode to verify changes

### Step 3: Final Render
1. Disable Draft Mode
2. Add `--q 4` (or `--q 2` minimum)
3. Add `--exp` for experimental quality boost
4. Optionally add `--sref` with a mood/color reference image for cinematic finish
5. This is the image that gets dropped into the Reference Workshop

### Step 4: Angle Consistency (Characters)
1. Lock the hero shot in Reference Workshop
2. Use the hero shot URL as `--oref` for profile, 3/4, and full body
3. Use `--ow 300` for strict identity matching
4. Generate each angle separately (not a multi-view sheet — cleaner results)
5. Review all 4 angles for identity consistency before locking the variant

---

## Character Consistency Pipeline

```
1. Generate Hero Shot (no refs)
   └─ Best result → lock as identity anchor

2. Generate Front View
   └─ --oref [hero] --ow 300
   └─ Lock when approved

3. Generate Profile View
   └─ --oref [hero] --ow 300
   └─ Lock when approved

4. Generate 3/4 View
   └─ --oref [hero] --ow 300
   └─ Lock when approved

5. Generate Full Body View
   └─ --oref [hero] --ow 250 (slightly looser for body proportions)
   └─ Lock when approved

6. All 4 locked → variant complete
   └─ These 4 images become Flux 2 slots 1-4 for this wardrobe phase

7. Repeat for each wardrobe variant
   └─ Use same --oref hero (identity persists across wardrobe changes)
   └─ Change wardrobe description in prompt
```

### Cross-Variant Identity

The SAME hero shot `--oref` is used across ALL wardrobe variants for a character. The identity anchor doesn't change — only the wardrobe description in the prompt text changes. This ensures Jinx looks like Jinx in both `lower_deck_salvager` and `damaged_salvager` variants.

---

## Common Pitfalls

| Mistake | Fix |
|---------|-----|
| Using `--v 6.1` | Remove entirely. V7 is default |
| `--s 750` | Drop to `--s 50-100` for reference sheets |
| 80+ word prompts | Cut to 20-40 words. Let `--oref` carry identity |
| No `--raw` on reference sheets | Always use `--raw` for accuracy over aesthetics |
| No `--no` for unwanted elements | Always include `--no text watermark signature blur` |
| Generating multi-view sheets | Generate each angle separately with `--oref` for better quality |
| Different seeds per angle | Use same `--seed` + `--oref` for consistency |
| `--ow 100` for strict matching | Increase to `--ow 300` for identity-critical angles |
| Using `--lens` as a flag | `--lens` is NOT a valid MJ parameter. Put lens info in prompt text: "85mm portrait", "24mm wide angle" |
| Skipping Draft Mode | Always prototype in Draft first. 10x faster iteration |

---

## Integration with Breakdown Agent

When the breakdown agent generates MJ prompts (`/breakdown [project] --prompts mj`), it should:

1. Read this appendix for parameter presets
2. Use the **Character Reference Sheet Formula** for hero shots
3. Use the **Character Angle Variant Formula** with `--oref` placeholder for angle shots
4. Use the **Location Establishing Shot Formula** for location wide shots
5. Use the **Prop Reference Formula** for props
6. Generate per-wardrobe-variant prompts (not just one prompt per character)
7. Include a `hero_prompt` field and per-angle `variant_prompts` with `--oref [HERO_REF]` placeholder
8. Always append `--no text watermark signature` to every prompt

### Prompt Fields in breakdown.json

```json
"prompts": {
  "midjourney": {
    "hero": "Young woman salvager, 85mm portrait... --ar 2:3 --s 50 --raw --no text watermark",
    "variants": {
      "lower_deck_salvager": {
        "front": "Same young woman salvager, patched cargo pants, 85mm lens... front view --ar 2:3 --s 75 --raw --oref [HERO_REF] --ow 300 --no text watermark",
        "profile": "...",
        "three_quarter": "...",
        "full_body": "..."
      }
    }
  },
  "flux2": null
}
```

**Note:** The `[HERO_REF]` placeholder gets replaced with the actual MJ image URL after the hero shot is generated and approved. The Reference Workshop displays these prompts with the placeholder visible — the user replaces it manually when running in MJ.

---

## Reference Links

- [Midjourney V7 Version Docs](https://docs.midjourney.com/hc/en-us/articles/32199405667853-Version)
- [Midjourney Parameter List](https://docs.midjourney.com/hc/en-us/articles/32859204029709-Parameter-List)
- [Omni Reference Guide](https://www.imaginepro.ai/blog/2025/7/midjourney-omni-reference-guide)
- [Style References for V7](https://updates.midjourney.com/style-references-for-v7/)
- [V7 Parameter Quick Reference](https://geekycuriosity.substack.com/p/the-missing-guide-to-midjourney-parameters)

---

*This appendix is consumed by the breakdown agent during prompt generation and by operators working in the Reference Workshop.*
