AI生成的模块化建筑一复制就光照串位?先查这5处Lightmap索引、实例数据与探针采样
把同一套 AI 生成建筑复制到 Unity 或 Unreal 后有时第一栋光照正常第二栋却像贴上了别处的阴影静态墙面没有问题可移动门窗一进阴影就发黑场景首次加载正常重新进入分区后又出现亮度错位。遇到这些现象先不要反复改材质或提高 Lightmap 分辨率。更有效的做法是按“实例映射—UV2 与尺度—优化重组—动态物体采样—分区重载”逐层排查。同一套建筑复制四次为什么只有一栋正常先做一次最简单的对照换成不依赖贴图细节的中性材质并固定相机、灯光和曝光。如果错误阴影仍在优先检查 Lightmap 索引、图集页和偏移数据。如果只有可移动的门、招牌或升降平台发黑重点检查光照探针、体积光照和采样锚点。如果未优化时正常开启静态合批、GPU 实例化、HLOD 或流式加载后才异常就要追踪对象重组和资源绑定时序。本文使用一个固定案例同一栋模块化建筑复制为 4 个实例。building_01、building_02参与静态光照烘焙building_03进入实例化渲染路径building_04带有可移动门窗并由远处分区加载。网格和材质相同只能说明它们可以复用一部分资产数据不代表 4 个场景实例应读取同一块烘焙结果。Draw Call 降低也只是性能指标不能证明光照映射仍然正确。图注模块复用可以提高场景搭建效率但每个实例的烘焙映射、图集占用和动态光照采样仍需在真实引擎工程中核对。第一处共享网格不等于共享烘焙结果典型现象4 栋建筑共用一份 Mesh 和材质烘焙后却像把阴影复制粘贴到了不同楼体上。更明显的情况是门洞阴影出现在没有门的一侧或者建筑旋转后仍保留原方向的遮挡关系。为什么会这样Mesh 保存的是模型几何Lightmap 保存的是静态光照结果。Lightmap 通常根据对象在烘焙时的位置、朝向和周围遮挡生成。网格可以共享但每个实例仍要读取属于自己的图集区域和烘焙数据。在 Unity 工作流中常见检查项是lightmapIndex与lightmapScaleOffset。后者可以理解为“该实例在整张光照图集中的位置和大小”。在 Unreal 中字段和数据组织方式不同应检查对应网格的 Lightmap UV 通道、分辨率、关卡静态光照构建数据及实例化组件配置不要机械寻找同名字段。怎么检查建立一张最小对照表实例网格图集/构建数据索引或映射位置与朝向实际结果building_01mesh_Aatlas_01mapping_01原点、0°待验证building_02mesh_Aatlas_01mapping_02右侧、90°待验证building_03mesh_A按实例化方案记录独立核对后排、0°待验证building_04mesh_A分区加载数据独立核对远处分区待验证逐栋隐藏其他实例只保留当前建筑和调试显示确认它实际读取的图集区域。随后重新打开场景、重新构建并再次加载分区检查映射是否仍然指向正确实例。通过标准不是“重新烘焙一次后暂时正常”而是 4 栋建筑在多次加载后阴影仍分别符合自己的位置、朝向和遮挡关系。第二处UV2没有重叠实例尺度仍可能不一致典型现象模块保持原尺寸时正常放大后墙角开始发黑使用非均匀缩放后接缝一侧清晰、一侧模糊相邻楼体的阴影锐度也明显不同。为什么会这样UV2 通常用于存放烘焙光照坐标。它没有重叠只能证明单个网格内部的光照 UV 没有互相覆盖不能保证不同实例获得了相同的世界空间采样精度。对象缩放、Lightmap 分辨率或 Scale、图集打包结果都会影响每米世界空间能够分到多少光照纹素。一个模块被放大后如果烘焙占用没有相应调整原本足够的图集区域就可能变得过小。怎么检查先复制一份测试场景再应用对象缩放保持灯光、材质和烘焙质量不变。记录 4 个实例的世界尺寸与缩放值Lightmap UV 通道Lightmap 分辨率或 Scale所在图集页每米光照纹素密度接缝两侧的实际清晰度。相同世界尺寸的模块应获得接近的光照纹素密度。若项目确实需要多种尺寸应为它们制定明确的烘焙档位而不是给发黑实例单独调亮材质。材质补偿只能改变表面观感不能修复图集采样不足。第三处静态合批、GPU实例化和HLOD改变了对象组织典型现象未优化的场景光照正常启用静态合批后部分墙面读取错误阴影镜头拉远触发 HLOD 时整栋楼突然变亮关闭相应优化后问题消失。先分清三种机制静态合批可能重新组织静态网格以减少提交开销。GPU 实例化强调用共享几何和材质数据绘制多个实例但每实例能够携带什么数据取决于具体渲染路径和着色器实现。HLOD会在远距离用简化后的代理资产替换一组原对象。三者解决的问题不同也不会自动保证子网格、材质参数、Lightmap UV 和烘焙绑定完全不变。尤其不要默认 Unity 与 Unreal 对实例化静态光照的支持方式相同应分别按目标引擎和渲染管线验证。怎么检查依次生成四组对照版本不启用上述优化只启用静态合批只测试目标实例化路径只启用 HLOD并缓慢跨越切换距离。每组记录子网格数量、材质槽、光照映射、批处理方式、HLOD 级别和首次异常位置。若某类对象无法安全地同时参与静态烘焙和实例化应把静态建筑、动态附件与远景代理分开管理而不是为了降低 Draw Call 强行塞进同一条路径。第四处可移动门窗没有采到合适的间接光典型现象墙体亮度稳定可移动门进入室内后突然变黑门框正常门板却偏蓝招牌转过一个角度后亮度跳变像是换了一套材质。为什么会这样静态墙面可以读取烘焙 Lightmap可移动物体则通常需要通过光照探针、体积光照或目标引擎提供的动态间接光方案取得环境照明。一个门可能由门框、门板、把手和玻璃等多个 Renderer 或组件组成。如果它们使用不同的采样位置或者默认锚点落在墙后、地下或门洞外各部分就可能读取到不同的环境光。Unity 中可重点检查 Light Probe 与 Probe AnchorUnreal 中则应查看 Volumetric Lightmap 等动态物体间接光数据及对象的移动性设置。两者原理相近但配置入口不能混写。怎么检查显示场景中的探针或体积采样分布让门沿固定路线经过室外、门洞和室内。记录亮度第一次跳变的位置并核对该区域是否存在有效采样数据相邻采样点的亮度差是否过大门框、门板和装饰件是否使用一致、合理的采样参考组件的静态或可移动属性是否设置正确。合格结果应是移动过程中的亮度变化连续同一部件的不同区域没有无法解释的色温差。没有采样覆盖时应明确记录为“未配置”或“待验证”不要提高自发光来掩盖问题。第五处分区重载后仍在引用旧光照数据典型现象第一次进入城市时画面正常。离开并重新进入同一分区后建筑突然变暗、阴影错位或者先全黑一段时间再恢复。为什么会这样流式加载过程中网格、材质、Lightmap、探针数据和场景实例不一定同时就绪。旧实例没有注销、新实例继承旧映射或者渲染器先于光照数据开启都会造成短暂或持续的异常。“等待 0.5 秒再显示”不是可靠修复。不同设备、质量档位和缓存状态下资源加载时间并不相同。怎么检查为每次加载记录以下状态zone_id instance_id mesh_ready lightmap_ready probe_ready mapping_bound render_enabled建议按“建立实例—加载光照资源—绑定映射—确认动态采样就绪—开启渲染”的顺序验证。往返加载同一分区至少 3 次检查旧实例、旧索引和监听器数量是否持续增加。首次进入、重复加载和正式构建的结果应保持一致。只有当前实例所需的光照资源和映射都准备完成才允许显示对应 Renderer 或组件。用12秒最小场景定位问题完整城市包含太多变量可以先把测试压缩成 12 秒04 秒关闭批处理和 HLOD依次显示 4 栋建筑的 Lightmap 图集、索引或对应构建数据。48 秒只启用目标优化方式缓慢移动相机观察批处理或 HLOD 切换前后的变化。812 秒让可移动门穿过门洞同时卸载并重新加载一个分区。每轮至少保存以下字段build_version engine_and_render_pipeline instance_id mesh_id lightmap_or_build_data scale_offset_or_instance_mapping probe_anchor_or_dynamic_light_sample batch_mode streaming_state final_result检查结果统一标记为“已通过、未通过、待验证”。不要只保存最终正常截图还要保留第一次发生错误时的实例编号、画面和加载状态。资产层能修改什么哪些问题必须回到引擎验证如果问题指向 UV2、对象缩放、子网格或材质槽可以回到资产层整理。使用模型编辑处理局部结构能够减少后续导入和拆分成本。但资产编辑不能替代引擎中的 Lightmap 烘焙、实例映射、动态光照采样和流式加载测试。AI 生成 3D 模型可以加快建筑外观与模块草稿的准备不会自动保证最终工程中的 UV、材质、静态光照和运行时配置全部正确。发布前检查清单共享网格的每个场景实例都有可追踪的烘焙映射。UV2 无重叠、无越界实例缩放和光照纹素密度符合项目标准。未优化、静态合批、实例化和 HLOD 已分别做单变量对照。动态门窗的移动性、探针或体积光照采样设置正确。分区卸载后旧实例和旧光照引用已清理。分区重新加载至少测试 3 次没有短暂全黑或映射串位。编辑器与正式构建使用同一测试路线并记录引擎版本和渲染管线。所有未取得运行证据的结论均标记为“待验证”。先查映射再查采样模块化建筑复制后的光照异常建议固定按照“实例映射—UV2 与尺度—优化重组—动态采样—分区重载”的顺序排查。不要把所有问题都归因于材质也不要把一次重新烘焙后的正常画面当作最终结论。真正可交付的结果应该在重新打开场景、重新构建和多次流式加载后仍然一致。你的模块化建筑更常出现阴影复制、动态部件发黑还是分区重载后整栋光照错位