缺失引用:自动补图不能越过材质槽语义

自动关联目录:缺失引用:自动补图不能越过材质槽语义

核心判断:一张外部图片“文件名相似”不能证明它应绑定到某个材质;自动修复必须同时锁定源材质对象、槽位语义和原引用,歧义时宁可阻塞。

一、业务冲突

模型文件常只保存外部贴图路径。路径失效后,工具允许补充图片,但一个模型可能有同名材质、多个颜色通道和多个引用同一 basename 的对象。全局按文件名替换会把法线贴到颜色槽,或把一个材质的图片传播到另一个材质。

二、实际实现

缺失引用记录包含源节点、材质槽、通道语义、原 basename、是否必需和问题摘要。补图先绑定为独立辅助输入并校验摘要,再从本地源材质身份适配到 Cook 材质,只在相同对象对、明确语义和唯一 basename 匹配时建立绑定。旧检查若同时存在所有权边和具体贴图通道,也会先消除重复语义。

三、值得保留

补图没有直接修改源文件,也没有把文件名当主键;完整绑定映射会进入 binding fingerprint 和冻结计划,因此提交后不能被换图。这让“修复缺失引用”成为可审计变更,而不是隐式搜索规则。

四、结构性缺陷

当源导出器只给出 unspecified 语义时,系统仍要从邻接关系推断。材质复制、通道合并或共享纹理会让唯一性条件过于严格,用户只能重新导出。若 UI 只显示错误文本而不显示目标材质与候选,人工修复成本仍很高。

五、目标设计

struct ReferenceSlot {
    SourceObjectIdentity material;
    MaterialSemantic semantic;
    uint32 slotOrdinal;
    Optional<String> originalName;
};

Binding BindAux(ReferenceSlot slot, VerifiedInput image) {
    Require(image.kind == Image);
    Require(CurrentScene().ContainsExactly(slot));
    return Binding{slot, image.sha256, ExplicitUserChoice};
}

自动建议可以按 basename 和图像用途排序,但最终提交必须引用精确 Slot。迁移后若 Slot 不再唯一,输出候选差异,不继承旧绑定。

六、取舍与验证

严格绑定会让部分“看起来能猜”的导入多一步确认,但避免了更隐蔽的视觉错误。测试应覆盖同名材质、重复 basename、多语义、共享贴图、源文件变化和辅助输入被替换,并证明冻结后的绑定不可漂移。