一个把 motion prompt 变成可播放三维白模的 Skill,适用于 Codex 和 Claude Code。
在花钱生成视频之前,先看看人物站在哪里、镜头怎么走、动作能不能在这几秒里讲清楚。确认之后,还可以把预演画面下载下来,作为后续视频生成的构图与空间参考。
previz-demo.mp4
上面是我们的 Previz 实操录屏。测试所用的原视频提示词与文中展示的原成片,均来自 X 博主 TechHalla(@techhalla);我们使用他的素材演示 Previz 的白模预演流程。
现在做 AI 视频,成本很容易花在反复试错上。以 Seedance 2.5 为例,生成一条约 30 秒的视频,成本大约在 80–110 元人民币。反复试几轮,很快就会累积成一笔不小的开销。
提示词里写着“男子起身撞到服务员,时间停止,镜头环绕,他拿走食物再离开”,读起来很顺。如果等视频生成后才发现两个人的位置不对、机位被门挡住,或者动作挤在一起、节奏不成立,就得再改词、再生成、再等一轮。
所以我想把一部分判断提前:还没开始生成视频,就先把这段镜头在空间和时间上走一遍。
这与用 Blender 搭白模、摆人物、试机位,再把画面交给后续视频生成,是相近的思路。Previz 把这个过程接到了自然语言输入上,让你直接从已有的视频提示词开始。
Previz 的基本过程是:理解提示词 → 组合预设并补充细节 → 形成场景数据 → 用 Three.js 渲染导演台。
我已经在 Skill 里预设了常用的人物、场景构件和道具表达方式。它们可以通过尺寸、位置、朝向和姿态等参数,组合成不同的场景。
| 预设内容 | 能表达什么 |
|---|---|
| 人物 | 用简化人偶表示不同角色,调整身高、站位、朝向和视线;支持站、坐、蹲、跪、躺等姿态,以及持物、抬手、指向等手臂姿态 |
| 场景构件 | 用墙、地面、门窗、桌椅、卡座、柜台等组件搭建空间;尺寸和摆放位置随当前场景变化 |
| 道具与基础形体 | 用圆盘、盒体、长条、球体、圆柱等表示焦点道具,或组合出没有现成预设的物体轮廓 |
人物使用固定的身份色,方便分清谁是谁。场景与道具保留足够的体量和空间关系,让你判断遮挡、距离和构图。
Codex 或 Claude Code 读取提示词后,会提取画幅、时长、人物数量、相对站位、姿态、场景陈设、重要道具,以及每一段的景别、机位和运镜。
这些信息会写进一份场景 JSON。你可以把它理解为一份结构化的场景说明:谁在什么位置、面向哪里,物体有多大,摄影机从哪里看向哪里,动作和镜头在什么时间发生。
像画幅、两人左右站位这样的关键条件没有写清楚时,它会先确认;能够合理推断的内容,则记录在假设清单里。你无需自己填写 JSON,继续用自然语言沟通即可。
提示词里并不是每一样东西都有专门的预设。遇到这类内容,系统会结合现有组件,用基础几何体临时拼装,并补上当前场景需要的尺寸、布局、位移和时间参数。
例如,在这次餐馆案例里,卡座、桌子和人物可以调用已有组件;煎蛋、培根、咖啡壶和空中的液滴,则用不同形状组合出来。食物升空、悬停和下落,通过各段的位置变化表达;时间冻结时,其他物体保持原位置,男子继续移动。
预设负责提供稳定的基础表达,提示词决定具体场景,临时补充负责把镜头中缺少的可视内容补齐。
场景数据准备好后,随 Skill 附带的 Python 脚本将它与渲染代码打包成 HTML。浏览器再通过 Three.js / WebGL 实时绘制人物、陈设、摄影机和运动中的画面。
三维导演视图和右侧监视器共享同一份场景数据。导演视图方便你从不同角度检查空间,监视器则显示当前镜头的取景。播放时,程序根据时间更新人物、道具和摄影机的位置。
Skill 自带 three.min.js,生成页面时会将 Three.js 和场景数据内嵌进 HTML。把生成好的 HTML 保存在本地,就可以离线播放、切换视角和导出图片,无需额外部署网站或安装 Blender。
自然语言理解和场景修改仍由你使用的 Codex 或 Claude Code 完成;浏览器里的预演由本地代码渲染,不调用图像或视频生成模型。对话模型本身仍按各自的订阅或 API 方式计费。
你需要已经能正常使用 Codex 或 Claude Code,并准备好 Python 3 和支持 WebGL 的现代浏览器。渲染引擎使用 Python 标准库,Three.js 已随 Skill 附带,无需另装 Blender 或 Python 第三方依赖。
在本仓库页面点击 Code → Download ZIP,将下载的压缩包解压。找到里面的 previz 文件夹,确认结构如下:
previz/
├── SKILL.md
├── scripts/
│ ├── previz.py
│ └── three.min.js
├── references/
├── templates/
└── examples/
安装时复制整个 previz 文件夹。只复制 SKILL.md 会缺少渲染引擎和参考文档。
下面两种方式按你使用的工具选择即可。
安装到 Codex
最直接的方法是把解压后的 previz 文件夹交给 Codex,或者告诉它这个文件夹的完整路径,然后发送:
请把这个 Previz Skill 安装到我的用户级目录 ~/.agents/skills/previz/。
完整复制文件夹,并验证 scripts/previz.py 的引擎版本。
手动安装时,在解压后的仓库根目录打开终端,执行下面的首次安装命令(macOS / Linux):
mkdir -p "$HOME/.agents/skills"
cp -R ./previz "$HOME/.agents/skills/"
python3 "$HOME/.agents/skills/previz/scripts/previz.py" --version安装完成后,应能找到 ~/.agents/skills/previz/SKILL.md。Codex 会识别新 Skill;如果没有显示,重启后再试。
安装到 Claude Code
在 Claude Code 中打开解压后的仓库目录,或提供 previz 文件夹的完整路径,然后发送:
请把这个 Previz Skill 安装到我的用户级目录 ~/.claude/skills/previz/。
完整复制文件夹,并验证 scripts/previz.py 的引擎版本。
也可以在解压后的仓库根目录手动执行以下首次安装命令(macOS / Linux):
mkdir -p "$HOME/.claude/skills"
cp -R ./previz "$HOME/.claude/skills/"
python3 "$HOME/.claude/skills/previz/scripts/previz.py" --version安装完成后,应能找到 ~/.claude/skills/previz/SKILL.md。Claude Code 会检测 Skill 变化;如果本次才首次创建顶层 skills 目录,重启后再使用。
~ 代表你的用户主目录。只希望在某个项目中使用时,可以完整复制到下表中的项目级目录:
| 工具 | 所有项目可用 | 仅当前项目可用 |
|---|---|---|
| Codex | ~/.agents/skills/previz/ |
<项目根目录>/.agents/skills/previz/ |
| Claude Code | ~/.claude/skills/previz/ |
<项目根目录>/.claude/skills/previz/ |
如果已经装过同名版本,先备份旧的 previz 文件夹,再替换整个目录。最后确认目录中直接就是 SKILL.md,没有多套一层 previz/previz/。
上述版本检查命令应输出以 previz 3.1 开头的一行。这次实际安装完整复制了 11 个文件,并通过了版本检查:
真实安装截图:引擎和 Three.js 一起安装,不需要另外找渲染组件。
在 Codex 中,下一轮对话输入:
$previz 请预览下面这段视频提示词:
【粘贴你的 motion prompt】
在 Claude Code 中,输入:
/previz 请预览下面这段视频提示词:
【粘贴你的 motion prompt】
也可以直接说“使用 Previz Skill 预览这段提示词”。生成的场景 JSON 与 HTML 通常放在当前项目的 .previz/ 目录,Agent 会给出实际输出路径。
这次测试使用 X 博主 TechHalla(@techhalla) 发布的视频提示词。我们把它的中文版本交给 Previz:男子在餐馆撞上端早餐的服务员,食物飞起,世界冻结;只有男子能动,他取走食物走向出口,随后时间恢复。
装好 Skill 后,在 Codex 或 Claude Code 中说:
请使用 Previz Skill,帮我预览下面这段 motion prompt。
【在这里粘贴你的视频提示词】
分段提示词、带时间戳的镜头说明,或者一段自由描述,都可以作为输入。
实际测试输入的是原提示词的中文版本;长文本在对话界面中折叠显示。
这次它集中确认了两件事:画幅用横屏还是竖屏,以及碰撞前两人的左右站位。我选择 16:9 横屏,男子在左侧卡座,服务员在右侧过道。
补齐会改变构图的关键条件,其他推断保留在假设清单里。
Agent 输出场景数据和 HTML。打开 HTML 后,就能在导演台中播放、暂停和查看各段镜头。
原提示词的五段时长完整保留:
| 时间 | 镜头里的事情 |
|---|---|
| 0–5 秒 | 男子从卡座起身,与服务员相撞 |
| 5–12 秒 | 早餐升空,镜头环绕,时间冻结,男子拿走食物 |
| 12–22 秒 | 男子朝出口走,其他人与物品保持静止 |
| 22–27 秒 | 他准备推门,时间恢复,剩余物品落下 |
| 27–30 秒 | 男子停步侧身,手里还拿着食物 |
这次预演把五段细分成 15 个动作节拍,以表达起身、碰撞、升空、冻结和取食等状态。15 个节拍不代表剪成 15 个镜头,同一机位内也可以细分动作。
世界冻结放在 8.4 秒,时间恢复放在 22.6 秒。这两个段内时点是为预演选择的节奏,已作为假设记录。
Previz 会给出数据健康、轴线和接缝三类检查。它们帮助你找到需要关注的位置,仍要结合镜头意图来判断。
例如,本次出现的四处 0° 接缝提醒,来自同一连续机位内的节拍细分,并非四次实际剪切。制作时还另外核对了人物与道具在节拍交界处的位置,以及冻结期间未被拿走的物体是否保持静止。
看到需要调整的地方,直接继续描述。例如:
保留这段 30 秒的结构,让跟拍避开门的遮挡。
其他人物和食物的冻结时段保持不变。
Agent 会修改对应的场景数据,再重新渲染。人物走位、道具位置或正式镜头路线的修改,都可以这样继续沟通。
导演台把三维场景、镜头取景和时间轴放在同一个页面里。左侧是镜头或动作节拍列表与自检结果,中间是三维导演视图,右侧是当前镜头的监视器。
最新实操录屏截图:查看空间布局,同时观察当前镜头的画面。
在中间的三维导演视图中,可以直接用鼠标操作:
- 左键拖动:围绕场景旋转视角,观察人物、道具和机位的关系。
- 右键拖动,或按住 Shift 拖动:平移观察位置。
- 滚动鼠标滚轮:拉近或拉远,查看局部细节或整体布局。
观察视角与正式镜头分别控制。你转动导演视图时,右侧监视器仍按场景中设定的机位和运镜显示画面。
| 视图 | 适合看什么 |
|---|---|
| 自由环视 | 自由旋转、平移和缩放,检查人物与陈设的空间关系 |
| 俯视 | 从上方检查站位、动线、机位分布和空间排布 |
| 机位肩后 | 从当前摄影机后上方观察,理解这台摄影机与被摄者的关系 |
| 右侧监视器 | 查看当前镜头实际拍到的画面,包括构图、遮挡和运镜结果 |
页面上的视角切换按钮是“自由环视”“俯视”“机位肩后”。右侧监视器对应当前镜头;点镜头列表或时间轴,就能切换到相应段落,也可以随时暂停、重放。
底部的显示开关可以逐项勾选,让画面只保留当前需要查看的信息。
真实界面中的七组显示开关,可分别选择显示或隐藏。
| 开关 | 作用 |
|---|---|
| 网格 | 显示地面网格,辅助判断距离、方向和位置关系 |
| 全部机位 | 同时显示其他镜头的摄影机;关闭后保留当前机位 |
| 轨迹 | 查看摄影机的运动路径,理解推移、环绕等运镜路线 |
| 轴线 · 视线 | 显示 180° 轴线和人物视线,辅助检查人物关系与机位所在的一侧 |
| 标签 | 显示导演视图中的人物、道具、地标和机位文字说明 |
| 监视器标签 | 在右侧镜头画面中显示人物与焦点道具标签,便于辨认 |
| 墙体剖切 | 在导演视图中将挡住观察的外侧墙体半透明显示,方便看清室内 |
同一场景可以显示机位、人物和道具标签,也可以关闭这些辅助信息,集中看画面。
看完预演后,可以在页面底部直接下载 PNG 图片。
| 下载选项 | 得到什么 |
|---|---|
| 当前帧 | 当前镜头、当前时刻的画面,适合挑选需要保留的构图 |
| 全部帧 | 各镜头或预演节拍的代表帧;默认取每段中点,批量保存为独立图片 |
| 宫格图 | 把各镜头的代表帧拼在一张图片里,便于整体检查或沟通 |
| 导演视图 | 当前三维观察视角的截图,适合说明场景布局和机位关系 |
“当前帧”和“全部帧”导出的单张镜头图,默认短边为 1080 像素。“全部帧”指各镜头的代表帧集合;当前版本主要交付可播放 HTML 和 PNG 图片,本文的 demo 视频来自操作录屏。
如果后续平台支持首帧或参考图,可以从监视器导出的画面中挑选合适的帧,作为构图、站位和空间参考。需要干净画面时关闭“监视器标签”,需要说明人物身份时再打开。人物长相、服装和美术风格,仍由对应的角色与风格参考来说明。
同一份场景数据还可以按需输出关键帧、站位图、场记平面图和接缝检查页面。生成好的 HTML 内嵌 Three.js,保存到本地后,上述播放、观察和图片导出都能离线使用。
白模主要用来判断构图、站位、姿态、走位、运镜和节奏。人物外貌、微表情、咖啡流体、餐盘破碎、电影布光和胶片颗粒,不在这个简化预演的表现范围内。像咀嚼、挑眉、耸肩这样的细节,通过简化姿态或文字说明表达。
草图丑不等于提示词错,草图顺眼不等于成片稳。 最终的画质、表演和物理效果,仍要在视频生成阶段验证。
素材来源:X 博主 TechHalla(@techhalla)。下面的原文视频提示词和原生成视频均属于这位博主。我们的工作是用同一提示词测试 Previz,并制作白模预演与操作演示。
原帖标题是“Seedance 2.5 frozen time prompt is below”。下面保留原文截图和作者署名,便于对照这次测试的输入。
原文截图来自 TechHalla(@techhalla)的 X 帖文;实操使用的是同一提示词的中文版本。
TechHalla 的原生成视频 · 约 30 秒
original-video.mp4
我们的 Previz 白模演示 · 1 分 16 秒
previz-demo.mp4
原视频:TechHalla(@techhalla)。Previz 演示:我们使用其提示词制作的操作录屏,展示白模播放、视角调整和辅助内容的显示控制。两个播放器可以分别查看。
通过这组对比,可以直接看到同一段文字如何在成片中呈现,以及 Previz 把哪些空间和时间关系提前摆了出来:碰撞发生在哪里、食物何时悬停、男子怎样离开、镜头从哪一侧看过去。
原博主视频中的人物、光影和液体效果,属于视频生成的结果;Previz 展示的是构图、站位、动作路径和节奏的草图。原博主的成片不是由 Previz 生成的,也不是使用我们这次预演制作的。
项目自有代码和文档采用 MIT License。随包附带的 Three.js 保留原作者的 MIT 许可。TechHalla(@techhalla)的原提示词、原视频、相关截图及提示词翻译保留原作者权利,不在本项目授予的 MIT 许可范围内。
Previz 是我完整 AI 视频创作工作流中的一个独立环节,所以我把这个 Skill 单独拆出来开源。你可以把它接入自己的创作流程,在正式生成之前先看一次画面。
想了解《Seedance 分镜师 3.0》完整的创作工作流,欢迎访问废才俱乐部官网。








