先说这条片子
前几天我用可灵 kling 4.0 做了一条 AI 短片《当我开着 Roadster 遇到堵车时》。讲的是早高峰堵车时,一辆 Roadster 开上隧道壁、倒挂着穿过隧道,出来后靠喷气飞起来越过车流。
当早高峰遇上特斯拉Roadster
启用 JavaScript 后可加载视频播放器。
片子本身还比较粗糙,不少地方经不起细看。不过做的过程中,我摸索出了一套用白模控制可灵的办法,觉得值得记下来。
片子里堵车、车内这些镜头是直接生成的;车爬墙、倒挂、翻转、飞跃这几个镜头,用了白模。
片子发到 X 上之后,有人问白模是不是用 Blender 做的。其实不是,我自己也不会建模。白模是我说需求、Claude 写代码搭出来的。
这篇就把白模这部分单独拆开讲:白模是什么、怎么做、喂给可灵之后又踩了哪些坑。
为什么非得做白模
一开始我没想着做白模,就是常规做法:场景图、关键帧加提示词,让可灵自己发挥。
车冲向隧道壁、开始往上爬的那一小段,这样是能用的。但车一爬上墙、一倒过来,问题就来了:
- 车"变脸"了。 车身一旋转,可灵就认不出这是 Roadster 了,墙上那辆车慢慢变成了一辆普通的白色轿车。
- 动作是可灵编的。 车从哪里上墙、开多快、什么时候到顶,全靠它猜,每次生成都不一样。
- 前后段也接不上。 每段各生成各的,车的位置和角度很难和上一段的结尾对上。

没有白模时生成的版本:动作大致有了,但墙上这辆已经不是 Roadster。
文章视频
启用 JavaScript 后可加载视频播放器。
后面的出隧道翻身、空中横滚只会更难。提示词写得再细,也说不清"第 2.4 秒开始横滚,1.4 秒转完一圈"这种事。
白模就是为了解决这个问题。它是一段很粗糙的 3D 动画:车是个简化模型,堵着的车是大大小小的方块,没有任何质感。但车怎么走、转多少度、镜头怎么动,都是定死的。
把这段白模视频交给可灵,让它照着动作重新"画"一遍,分工就清楚了:
- 白模管动作和镜头:车的路线、速度、翻转和运镜。
- 参考图管长相:车外观六视角图、场景图。
- 提示词管氛围:早晨的光、真实的车流、喷气的白雾。
这个项目里我自己当导演,Claude 当动画师搭白模,可灵当渲染师。
第一步:先搭一辆"白车"
白模里最重要的是那辆车。我手上只有一张"车外观六视角图",Claude 照着它用代码搭了一个简化车模。
车模不用精致,只抓几个一眼就能认出来的特征:
- 比例:长约 4.5 米、宽 2 米、高 1.15 米,车头压得很低,后轮拱鼓起来,后面是长长的溜背玻璃。
- 车尾:一整条贯穿的红色尾灯、黑色扩散器、四个圆形排气口。
- 车头:两角细细的 LED 灯条、黑色下进气口。
- 颜色:车身白,底盘和下半截黑,黑色轮胎配深色六辐轮毂。

最管用的一招是贴照片。把六视角图里的车尾、车头抠下来,直接贴在白模的屁股和脸上。车不管翻到什么角度,可灵都能看到真车的尾部,车就不会再"变脸"。

车模也分场景。隧道那场车在画面里很小,用的几乎就是一个楔形盒子加一张车尾照片。出隧道和快速路两场车离镜头近,才换成上面这个更光滑的版本。
堵着的车就更省事了,全是大大小小的方块。出租车的车顶涂成绿色,车尾加两块红色尾灯。可灵会自己把绿顶方块画成出租车,把红点画成刹车灯。颜色就是最简单的提示。
第二步:把动作"算"出来
白模里车怎么动,不是拿鼠标拖出来的。我用大白话描述动作,Claude 把它写成公式,每一帧车在哪、转了多少度都是算出来的。要改哪里,改一个数就行。
一共三场戏:
| 镜头 | 时长 | 白模里定死的动作 |
|---|---|---|
| 隧道倒挂 | 约 5 秒 | 车贴着隧道壁一路开到顶上倒挂,镜头缓缓往前推 |
| 出隧道翻正 | 10 秒 | 倒挂开出洞口,空中翻正,喷气悬停,落地回弹 |
| 快速路横滚 | 8 秒 | 起飞越过车流,空中横滚一圈,落地停稳后再开走 |
隧道倒挂。 隧道的横截面是"一段平路接一个圆弧"。车沿着这个截面往上开,车身倾斜多少度,按"两排轮子都贴住墙面"来算,所以车既不会悬在半空,也不会陷进墙里。镜头一边慢慢往前推,一边带一点点手持的晃动。

文章视频
启用 JavaScript 后可加载视频播放器。
出隧道翻正。 车倒挂着以大约每秒 20 米的速度开出洞口,在空中转半圈翻正,然后下喷口喷气、悬停、慢慢落地,落地时车身还会轻轻弹一下。车在洞里时打暖黄色的隧道灯,出来之后换成早晨的阳光。白雾只在喷气打到路面的地方冒出来,而且留在原地,不跟着车走。

文章视频
启用 JavaScript 后可加载视频播放器。
快速路横滚。 车在第 1.3 秒以每秒 20 米起飞,第 2.4 秒开始横滚,1.4 秒转完一圈,侧面喷口只在横滚那一下亮。第 5 秒落地时速度降到每秒 4 米,滑到第 5.8 秒停住,第 6.4 秒再加速开出画面。镜头站在路边,先跟着车摇一点,最后放车开走。

文章视频
启用 JavaScript 后可加载视频播放器。
对比上下两排就能看出来:可灵几乎是照着白模一帧一帧"描"的,车的位置和角度都对得上,只是把方块换成了真车、真公交、真天空。
第三步:让白模和画面"站在同一个位置"
白模动作再准,相机和画面对不上也白搭。对不上的结果就是:车开进墙里,或者飘在路面上方。
每一段我都有一张定好的画面:要么是我做的场景图,要么是上一段视频的最后一帧。白模的相机要跟这张图对齐,高度、朝向、焦距都要调到隧道的弧线、车道线、地平线和图上重合。
办法很笨但有效:把白模的线框叠到那张图上,几组参数挨个比,哪组线条和图上的隧道、车身贴得最紧就用哪组。

白模的背景也分情况:
- 隧道和快速路:整个场景都用方块搭。隧道有弧形墙和顶灯带,快速路有护栏、隔音屏、路灯、远处的楼和树。
- 出隧道:直接拿场景图当背景,去掉颜色,只有车、喷气和白雾是 3D 的。上一节那张对比图的下排就是这样。
第四步:每段的开头,接上一段的结尾
短片是一段一段生成再拼起来的,接缝处最容易穿帮。我的规矩是:下一段的第一帧,直接用上一段的最后一帧。
- 开头堵车那段的最后一帧,就是进隧道那段的第一帧。
- 爬墙那段的最后一帧(车已经斜贴在墙上),就是倒挂那段白模要对齐的画面。上一节那张线框图对的就是这一帧。
- 白模的第一帧也按这个画面摆:车在哪、斜多少度,都和上一段结尾一样,可灵才不会在开头突然"跳"一下。
拼的时候我还会单独看接缝那几帧,看车的位置、大小、光线有没有跳。
第五步:交给可灵 4.0
最后一步用的是可灵 4.0 的视频编辑:上传白模视频,再把车外观六视角图、场景图作为参考传上去。提示词主要写长相和氛围,动作交给白模。
这一步有条规律是我自己踩出来的:白模视频多长,可灵里的生成时长就设多长。
白模比生成时长短的话,多出来的那几秒没有白模,也没有提示词描述,可灵就会自己编。出隧道那场就是这样:车已经落地停稳了,可灵又让它原地起跳飞了一次。
文章视频
启用 JavaScript 后可加载视频播放器。
已经生成的两版,我直接把这段"二次起跳"剪掉了。之后做白模,时长一律和生成时长对齐,比如出隧道这场就是正好 10 秒。
另外可灵对参考视频也有限制:每段 3 到 30 秒,生成时长同样是 3 到 30 秒。白模按镜头拆开做,每段几秒到十几秒,很容易在范围内。
踩过的坑,一张表说完
| 坑 | 表现 | 我的解法 |
|---|---|---|
| 车"变脸" | 车一翻转,就变成一辆普通白色轿车 | 白模车头车尾贴上真车照片 |
| 时长不一致 | 多出来的几秒可灵自己编,比如落地后又起跳一次 | 白模时长和生成时长设成一样 |
| 机位对不上 | 车的路线和画面里的路、墙对不上 | 白模线框叠在场景图上对齐 |
| 接缝跳帧 | 前后两段车的位置、角度接不上 | 下一段首帧用上一段尾帧 |
| 节奏拖 | 有几段结尾的动作偏慢 | 剪辑时把这几段的结尾局部提速 |
写在最后
回头看,这次做视频学到的最有意义的三点:
- 白模管动作,参考图管长相。 分清楚谁负责什么,大模型就不用瞎猜。
- 白模可以很粗,关键特征要真。 堵着的车用方块就够了,主角车尾贴一张真照片,比把车模做精细管用得多。
- 时长、机位、首尾帧都要对齐。 大部分穿帮,都出在"对不齐"上。
整个过程我没写一行代码,Blender 也没打开过。我负责想镜头、挑片子,Claude 负责把我的大白话变成白模,可灵负责把白模变成真的。
下一步我想把这套方法用到人身上:人比车难得多,四肢会交叠、会翻滚,这部分还在折腾,做出来再写一篇。
