9.3 等距资产的制作约束
等距资产不能随便画尺寸:底菱要落在半行网格上、宽度要偶数才能整数居中、锚点必须是底菱中心、单件还得装进图集格。本节把 C1–C6 这 6 条约束写成整数判据,对《星屑旅店》的 6 件等距资产逐件过账,让灯具半行不对齐、雨棚超格超宽这三条真实违例当场现形。
tag
等距资产不能随便画尺寸:底菱要落在半行网格上、宽度要偶数才能整数居中、锚点必须是底菱中心、单件还得装进图集格。本节把 C1–C6 这 6 条约束写成整数判据,对《星屑旅店》的 6 件等距资产逐件过账,让灯具半行不对齐、雨棚超格超宽这三条真实违例当场现形。
前两节把贴图和材质都算成了字节,本节把「写实」相对扁平着色的代价算成一张整数账:常驻贴图数、显存字节、每像素采样数、着色器变体数、材质槽数五条可数轴,各算写实/基线的整数比值再加权成代价指数,并给出从朴素写实到逐项缓解的阶梯。真实帧时间与 GPU 占用属 X,命令行不可复现,本节只划界不伪造。
上一节把五张贴图压成三张,本节解决另一半问题:一个道具组到底该切几张材质。把「物理材质分区 × 细节层级」写成 D 层规格,再按每 slot 的分辨率与贴图集算出整链字节,逐位对账:细节密度均值、高细节层字节集中度、按分区合并后的槽位与字节降幅,并让超预算的槽位在账上直接报 OVER。
写实 PBR 一个材质动辄五张贴图,通道打包是把它压回来的第一招。本节把「三张单通道贴图塞进一张 ORM」算成整数字节账,结论反直觉:未压缩时打包反而更大,压缩后打包省到三分之一;再用 PIL 真生成一张通道打包示意 PNG 并回读验证三通道与原图逐点相等。
上一节把光照量化成色阶带,本节把光照拆成一层层:基础色、阴影、主光、边缘光、高光。每层一个整数参数,档位越高层越多。光照模型与后处理实现外链站内渲染原理专题,本节只做参数表与整数账——每层着色结果怎么算、为什么「阴影最暗、高光最亮」必须写成一条会失败的判据。真实渲染观感标 X。
NPR 卡通渲染把连续光照量化成几段色阶带、把轮廓画成一条描边。本节只做这两个参数的规范与整数账:四组色阶带变体的边界怎么定、为什么四组宽度都恰好和为 1000,描边宽度的千分比在四个高度下如何用整数上取整算出像素数,并用 PIL 依同一份参数真生成色阶带样本图。真实渲染观感标 X。
低多边形要进引擎,先过三道约束:顶点属性步长、材质槽数与顶点色。本节把《星屑旅店》一屏 12 件家具的四种顶点布局算成字节账,用顶点色把材质槽从 19 降到 12、清掉 counter 与 bed 两个超槽资产,并给出每顶点 4 字节的代价与跨语言 digest。
平面着色给每个面一个平色,色块划分就是决定这个面该归哪一档亮度。本节把一块 12 面 lowpoly 宝石按整数 shadeLevel 分成 4 个色块,算出每档面数与最大色块占比 416‰,用 PIL 按同一份 palette 真生成平面色样本 PNG,并给出跨语言 digest 与色块超预算的负例。
低多边形的面数预算好算,顶点预算却常被算错:平面着色要求每个面独立顶点,上传顶点数不是共享顶点数,而是面数的 3 倍。本节把《星屑旅店》lowpoly 主题的一屏 12 件家具算成两套账——面数 1200 过线、平面着色顶点 3600 爆线、索引共享 633 过线,并给出字节倍数与跨语言 digest。
「画得好不好」没有可跑的数字,硬凑一个笔触指标比不写更危险。本节整节标 X:把 2D 手绘的画质与笔触显式划出可命令行复现的范围,只保留能静态校验的东西——笔刷参数声明表的结构、范围与诚实性。真实笔触质量需真实画师与真实环境,命令行不可复现;本节给出的是「不许过度承诺」的门禁,不是画质评分。
手绘资产该拆成几个切分件、拆完有没有人复用,是两笔能算清的账。本节把「切分件数、复用率、单件重绘成本」写成整数模型:用 Python 算复用率与节省成本,用 TypeScript 复算并对拍,再用「只被用一次的件」这个信号抓出切分过度——拆了一堆没人复用的件,账面上看得见。
2D 手绘最容易失控的不是画得漂不漂亮,而是线宽、圆角与色块数各画各的。本节把这三样写成可校验的整数规范:线宽阶梯、圆角上限、每类资产的色块数上限,并用同一份规范真生成色卡与线宽样本 PNG;再用 TypeScript 校验器与 Python 落盘的 JSON 对拍,证明两侧的整数类违例集合与摘要逐位一致。
三卷的交付物收尾:12 项分三类(spec-text / schema / runnable-artifact),本套三卷即全部,故状态必须全部 done。S 层校验完整性、P 层与 Python 逐位一致,W 层用一张可切主题的单文件看板把清单、矩阵与交付物总览画出来;再给出四条延伸阅读。
三卷总收官:把卷一 ch16 的规范装配、卷二 ch16 的四道闸门、卷三 ch16 的 8 项验收清单串成一条链,在 6 个主题包上各跑一遍,6×(2+4+8)=84 项判定全过。再独立复算 6×6 距离矩阵,摘要命中跨卷锚点 fa04e9418d9f3c2c;B 层扫阈值证明下限 800 不能松。
把跨风格验收做成一张可跑的清单:8 项判据分 static 与 per-theme 两类,命名、token 数、对比度、图集装箱率、mip 字节、最近邻距离全写成整数比较。同一张清单在 6 个主题包上各跑一遍,48 项判定全过;TS 内核与 Python 逐位一致,四条负例都能真的报错。
六套主题同出一份规范,换主题时哪些字段能跟着走、哪些必须重写?判据只有一条:叶子字段在 6 个实例上是否逐位相同。14 个结构叶子可迁移、代价 0;10 个风格叶子不可迁移、必须重写。同项目换主题要触碰 21 个点,跨项目迁移涨到 35,B 层再扫主题数与角色数看这笔账对什么敏感。
把「同源但可区分」量成一个整数:五维加权 L1 的整数均值再 ×10,判据是下限 800。15 对全部高于下限,最近一对 lowpoly/cozy-clean 是 1002,摘要指纹与卷一、卷二、卷三 1.2 独立复算逐位相同;B 层再扫阈值与权重,证明三个可测维度一个都不能少。
同一份规范结构在 6 个主题下各实例化一次:命名段、预算、8 个色彩 token、5 对对比度、图集与两个风格参数拼成完整 spec。同一套五道闸门的 validator 跑 6 遍,六次全过,实跑结果逐行给出,并与 TS 侧做跨语言 digest 对拍。
跨品类移植不是复制粘贴,而是一笔账。本节把复用分成参数级/贴图层/几何层/全新建四层,各给一个整数改造系数,对四条迁移路径算改造人天:节省率从 379‰(中度→重度,要动几何)到 603‰(降级精简,只改参数),并给出层级成本结构与两条口径陷阱。
可读性不是调色板的绝对属性,而是调色板与观看条件的匹配。本节把四品类的观看条件(屏幕、单次注视时长、同屏元素数)折成四道整数门槛,对 6 个主题包做 6×4=24 格判定:休闲只过 2 格、中度 3 格、独立 2 格、重度 6 格——同一份调色板,换个品类判定就不同。