【unity游戏开发——优化篇】LOD技术根据物体与摄像机的距离来动态调整模型的细节程度——LODGroup的使用
LOD技术是一种根据物体与摄像机的距离动态调整模型细节的优化方法,通过使用不同精细度的模型来平衡渲染效果与性能。本文详细介绍了Unity中LOD Group组件的使用方法,包括添加组件、设置不同细节层级模型、调整过渡效果等操作步骤。同时指出了LOD技术的弊端(如增加内存消耗和建模工作量)以及光照贴图烘焙的注意事项,并预告了Unity6.2的新Mesh LOD功能。文章还提供了CrossFade淡入
文章目录
前言
1、什么是LOD技术
LOD(Level of Detail,细节层次)是一种优化技术,它根据物体与摄像机的距离来动态调整模型的细节程度。基本原理是:
-
当物体距离摄像机较远时,使用低多边形数量的简化模型
-
当物体距离摄像机较近时,使用高细节的精模
-
在这之间可以有多个中间过渡层级
这种技术可以显著减少渲染负担,提高游戏运行效率,特别是在开放世界或场景中有大量复杂模型的游戏中。
官方文档:https://docs.unity.cn/cn/2023.2/Manual/class-LODGroup.html
2、Lod技术的意义
如果模型一直使用同样的精细模型,会造成性能的浪费。比如下面三个模型
显示网格,查看模型精细程度
如果距离相机比较远的话,看起来其实是一样的,但是精细的模型肯定会更加消耗性能
Lod技术就是实现模型离得远自动使用最粗糙的模型,离得近使用精细的模型。
一、实战
1、添加LOD Group组件
新建一个空物体,添加LOD Group组件。
LOD Group
默认包含4个层级:
LOD0
(最高细节,最近距离)LOD1
LOD2
Culled
(剔除层,完全剔除,不会渲染任何模型,最远距离)
如果我们需要添加第五个层次,可以通过选中一个层次右键/Insert Before插入到前面,再插入一个层次
2、拖入模型
拖入模型,或者点击ADD来添加不同层次要渲染的Mesh网格,在LOD0
层放置最精细的模型,LOD2
放置最粗糙的模型 。
这里我分别添加不同形状的mesh模型做演示
3、效果
随着相机的远近unity会自动切换不同精度的模型
我们也可以拖动模型距离的占比,拉动相机查看演示效果
二、补充知识
1、CrossFade淡出淡入效果
LODGroup有这样一个参数:Fade Mode
淡化模式。它可以设置层级间过渡方式。
- None:直接切换
- Cross Fade:淡入淡出过渡
- Speed Tree:专为SpeedTree资源设计
当我们勾选了Cross Fade发现效果不明显
我们可以修改每层的Fade Transition Width
参数,越小越慢渐变,越大越快开始渐变。
比如这里我修改的LOD0、LOD1、LOD2的值分别是0.05、0.1、0.3
效果
2、使用LOD的弊端:
弊端也是显而易见的。
- 增加了建模同事的工作量,要准备不同细节程度的模型,当然有很多自动减面的插件,例如资源商店中的Mesh Simplify插件,但是程序减面多多少少会破坏模型的原有外观,最理想的情况还是建模人员手动减面。
- 大量的模型文件不但会增加包体的大小,而且在运行时会大量增加内存消耗,因此使用LOD就是内存换性能。
不过最近出的unity6.2版本新增了一个
Mesh LOD
功能,很好的解决了这些问题,后面我会出文章单独介绍它,敬请期待。
3、LOD烘焙光照贴图的问题
只有最高层次细节的模型才会参与静态光照的烘焙,如图所示,当集装箱物体上的LOD0过渡到LOD1时会变黑,因为LOD1没有参与静态光照烘焙。
如果我们希望细节程度较低的模型看起来也正常,需要在周围放置Light Probe Group
即光照探针
,以获取烘焙过程中的间接光照。
具体可以参考官方文档:https://docs.unity.cn/2017.2/Documentation/Manual/LODForBakedGI.html
光照探针知识我后面也会单独写文章介绍,可以参考:待补充
参考
https://docs.unity.cn/cn/2023.2/Manual/class-LODGroup.html
https://cloud.tencent.com/developer/article/2086345
https://chat.deepseek.com/a/chat/s/02ed6f3a-7e3f-480a-93ce-e6b2b1026f1e
专栏推荐
完结
好了,我是向宇
,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。
赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注
,你的每一次支持
都是我不断创作的最大动力。当然如果你发现了文章中存在错误
或者有更好的解决方法
,也欢迎评论私信告诉我哦!
更多推荐
所有评论(0)