9.3 等距资产的制作约束
等距资产不能随便画尺寸:底菱要落在半行网格上、宽度要偶数才能整数居中、锚点必须是底菱中心、单件还得装进图集格。本节把 C1–C6 这 6 条约束写成整数判据,对《星屑旅店》的 6 件等距资产逐件过账,让灯具半行不对齐、雨棚超格超宽这三条真实违例当场现形。
tag
等距资产不能随便画尺寸:底菱要落在半行网格上、宽度要偶数才能整数居中、锚点必须是底菱中心、单件还得装进图集格。本节把 C1–C6 这 6 条约束写成整数判据,对《星屑旅店》的 6 件等距资产逐件过账,让灯具半行不对齐、雨棚超格超宽这三条真实违例当场现形。
等距板只要有两格以上高度,就会出现遮挡。本节把绘制顺序与遮挡深度都写成整数规则:按 (tx+ty, tx) 升序落笔,深度数同屏幕列 (tx-ty) 上位于本格前方、blockHeight ≥ 1 的地块数,超过 cap 判越界;再用单文件 HTML 看板并排画两套主题,Playwright 断言整数账与 Python 逐位一致。
引擎不吃体素,吃三角网格,所以体素美术的最后一关是「体素 → 网格」的转换账。本节用《星屑旅店》的体素灯具算两种路线:朴素路线每个暴露面出 1 个四边形(476 三角),贪心合并把同朝向同色共面的相邻面并成矩形(60 三角),合并率 873 千分比;再与三角预算和材质槽预算对账。
厚涂最贵的不是笔刷,是「每个资产都从头画一遍」。本节把手绘贴图拆成图层角色与贴图页,落成一份 D 层清单与一段可跑的 TypeScript 校验器:图层角色序列必须与模板逐位一致,每个资产用到的贴图页数有上限,两级复用率是整数千分比——地板除,跨语言逐位一致。
低多边形要进引擎,先过三道约束:顶点属性步长、材质槽数与顶点色。本节把《星屑旅店》一屏 12 件家具的四种顶点布局算成字节账,用顶点色把材质槽从 19 降到 12、清掉 counter 与 bed 两个超槽资产,并给出每顶点 4 字节的代价与跨语言 digest。
手绘资产该拆成几个切分件、拆完有没有人复用,是两笔能算清的账。本节把「切分件数、复用率、单件重绘成本」写成整数模型:用 Python 算复用率与节省成本,用 TypeScript 复算并对拍,再用「只被用一次的件」这个信号抓出切分过度——拆了一堆没人复用的件,账面上看得见。
像素 tile 的预算也是整数账:场景 tile 网格 cols×rows、逻辑屏能铺几整格与边缘半格、tileset 字节 = 唯一 tile 数 × tileW × tileH × bpp、图集占用千分比。附可跑的 S 层脚本与 TS 校验器,跨语言逐位一致。
跨品类移植不是复制粘贴,而是一笔账。本节把复用分成参数级/贴图层/几何层/全新建四层,各给一个整数改造系数,对四条迁移路径算改造人天:节省率从 379‰(中度→重度,要动几何)到 603‰(降级精简,只改参数),并给出层级成本结构与两条口径陷阱。
同一支团队做休闲和做重度,能出的资产量差一倍。本节把品类写成一笔可复算的整数账:四分品类(休闲/中度/重度/独立)各给一个迭代的团队规模与资产需求,产能口径与卷二 14.1 同源(有效系数 595‰),算出利用率 781/1058/1092/966‰ 与吞吐 134/120/85/95,并给出档位加权几何预算 52500~123000 面。
距离矩阵回答「哪两套最像」,但项目要选的是「最合约束的那套」。本节把风格选择写成一笔可算的账:四道硬门槛(对比度 / 可区分 / 细节上限 / 明度下限)先过滤,过关者再按与项目目标向量的加权 L1 距离排序,预算内取最近者。结果是 cozy-clean,拟合度 969,比第二名近 136。
《游戏美术与技术美术》卷二《技术美术与管线工程》附录:全卷管线规则与公式索引、ta<章号>_ 工具链命名约定、六层可运行性口径与逐层复现命令,并给出可跑的 S 层清点脚本与 P 层索引校验内核,两者对同一份工作区算出的清单与摘要逐位一致,并附一键复现与排错顺序。
前两节把片段绑到状态、定了过渡与混合,本节管动画时间轴上的事件标记:帧号、类型、参数。六条资产侧校验把 8 个事件判出 4 类违例各 1 条——帧越界、同帧同类型重复、事件未按帧排序、vfx 引用不存在,两侧 digest 逐位一致,逻辑侧只需照单消费。
9.1 把片段绑到了状态,本节定状态之间怎么过渡、连续参数怎么在几个片段间混合。2D 四角样本的双线性权重全程整数地板除,Python 与 TS 逐位一致;7 条过渡判出悬空 1、超预算 1,非整除查询点的权重之和是 998 而非 1000,规范只承诺确定、不承诺归一。
本节把动画片段名文法定成 <char>_<action>[_<dir>][_v<N>],用片段族把方向与版本变体收成一个可绑定的单位,再校验三类绑定缺陷:悬空绑定、孤儿片段族、方向缺档。11 个片段判出坏名 1、悬空 1、孤儿 1、缺档 1,两侧 digest 逐位一致。
蒙皮数据分两块:顶点上的蒙皮属性(4 索引 + 4 权重)与骨骼调色板(骨骼矩阵)。本节把两块都算成整数字节,并让索引位宽决定合法性:4 位最多 16 骨、8 位 256 骨。同一批角色用 idx8_w8 共 203616 字节、调色板只占 75‰,换 16 位索引加浮点权重则涨到 579936 字节。
调色板是「一次绘制能送进顶点着色器的骨骼矩阵集合」。本节把它的上限从 uniform vec4 预算推导成整数公式,再逐个角色核对两条独立约束:档位骨骼预算与调色板上限。6 个角色里 1 个超预算、2 个因超过 64 根上限被迫拆成两个蒙皮段——预算合格不等于装得下。
LOD 切换那一帧的跳变不是玄学。同一段相机轨迹下,单阈值选级在阈值附近抖了 17 次,双阈值迟滞只切 1 次;相邻级的误差跳变里,LOD2 到 LOD3 的 75 千分比超过 60 的上限,被门禁判违例。本节把「切几次」与「跳多大」都变成整数账。
屏幕占比是一屏三角预算的分配依据。本节用整数针孔相机把距离换算成占比千分比,按阈值表逐实例选级,把一屏 12 件家具的三角数合计到 1072,与 1200 的帧预算对账;并算出「全部拉到 LOD0」的最坏视角会爆到 3024,说明预算必须按最坏视角算。
LOD 不是「离远了换低模」一句话,而是一张分级表加一个能算的误差指标。本节把家具轮廓归一化到规范轮廓,用整数 shoelace 逐级算面积损失千分比,给出 4 级 LOD 链的误差账,并由 P 层 TS 内核复算,两侧逐位一致,全程整数可复现。
本节不是内容而是边界:第 6 章只讲参数表与默认值、参数对齐与打包,着色器编译、变体爆炸、渲染管线原理一律外链给 graphics 专题。把「什么归本章讲」编码成一张可断言的路由表——external 规则在前、this-book 在后,首个命中胜出;三条外链路径两两不同、全部在 public/ 产物中存在,越界与漏网都被断言挡住。