---
name: scene-blocking-consistency
description: 人物/道具站位一致性：为每个场景建立「站位表」（空间锚点+角色默认方位+道具锚点+180度轴线与允许机位），并强制同一场景内所有镜头的 sub_shots / visual / video_prompt 复述并保持人物/道具相对左右方位、朝向、视线一致，消除跨镜左右漂移。当出现人物在左、下一镜位置关系错乱、左右漂移、站位不连贯、越轴等分镜一致性问题时使用。
---

# 人物/道具站位一致性（scene-blocking-consistency）

把「站位」当成与人物外貌、服装、画风同级的**一致性锚点**来管理。核心思想：先为每个场景定一张**站位表（blocking map）**，之后同一场景内所有镜头一律从这张表取方位，禁止逐镜自由发挥导致左右关系漂移。

## 何时使用

- 拆分镜前、写视频提示词前，凡涉及多人同场、人物与道具同框的场景，都必须先建立/读取站位表。
- 排查「上一镜人物在左、下一镜跑到右」「两人对视方向相反」「道具从左边瞬移到右边」等问题时，按本技能重建站位表并逐镜校正。

## 站位表结构（每个场景一条）

站位表写进 `bible.md` 的「场景站位表」章节。每张表包含四块：

```
【场景 01】图书室·黄昏
- 空间锚点：门=画面左；窗=画面右；书桌=画面中偏左；书架=画面右后
- 角色站位：
  - 林默：画面左侧，面向右（朝向苏婉），距门约1步
  - 苏婉：画面右侧，面向左（朝向林默），背对窗
- 道具锚点：
  - 茶壶：书桌上，位于两人之间偏左
- 轴线与机位：以「林默—苏婉」连线为轴线；机位统一在轴线下方（两人正前方偏左），禁止越轴
```

### 字段说明

| 字段 | 含义 | 必填 |
|------|------|------|
| 空间锚点 | 场景内固定参照物（门/窗/桌/床/台阶/柜台…）相对画面的左右/前后方位 | 是 |
| 角色站位 | 每个入镜角色相对锚点的方位 + 朝向（面向左/右/前/背对镜头） | 是 |
| 道具锚点 | 关键道具相对角色/锚点的方位（尤其会被拿取/强调的道具） | 有道具时必填 |
| 轴线与机位 | 角色连线的轴线，及本场景允许的机位侧（统一同侧） | 多人同场时必填 |

## 六条铁律

1. **180 度轴线规则**：同一场景内，机位必须始终保持在角色连线（轴线）的同一侧；确需越轴时，必须先用一个「全景/两人同框」镜头交代，或让角色走位自然换边，否则禁止直接越轴。
2. **屏幕方向一致**：同一角色在连续镜头中位于画面的左右侧保持一致（画面左/画面右），除非剧情明确要求其走位移动，且该移动路径在镜头里被写清。
3. **视线匹配**：面对面对话时，一方看向左、另一方看向右；视线方向跨镜一致，不得出现两人同看一边的「镜像跳」。
4. **道具锚点一致**：道具相对角色/场景锚点的方位跨镜一致（桌上的茶壶始终在两人之间偏左），不得瞬移。
5. **换位/走位必须显式交代**：若剧情要求角色换位（起身、走到窗边、绕到对方身后等），必须在该镜头的 `sub_shots` 里写清「起点→路径→终点」，并**更新站位表**为新站位；换位之后的镜头沿用新站位。
6. **镜头间上下文承接（先判断转场，再决定是否参考）**：写分镜 N 前，先比较它与分镜 N-1 的 `scene_name`/场景头与时间——**同一场景且时间连续 → 必须参考站位**：分镜 N 起幅 = 分镜 N-1 落幅（角色左右方位、朝向、道具位置、动作方向一致）；**发生转场（场景头变化/地点切换/时间跳跃/淡入黑场等）→ 不参考上一镜位置**，为新场景重建站位表。

## 执行步骤

### 1. 拆分镜前：建立/读取站位表

- 先按场景聚合本章，为每个场景建立站位表（见「站位表结构」）。
- 若 `get_project` 返回的 `context.bible` 里已有该场景的「场景站位表」，直接沿用；剧情走位变化时才更新。

### 2. 持久化到 bible（注意覆盖式写入）

- `bible` 是覆盖式写入：**先 `get_project` 读回现有 `context.bible`**，把「场景站位表」章节合并进全文（保留已有的人物外貌/衣橱等内容），再 `save_context('bible', 合并后的全文)`。
- 站位表按场景分条，随剧情推进可追加新场景、更新走位后的旧场景。

### 3. 写分镜时复述站位（含镜头间承接）

- 每条 `set_storyboard` 的 `visual` 与 `sub_shots` 必须明确写出「角色X在画面左/右、面向左/右、距某锚点远近」，不写「同上/保持原样」这类零指代。
- 子分镜之间若有人物走位，写清移动路径与起终点。
- **先判断是否转场**：写分镜 N 前，比较它与分镜 N-1 的 `scene_name`/场景头与时间。同场景且时间连续 → 参考站位（承接上一镜落幅）；发生转场（场景切换/地点变化/时间跳跃）→ 不参考上一镜位置，为新场景重建站位表。
- **按 idx 顺序逐条写分镜**：同场景连续时，写第 N 条前先回顾第 N-1 条 `sub_shots` 的结尾一段（落幅），第 N 条的起幅站位承接第 N-1 条的落幅；续跑追加时用 `list_shots` 读回已有分镜的最后落幅再接写。

### 4. 写视频提示词时复述站位（英文）

- 写 `video_prompt` 时，把站位表方位翻译成英文并复述进每个镜头，例如 `Lin Mo stands on screen-left facing right; Su Wan stands on screen-right facing left`。
- 参考标签（`__MINIMAX_H3_REF_N__`）与站位描述并存，互不替代。

## 常见错误（写分镜时自查）

- 越轴：两人对话，A 镜从左侧拍、B 镜突然从右侧拍，导致人物左右互换。
- 镜像跳：同一场景两人对望，却都写成「面向右」或都「面向左」。
- 道具瞬移：上一镜茶壶在两人之间，下一镜跑到窗边。
- 零指代：`sub_shots` 写「人物位置保持原样」，但没写「原样」具体是什么。

详见 `references/blocking-map.md`（模板与示例）与 `references/continuity-rules.md`（规则判定细节）。
