UNIT 13整条管线约 16 分钟 · 核心线
看到一个毛病,先查哪一环?
回头看你给过的反馈,头一句几乎都在问同一件事:「是渲染过程中的问题,还是编码过程中的问题?」C14「你是用光栅还是光追的?……还是说这是材质贴图导致的bug」C20。眼睛早就看出毛病了,卡住的是下一步:它出在哪一环。这一课和后面两课,把前面十二课倒过来用。这一课讲方法:从一个毛病出发,一步步把它逼到某一环里,再写成一句别人拿去就能执行的话;第 14、15 课是九张真实的案例卡,拿这个方法一张张查。
13 · 1凭第一感觉修,猜错一环修半天
《拾光》第一版能走的沙面,窗户两边一排排黑色的细三角,树冠也发黑 C31。
只看这张图,你的第一反应:毛病出在哪一环?
- 灯光相机:影子算错了
- 建模:多边形拆成三角形时拆坏了
- 材质:贴图画错了
- 引擎:游戏里多做或少做了什么
当时的第一判断是「拆三角形拆坏了」:症状里有「三角」两个字,原因里也有,看起来天衣无缝。于是在从 Blender 导出之前自己把模型拆好三角形,再导进虚幻 5(UE5,拾光用的游戏引擎):106 个模型全部重新导出,花了半个多小时。黑三角还在。
真正的原因在引擎,下一节查出来。先记住这堵墙:凭感觉猜,一次只检验一条嫌疑,代价却是一整轮修改;猜错了,除了「不是这个」什么也没学到。症状的名字和原因的名字对得上,往往正是陷阱。
13 · 2排除法:每一步只改一样东西
换个做法:先别修,把嫌疑列出来——灯光、三角化、导出的文件、贴图、引擎;然后找只改一样东西、其余全不动的检查,比较改之前和改之后两种情况。结果只有两种,各划掉一批:
- 两种情况都有毛病:改掉的那一样不是原因(关掉光照三角还在,就不是灯光)。
- 只有一种情况有毛病:原因就在两者不一样的那一样上;两边共有的东西,全都不是原因。
好的检查,不管看到哪种结果都能划掉好几条,而且便宜。
不到两分钟的导览:把黑三角从头查一遍,中间停下来让你猜一次。它会驱动下面的看板,你随时可以接手。
第一步:关掉光照,只看物体本身的颜色。黑三角会怎样?
- 消失:它们是影子
- 还在:形状本身就坏了
- 变成别的颜色
还在。两种情况都有毛病,灯光就不是原因。而且看清了:百叶窗和窗玻璃从长方形变成了尖三角,是形状坏了。代价只是切一个视图模式。剩下的几步,在下面的看板上自己走:每一步先猜,再看。
- 来自材料
- 嫌疑、每一步做了什么、看到了什么、「半个多小时」「106 个模型」「44 个材质」「35 → 82」都来自拾光文章和 C31。
- 本看板的设定
- 每一步能划掉哪几条,是按「这一步两边一样的东西不可能是原因」推出来的;除第一步外,每一步的代价只有文章里的说法,没有计时。
- 它能证明
- 按不同的顺序查,走的步数不一样;一步好检查能一次划掉好几条。
- 它不能证明
- 缺标记为什么会让百叶窗变成尖三角:文章说游戏「退回了一个事先准备好的简化版」,日志原文说的是「改用默认材质」,两者对不上,中间这一步存疑。可以确定的只有:补上标记,三角就没了。
Nanite 是虚幻 5 处理海量三角形的系统(第 10 课),用在它身上的材质要带一个「会被 Nanite 使用」的标记。编辑器(做游戏时用的那个软件界面)会当场替你补上;游戏模式(在编辑器里按「开始」跑起来)和打包版(发给玩家的程序)不补。再看一眼第一张坏帧:画面中间那行黄字就写着「Non-Nanite」。线索从一开始就印在画面上,只是没人把它当证据。读日志、读屏幕上的每一个字,是最便宜的一步,该最先做。
这套做法叫排除法:列嫌疑,每一步只改一个变量,用结果划掉嫌疑,便宜的先做。注意,这是查的规矩;查清楚以后,修可以几样一起改,因为你已经知道每一样为什么要改。
便宜的检查还有一种:先出草稿。《拾光》预告片正式录 4K 之前,先用低分辨率预跑一遍、每个镜头抽 4 帧拼成一张图,一眼扫过去,抓到了相机钻进地底、航拍穿进楼里 C39。可草稿省掉的东西,它就看不见:广州片的动态分镜(最粗的草稿版)没开运动模糊,陈家祠屋脊特写会被拖糊这件事,就藏在草稿里,直到正式档测速才发现 C06。
13 · 3把判断写成一句能执行的话
查到了哪一环,还差最后一步:让别人(AI 也好,专业的人也好)拿去就能改、改完能验。你说过:「40-46秒之间是不是过曝了,一片亮」C23。这句话已经有了时间和症状,但做的人还得猜:哪一环?改到什么程度算好?别的能不能动?一句能执行的话,要有四样:
改写红魔 v4 的 40–46 秒,背面镜头里机身和背景大片发白,查下来在灯光:背光和红色背景板太亮,摆给金属映的反射卡也被机身映了出来。改成真正的逆光剪影(光从背后打来,机身只剩一圈亮边):改完机身正面不再出现整片死白,只保留那圈亮边,背景仍看得出是红色;只动灯光,不动动画和机位,只重渲 40–46 秒这一段。
当年实际的改法:前光降到 15%,反射卡隐藏,2000 W 的背光设成金属映不出来,背景板亮度降到 0.42 C23。这些数字不用写进指令里:指令给的是目标和边界,怎么调是做的人的事。
反过来,读别人(或 AI)交回来的汇报,也找四样:测的是什么、在什么条件下测的、和什么比、还有什么没验证。缺哪样,就追问哪样。
带走一个问题
《拾光》的预告片里,满街的路人远看一身浅色,像全都穿着白衣服 C51。截图自查的时候谁都没看出来。按这一课的方法:你的嫌疑名单上有哪几条?第一步查什么、为什么它便宜又能划掉最多?写下你会发给 AI 的那句话。
不看上面,写下这一课撞上的几堵墙,再展开对照
- 凭第一感觉修 → 一次只检验一条嫌疑,代价是一整轮修改;症状的名字像原因,往往是陷阱。
- 列嫌疑,每一步只改一样东西 → 两边一样的都不是原因,一步能划掉好几条;便宜的先做,日志和屏幕上的字最便宜。
- 先查、后修 → 查的时候一次只动一样;查清楚了,修可以几样一起改。
- 草稿省掉的东西,草稿就看不见 → 低清预演抓机位和穿帮,抓不到只在正式档出现的拖影。
- 一句能执行的话 = 环节 + 症状 + 指标 + 约束;给目标和边界,不替做的人拍数字。