学习进度
0/9 已勾只保存在这台浏览器;勾满 9 项即视为本题完成。
先把题目说成人话
项目里有成千上万个模型和图片,不可能永远靠人逐个打开检查。工具可以准确数出模型由多少小三角片组成(三角形数,Triangle Count),也能读出一张图片包含多少像素(贴图分辨率,Texture Resolution)。但它看见一片叶子的箭头朝向两边时,并不知道这是错误,还是美术有意制作的双面叶片。
因此这题不是让机器决定“资产好不好看”,而是把检查分清:能够稳定测量的规则自动执行;需要理解美术意图的问题,只标出证据和位置,留给人判断。
这是虚构教学故事,不是个人项目经历。
场景:先让问题变得看得见
美术把一个英雄、一块路边石头和一丛薄片树叶拖进 Unity。导入结束后,项目窗口显示三种结果:英雄通过,石头阻断,树叶需要人工确认。
(右脑)画面:英雄和石头明明都有八万个三角形,工具却没有给它们相同结论。英雄需要近距离看见脸和盔甲,因此仍在角色预算内;路边石头只会从远处经过,八万个三角形远超道具预算。树叶旁边则亮起黄灯:工具在一部分叶片上发现朝向相反的箭头,却没有直接宣布模型损坏,因为这种薄片本来就可能有意让两面都能看见。工具点亮石头后,报告没有只写“质量差”,而是直接指向超出预算的模型、实际数量、允许数量和下一步建议。
(左脑)对表:规则先按角色、普通道具、远景、植被和碰撞代理分类。三角形数来自各个三角形子网格的索引数量;贴图同时报告源图尺寸与各目标平台的最大尺寸、压缩和 Mip 设置。法线检查先定位几何面朝向与顶点法线明显冲突的位置;只有封闭、拓扑一致并已确定绕序约定的模型,才适合继续判断整体方向。开放表面、双面卡片、非流形与镜像负缩放进入人工复核。
小明:先形成一个完整猜测
小明给所有模型设了同一个五万三角形上限。英雄角色全部变红,美术不得不逐个点击忽略。几天后,团队已经习惯无视红灯,真正错误的背景模型混进来时也没人再看报告。
他还把“任意一个三角形的几何朝向与顶点法线相反”判为整个模型翻面,于是硬边、头发卡片和双面树叶大量误报。失败说明:阈值需要资产上下文,法线方向也不能靠一个局部现象直接宣判。
小红:把猜测放回现实检查
小红先按 character / prop / environment / foliage / collider 拆开规则,再用已知合格与违规样本检查阈值是否会误伤。模型三角形数按子网格拓扑读取:只有三角形拓扑才能累加 mesh.GetIndexCount(subMesh) / 3,其他拓扑要单独报告。
一张人物贴图的源文件是 4096×4096,但 Android 平台覆盖设置把它限制为 1024×1024。工具同时展示源尺寸、平台 maxTextureSize、压缩与 Mip:只报源尺寸会夸大设备实际使用量,只报平台结果又会隐藏仓库和其他平台仍保留大图的事实。
法线分两层检查:局部层用三角形绕序算出的几何面法线,与三个顶点法线比较并标出明显冲突;封闭且拓扑一致的网格,才可额外用有符号体积
V = Σ dot(v0, cross(v1, v2)) / 6
辅助判断整体绕序。开放网格、非流形、镜像负缩放和双面卡片只能标为“需人工复核”,不能自动宣判翻面。
我:用检查结果修正模型
我把结果分成 Error、Warning、Info。机器可以稳定证明会破坏构建或违反硬预算的 Error 才阻断;依赖美术意图的法线和尺寸问题给出 Warning;统计数据作为 Info。例外必须记录资产 GUID、规则 ID、理由、批准人和过期时间,不能只留下永久的“忽略”。
检查默认只扫描、定位和解释,不直接修改源资产。自动重算法线、缩图或减面都可能破坏有意设计,必须成为另一项带预览的明确操作。本地 Import 检查提供快速反馈,提交前批量 Dry Run 防漏,CI 只阻断低误报、可复现的规则。
(右脑)画面修正:检查重新运行以后,英雄、石头和树叶不再被同一个数字裁决。能数清的东西由机器准确数完;机器看不懂“叶片为什么要朝两边”时,只把可疑位置照亮并把决定权交还给人。每一盏红灯都能沿着报告回到具体资产、具体数值和具体规则,团队不再需要猜它为什么报警。
(左脑)严格对表:按资产类别选择规则集;三角形拓扑累加 indexCount/3,纹理同时记录源像素、平台 maxTextureSize、压缩与 Mip。法线先标出几何面法线与顶点法线明显冲突的局部;仅当网格封闭、流形、绕序一致且坐标约定明确时,才用 V = Σ dot(v0, cross(v1, v2)) / 6 的符号辅助判断整体方向。结果输出路径、对象、测量、阈值、严重程度和规则 ID;只有稳定 Error 进入 CI 阻断,最终画面和运行时预算仍在代表场景验收。
你的公开网站能证明你开发过 Unity Editor 工具,例如 Grid-based Prefab Viewer;它不能代替你提供自动资产质检或 CI 接入的真实经历。本页只能保留为设计方案。
老师解惑
- 规则分型:同样的三角形数,对主角、背景道具和 Collider 意义不同。
- 源尺寸与平台尺寸:一张 4096 源图可能在移动端被限制为 1024,两者都应报告。
- 法线检查边界:封闭流形才能较可靠地用有符号体积判断整体绕序;开放表面没有明确“里面”。
- 可追踪例外:白名单不是跳过按钮,而是一条有理由、负责人和期限的记录。
工具分工
- Unity Editor 扫描器:读取 Mesh、TextureImporter、资产标签和规则配置。
AssetPostprocessor:在导入阶段运行快速、确定性的检查。- CI 批处理:对变更资产和依赖做一致性扫描,输出机器可读报告。
- Scene/Project 定位器:把报告条目带回具体资产与子对象,缩短修复路径。
记忆钩子
能准确测量的自动拦,依赖语义的给证据让人判;每个红灯都必须指向具体资产和规则。
这是教学场景,不是目标项目的真实捕获或个人经历。
下一步:验证这条因果
Unity 资产的三角面、纹理尺寸、法线和命名怎样形成带严重度、修复边界与 CI 结果的报告。
教学边界:它是固定样本的教学规则,不是目标项目的真实 AssetPostprocessor、设备验证或画面验收。