一、灯光模式与烘焙的关系
在URP中,光源的Mode属性决定了其参与烘焙的方式,分为三种模式:
1. Realtime(实时模式)
- 特性:完全动态计算,不生成光照贴图。适用于高频移动光源或需要实时互动的场景(如车灯、爆炸特效)。
- 烘焙影响:不参与烘焙流程,仅影响动态物体。需注意性能消耗,建议配合阴影距离(Shadow Distance)优化。
- 适用场景:PC/主机端高性能需求项目,或需动态调整光源参数的场合。
2. Baked(烘焙模式)
- 特性:完全离线烘焙到光照贴图(Lightmap)中,运行时无实时计算。适合静态环境光(如室内顶灯)。
- 烘焙内容:直接光、间接光、阴影均被烘焙。模型需标记为Static且生成Lightmap UVs。
- 局限:光源位置/角度变化无法实时反映,仅适用于固定光源。
3. Mixed(混合模式)
- 子模式选择:通过
Lighting > Scene > Mixed Lighting
配置:- Baked Indirect:烘焙间接光照,直接光和阴影实时计算。适合动态物体需要正确投影的场景。
- Subtractive:烘焙直接光和阴影,动态物体通过Light Probe接收光照。适用于移动端性能优化。
- Shadowmask:烘焙间接光+阴影贴图,实时计算直接光。在阴影距离内混合实时与烘焙阴影,平衡效果与性能。
- 动态兼容性:静态物体使用烘焙数据,动态物体依赖Light Probe和Reflection Probe。
二、场景模型静态设置
1. 静态标记
- 在Inspector中勾选Static,启用
Contribute Global Illumination
和Reflection Probe Static
。 - 注意事项:
- 动态物体切勿标记Static,否则烘焙数据失效。
- 复合模型需拆分独立子网格,避免UV重叠导致光照错误。
2. 光照贴图UV生成
- 模型导入设置中勾选Generate Lightmap UVs,调整
Pack Margin
避免贴图边缘渗色(建议2-5像素)。 - UV检查:使用Scene视图的
Baked Lightmap
模式查看UV分布,确保无拉伸或重叠。
3. 优化参数
- Lightmap Resolution:根据模型尺寸调整(单位:texels/unit)。大型建筑建议5-10,细节物件可提升至20-30。
- Scale in Lightmap:降低不重要物体的缩放值(如地面设为0.5),节省贴图空间。
三、可复用烘焙配置文件的创建
1. 光照参数预设
-
在
Lighting > Lightmap Parameters
中创建.asset
文件,保存以下配置:- Resolution: 40 texels/unit - Padding: 4 pixels - Compressed: Enabled (移动端必选) - Indirect Intensity: 1.5 (增强间接光反弹) - Baked AO: Enabled (环境遮蔽增强)
-
应用方式:
- 全局应用:在Lighting窗口选择预设。
- 局部覆盖:为MeshRenderer单独指定参数。
2. 灯光配置预设
- 创建空Prefab,附加灯光组件并设置参数(如Mixed模式+Shadowmask)。
- 使用Prefab Variant派生不同场景的特化版本,保持核心参数一致性。
3. 烘焙数据保存与复用
-
脚本方案:通过
PrefabLightmapData
脚本将光照贴图与UV信息嵌入Prefab:// 示例代码:保存烘焙数据到预设 [SerializeField] private Texture2D[] lightmaps; [SerializeField] private RendererInfo[] rendererInfo; void Awake() { LightmapData[] combined = new LightmapData[lightmaps.Length]; for(int i=0; i<lightmaps.Length; i++){ combined[i] = new LightmapData {lightmapColor = lightmaps[i]}; } LightmapSettings.lightmaps = combined; ApplyRendererInfo(rendererInfo, 0); }
-
操作流程:
- 烘焙完成后将模型拖入Project窗口生成Prefab。
- 附加脚本并点击
Assets/Bake Prefab Lightmaps
保存数据。 - 跨场景使用时,确保新场景的Lightmap Settings与烘焙时一致。
四、常见问题解决方案
问题现象 | 原因 | 解决方法 |
---|---|---|
烘焙后模型无光照 | - 未标记Static - UV未生成 | 检查Static标记,重新生成Lightmap UVs |
光照贴图模糊 | Resolution过低 UV拉伸 | 提升Resolution,调整模型UV分布 |
GPU烘焙中断 | 显存不足/驱动不支持 | 改用CPU烘焙或升级显卡 |
阴影边缘锯齿 | 软阴影采样不足 | 在URP Asset中提升Shadow Cascade数 |
通过以上配置,可系统化实现URP下的高效烘焙工作流,兼顾视觉效果与运行性能。建议在项目初期建立参数模板,结合版本控制管理光照预设,提升团队协作效率。