您的位置:首页 > 房产 > 建筑 > Unity 预制动态绑定光照贴图遇到变白问题

Unity 预制动态绑定光照贴图遇到变白问题

2025/1/24 8:47:39 来源:https://blog.csdn.net/yhy2218/article/details/140804541  浏览:    关键词:Unity 预制动态绑定光照贴图遇到变白问题

预制绑定光照贴图,网上解决方案很多,已下是要点:

//烘培完场景之后,保存光照贴图信息
void StoreLightmapData()
{lightMap.Clear();LightmapData[] lds = LightmapSettings.lightmaps;foreach (LightmapData data in lds){CustomLightMapData cd = new CustomLightMapData();cd.lightMapDir = data.lightmapDir;cd.shadowMask = data.shadowMask;cd.lightMapColor = data.lightmapColor;lightMap.Add(cd);}
}
//因为预制不保存光照信息
//保存预制中MeshRenderer 的光照信息到存储列表
private void GetChildData(Transform parent)
{if (parent.gameObject.isStatic){var render = parent.GetComponent<MeshRenderer>();if (render != null && render.lightmapIndex >=0){datas.Add(new RenderLightmapData(render, render.lightmapIndex, render.lightmapScaleOffset));}}for (int i = 0; i < parent.childCount; i++){GetChildData(parent.GetChild(i));}
}
//加载预制是执行脚本方法public void SetAllLightmapData()
{SetRenderSetting();LightmapData[] lightmapDatas = new LightmapData[lightMap.Count];for (int i = 0; i < lightMap.Count; i++){CustomLightMapData cd = lightMap[i];LightmapData ld = new LightmapData();ld.lightmapDir = cd.lightMapDir;ld.lightmapColor = cd.lightMapColor;ld.shadowMask = cd.shadowMask;lightmapDatas[i] = ld;}LightmapSettings.lightmaps = lightmapDatas;for (int i = 0; i < datas.Count; i++){if (datas[i]._renderer == null){Debug.LogError("redner is null index="+i);continue;}datas[i]._renderer.lightmapIndex = datas[i]._lightmapIndex;datas[i]._renderer.lightmapScaleOffset = datas[i]._lightmapScaleOffset;}
}

以上大致代码,思路就是烘培完之后把光照信息绑定到脚本上,加载预制时脚本再还原光照信息

其中遇到的问题就是,加载完预制还原光照信息后,物体变白

原场景烘焙之后效果图:

加载到其他场景效果图:

显示效果变的特别白

问题的原因

问题原因及结论:

如果烘培场景光照贴图选择定向模式(Directional),那么使用预制场景可以设置定向或者非定向都可以

如果烘培场景光照贴图选择了非定向模式(Non-Directional),那么使用预制场景只能设置为非定向模式

我遇到的问题是烘培场景选择了Non-Directional ,但使用场景使用了定向模式

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com