竞品拆解 · 07-07 发布

3D Shot Composer:
先摆好镜头,再让 AI 生成

Topview 新功能主张一件事:光靠写 prompt,镜头你控不住。它让你在生成视频前,先在 3D 里把角色、道具、机位摆好,再交给模型。这页拆它怎么做的,以及我们能不能照着落地。

来源 @TopviewAIhq 发布 2026-07-07 演示 42s / 1080p 播放 ~600K

"少猜一点,少重跑几遍,镜头更可预测 —— 去导演,别只是描述。"

What

它解决的是"prompt 控不住镜头"

你想要"低角度环绕、主角站在画面左三分之一"。可这话写进 prompt,模型每次都在赌一个。位置、景别、机位全靠它猜。多跑几遍才碰上一个对的,钱和时间都烧在重跑上。

Topview 的解法:在生成前加一层可视化摆位。你把主体和相机摆好,这套构图变成给模型的"硬约束",出来的画面就贴着你摆的样子走。

4 步
摆位 → 架相机 → 转条件 → 生成
↓ reroll
主打少重跑
12 视角
静图版一键多机位
深度感知
3D 重建,非 2D 变形

底层技术是什么

Topview 已经有个 Photo Angle Editor,是这套东西的静图版:浏览器里拖一个虚拟相机滑块,靠 3D 相机控制加 AI 深度补全,生成真实的新视角 —— 不是把图拉扁那种。3D Shot Composer 相当于把这套本事,从"改一张图的角度",接到了"驱动一段视频怎么生成"。

学术里对应这类做法:把相机位姿当条件喂给视频扩散模型 — MotionCanvas · 3D camera control in video DiT · 深度引导相机控制

Can we

我们的视频链路够得着吗

好消息:核心那条链路,我们后端其实已经能跑。看 build_video_payload(),该有的参数位都在。

# backend/services/agent_v2/generation_payloads.py
input_payload["prompt"]       = prompt
input_payload["aspect_ratio"] = aspect_ratio
input_payload["image_url"]    = list(image_urls)   # 收列表 → 首帧/尾帧/多参考图
input_payload["camera_fixed"] = bool(camera_fixed)  # 已有的锁机位开关
_apply_common_input_overrides(input_payload, extra_kwargs)  # 通用透传口子
能力Topview 怎么做我们现状够不够
构图静帧 3D 摆位渲成一张构图图 image_url 已收列表当首帧;generate_image + analyze_media 已能产出并校验单主体图(story-designer 在用) 够 · 零改动
锁机位 钉死相机不漂 camera_fixed 参数位已在 payload 里 够 · 现成
运镜轨迹 3D 相机路径 → 时序条件 看 Seedance / Kling 有没有开这个入参;有的话走 extra_inputs 透传,不动 builder 看 provider
3D 摆位界面 浏览器里实时 3D 编辑器 Canvas 是 2D(Excalidraw/tldraw),没有 3D 场景引擎 要新前端
一句话判断

不用复刻那个 3D 编辑器,也能拿到八成价值。Topview 真正值钱的不是那个界面,是"用一张构图静帧钉死镜头,再驱动视频生成"这条路。这条路我们已经能走 —— 缺的只是把"构图长啥样"这一步结构化生成出来,而这一步纯写一个 SKILL.md 就够,后端一行不用改。

How it maps

拼到我们现有的零件上

Shot Composer 的每一块,我们几乎都有对应件。差的只是把它们串成一条明摆着的流程。

意图 校验 首帧 锁机位 USER 采集镜头意图 ask_user_question GEN 生成构图静帧 generate_image CHECK 校构图 / 回修 analyze_media VIDEO 静帧驱动生成 build_video_payload 成片 LEGEND 焦点 · 已能跑的那一环 现有工具 用户交互 产物
整条链路里唯一"新"的其实只有第一步(把意图问清楚、转成构图),后面四环全是现成件。所以这不是造轮子,是把散着的工具串起来。
Topview 概念我们的对应件
分镜 / 场景规划story-designer + storyboard-prompts(角色确认 → 分镜大纲)
主体一致story-designer 的角色图流程(单主体校验:生成 → 分析 → 回修)
构图静帧generate_image(text_to_image / image_edit)
静帧转视频Seedance / Kling passthrough,image_url 当首帧
运镜措辞advance_video_prompt(video_prompt_guidance)
迭代 / 比较agent-v2 preferences/scope + Canvas 多变体并排
Plan

分三步走,风险一步比一步高

阶段 1

纯 Skill 版 Shot Framer · 零后端 · 1–2 天

新写一个 shot-framer 的 SKILL.md,把现有工具编排一下,后端一行不碰:

1. ask_user_question 问清镜头意图:景别 / 机位角度 / 主体站位
2. generate_image(text_to_image) 出一张构图静帧(主体在指定位置)
3. analyze_media 校构图(单主体?机位对不对) → 不对就 image_edit 回修
4. 静帧当 首帧 传进视频生成,prompt 只写动作 + 运镜方向
5. camera_fixed=true 锁机位,减少漂移

立刻拿到"先定构图再生成、少重跑"的核心体验,跟 story-designer 天然接得上。

阶段 2

运镜轨迹透传 · 小后端 · 看 provider 脸色

先查 Seedance 2.5 / Kling 3.0 有没有开 camera trajectory 或 motion-control 入参。有的话,走 extra_inputs 透传(参考仓库里现成的 seedance generic passthrough,commit fd5f558),让 skill 能下发结构化运镜:推 / 拉 / 摇 / 环绕 + 速度。

改动就是 payload 白名单加个 camera schema,前端不用动。

阶段 3

交互式摆位界面 · 大投入 · 先缓

真做 3D 编辑器要上前端 3D 引擎(three.js / R3F)加深度重建。投入大,护城河也在这。建议先用阶段 1、2 验证有没有人真需要,再决定。很可能一个"2.5D 摆位板"(在 Canvas 上拖主体框 + 画机位箭头)就够用,成本比全 3D 低一大截。

开工前先确认这几件
  • Seedance / Kling 现在的 passthrough 到底开没开 camera trajectory?(阶段 2 的前提)
  • 首帧锁构图 + camera_fixed 实测能降多少重跑?先跑一次小样本 A/B
  • 会不会和 VRL / clone-video 的"只扩展不重演"原则打架?(Shot Framer 是从零构图,定位不同,应该不冲突)
Source

原始推文

@TopviewAIhq · 2026-07-07 12:50 UTC · LA · 认证号

主张文本 prompt 精度不够,3D Shot Composer 让你在生成前把角色 / 道具摆好、把相机取景定好,承诺更少重试、结果更可预测。收尾一句 "Start directing" —— 去导演镜头,别只是描述。

标签 #TopviewAI #AIVideo #3DShotComposer · 媒体是一条 42s 1080p 演示视频 · ~600K 播放 / 300 赞 / 74 转 / 86 评

注:推文本体要登录(HTTP 402),文案经 fxtwitter 镜像还原;演示视频逐帧内容没取到。

结论:这功能打的是"prompt 控不住镜头"的通用痛点,跟我们视频链路正好同构。阶段 1 纯 Skill 版可零后端快速落地拿核心价值,3D 界面留到最后再评估。
下一步 → (a) 起草 shot-framer 的 SKILL.md;(b) 查 Seedance / Kling 的 camera 入参。

来源 topview.ai/canvas · photo-angle-editor · aijourn(Topview 4.0 / Series A) · 代码事实来自本仓库 generation_payloads.py
生成于 2026-07-08 · 内部竞品拆解