# 一句“镜头缓缓推近”为什么不听话：模型里其实没有那台摄像机

从“模仿像素变化而非执行机位”讲起，说清推轨为什么常被做成变焦、运动归属为什么归错人，以及提示词与工具镜头参数该怎么分工

> 视频生成 · 图生视频 · 镜头运动 · 提示词 · 约 7 分钟 · 10 月 18 日

## 本篇要点

1. 镜头运动在生成视频的模型里没有对应的机械对象：模型学的是“像素随时间怎么变”的外观，所以它是在猜结果，而不是执行一条摄像机路径。
2. 推轨和变焦在单帧上几乎相同，动起来才分家：推轨产生视差并不断露出新背景，需要每帧补全内容；变焦只是整体缩放。模型因此普遍偏向给出变焦效果。
3. 一句“slow dolly in”只说了方向和一个模糊的速度，起点终点、速度曲线、路径、收尾、焦距是否变化都要模型自己填，而它按训练素材里最常见的样子填。
4. “主体变大”可能是镜头动、主体动或镜头变焦，模型会自己决定运动归属；主语没写清时会归错人。
5. 文字条件整段共用、没有时间表，所以同一个镜头短语在 5 秒和 10 秒里不是同一件事。
6. 工具自带的镜头参数把方向和幅度提前固定，换来方向明确和可复现；但它不管运动的目的，也不管过程中画面出现什么，而且常与尾帧、运动笔刷互斥。
7. 分工原则是参数管怎么动、提示词管为什么动和动的时候画面有什么；两边给出冲突指令会造成扭曲的运动。

---

你在图生视频里写“镜头缓缓推近”，跑三次得到三件不同的东西：一次像手机变焦，画面均匀放大但空间变扁；一次几乎不动；还有一次推到第三秒脸开始变形，第五秒已经贴满画面。

这都不是词写错了。**镜头运动在生成模型里不是一个动作，而是一种要猜的视觉效果**。猜这个效果，和真正执行“把摄像机往前推”这个动作，是两码事；工具自带的镜头参数只解决了其中一半。

## 先接受一件事：模型里没有摄像机

三维动画里摄像机是真的：场景由带坐标的物体组成，镜头有位置、朝向、焦距，渲染就是从这个位置往外看。所以“摄像机往前挪两米、推到特写”是一条能被执行的计算指令，走了两米就是两米。

生成视频的模型里没有这套东西。它拿到的是训练视频里“像素怎么随时间变化”的统计规律。上一篇讲过，跨帧注意力和时间压缩处理的对象全是潜空间里的数值——里面没有三维坐标，也没有一个叫“摄像机”的变量。

所以提示词里出现“推近”，模型收到的不是一条路径，而是一句关于**画面会怎么变**的描述。它在做的是：想起“被标注为推镜的片段通常长什么样”，再合成一段看起来像那样的像素变化。

模仿结果，而不是执行原因。后面几节说的毛病，基本都是这句话的分支。即使工具给你一条可拖动的镜头路径，那条路径也只是作为额外条件喂进同一个去噪过程，它规定得了“往哪走”，仍然规定不了“走过去会看到什么”。

## 它偏爱变焦，因为变焦不用造新东西

推轨（dolly in）和变焦（zoom in）在单帧上几乎一样：主体都变大。区别在动起来之后。推轨是机位真的前进，近处的东西移动快、远处的慢——这叫视差；前景物体一路冲出画面边缘，原来被它挡住的背景一块块露出来。变焦是焦距变了、机位没动，画面像被均匀放大，没有视差，也不会有新东西露出来。

对模型来说这两件事成本差得很远。变焦近似于把已有画面按半径放大，每个像素的来源大致还在原处附近。推轨要在每一帧补上刚露出来、此前从未出现过的背景——一次一次地补全，每一次都可能编错。而时间压缩又逼着相邻几帧必须高度相似，这种“每帧都要新造遮挡区”的运动正好撞在最吃力的地方。

于是有个一致的经验现象：你写 dolly in，多数模型仍给你偏变焦的整体放大[3]。这不一定是它不认识这个词，而是那条路对它更省力。要真的推出视差，得把差别写成它能用的排除项：摄像机物理前进、焦距保持不变、背景透视随之改变[2]。

## 一个短语，缺了一整串属性

“slow dolly in”听起来完整，其实只给了方向和一点模糊的速度。一次真实的镜头运动还有：从什么景别到什么景别、几秒内完成、匀速还是缓入缓停、路径直还是带弧、结束停不停住、焦距变不变、这期间主体在不在动。

这些没说出口的，每一项都是模型要填的空[4]。填法来自它见过的素材——影视和商业素材里最常见的推镜是中等幅度、几秒内走完、结尾轻轻停住。所以默认输出常常是：幅度中等、比你想的快、没有明确终点。你觉得“我都说了缓缓”，它觉得“你已经给了方向和大概”。

这也是提示词作为约束的性质：它缩小采样范围，不指定唯一的点，而镜头运动的自由度恰恰不在“做什么”，而在“多快、到哪停、中间怎么走”。

时长会把这件事放大到肉眼可见：同一句 slow push in，放在 5 秒和 10 秒里不是一回事。10 秒版本要么慢到看起来在漂，要么沿用 5 秒的节奏，推到第 7 秒脸已贴满画面。文字条件是整段共用、没有时间表的，怎么分配由模型自己定。

## 还有第二种错法：谁在动

像素层面，“主体变大”至少有三个来源：机位前进、主体走近、镜头变焦。模型必须决定把这个变化记在谁头上，这个决定叫运动归属（motion ownership）[2]。

主语不清时，它自己选。写了“镜头向女人推近”，出来的可能是女人朝镜头走来——画面上的运动没差，叙事全错。修法不是加形容词，是把角色写死：镜头动，主体保持不动[2]。镜头和主体同时动时，用一个动词说出两者关系：“镜头跟着骑车的人”，比“推近，人物在骑车”清楚，因为前者规定了镜头相对主体的职责[1]。

## 工具自带的镜头参数，管的和不管的

正因为文字留白太多，主流工具都把一部分运动搬到了生成前的显式设置：方向（左摇、右摇、升、降、推、拉、环绕）和幅度（强度滑杆）。

以 Kling 的接口为例，六个数值各管一件事：水平位移、垂直位移、摇、俯仰、滚转、变焦，范围 $-10$ 到 $10$，正负表示方向；并且 simple 模式下要求只有一个非零[5]——它承诺的是单方向、整段一致的一种运动，不是一个有时间表的调度。

它买到的是**方向明确、可复现**：同一组参数跑十次走同一条路，这正是文字给不了的。它买不到的是运动为什么发生、移动过程中画面里该出现什么——参数不知道你摇过去是为了让门后的人入画。还有一个实际限制：同一个请求里，尾帧、运动笔刷和镜头参数只能选一个[5]，因为它们都在规定“整段画面该怎么变”，同时给会互相打架。

## 分工怎么写

一句原则：**参数管怎么动，提示词管为什么动、动的时候画面里出现什么。**

```mermaid
flowchart LR
  A["一句镜头描述"] --> B["提示词：整段共用一份条件，没有时间表"]
  A --> C["镜头参数：方向＋幅度，可重复"]
  B --> D["模型自己填：起点终点、速度曲线、路径、是否收住"]
  C --> E["单向、整段一致的运动"]
  D --> F["实际像素变化"]
  E --> F
```

检查一段镜头时按这几条走：

1. 需要对得上剪辑、要能重跑，就用参数定方向和幅度。
2. 把目的写成画面结果，别写情绪词。“推近到能看清他手里的照片”比“推近，营造紧张感”有用，因为前者给了模型一个终点，它才知道该停在哪[1]。
3. 速度写死：慢、稳、几秒内完成。模型没有默认镜头速度，不写就按它自己的节奏来[1]。
4. 一段给一个主运动。堆三个动词（推＋摇＋升），模型多半挑一个，或者混成一团漂移[1]；要两个运动就拆成两段生成再接。新一些的模型对分阶段描述宽容得多——与其并列动词，不如说清每个阶段画面里出现了什么[1]。
5. 排除最容易混的那个（写推轨就加“不要变焦、焦距不变”），也别双重指挥：参数设了往右摇，提示词里就别再写往左摇，两层冲突会出扭曲的运动[1]。

最后两条判断能省很多试错：**画面几乎不动**时先别加词，图生视频里起始帧这根锚会把运动压住，文字常常喊不动它，调运动强度比改句子有效——管“动多少”的本来就是一个数值，不是一个词；**画面在动但动错了人**时，改主语，别改速度。

## 术语表

- 运动归属：画面上“东西变大或移动”到底算摄像机在动、主体在动，还是镜头在变焦；模型要自己决定，提示词没写清就由它猜。
- 推轨与变焦：推轨是机位真的前进，会产生视差并不断露出原本被挡住的新背景；变焦只改焦距、机位不动，画面均匀缩放、没有视差。
- 镜头参数（camera control）：生成前设定的方向和幅度数值，常见为水平位移、垂直位移、摇、俯仰、滚转、变焦各一项，通常一次只允许一个方向生效。
- 双重指挥：提示词和参数同时规定同一个运动且说法不一致，输出会变得扭曲不稳。

## 来源

1. [Runway 镜头提示词指南：文字与内置镜头参数的分工、双重指挥与堆叠动词等常见失败](https://runway.com/resources/ai-camera-prompts)
2. [each::labs：推轨、摇、环绕、升降在各模型上的常见偏差，含运动归属与排除变焦的写法](https://www.eachlabs.ai/blog/ai-video-camera-movement-prompts)
3. [Camera motion vocabulary for image-to-video：各模型镜头预设与强度滑杆对照，dolly in 常被做成变焦](https://imagetovideo.dev/prompting/camera-motion/)
4. [Higgsfield：一次镜头运动包含起点、终点、速度曲线等文字短语里不存在的属性](https://higgsfield.ai/blog/ai-video-camera-control)
5. [Kling 视频生成接口文档：CameraControl 六个方向数值、simple 模式只允许一个非零，以及与尾帧、遮罩互斥](https://docs.tokone.ai/en/guide/multimodal/kling)

---

原文：https://pangzhengboyin.com/articles/why-camera-move-prompts-fail-8d5d701a

> **庞征博引** · 想学的，慢慢都会
>
> 庞征博引是把想学的东西写成连载的 AI 学习工具。说出想学什么，它会先了解你的基础，再把主题写成一篇篇 5–10 分钟能读完的文章；边读边问，接下来学什么跟着你走。这篇就是这样写出来的。
>
> 开始你自己的连载 → https://pangzhengboyin.com
