Unity【LOD Group】- 关于性能优化中LOD的使用与总结

LOD是性能优化中常考虑的一项内容,本文分为以下部分介绍LOD的相关内容:

 

目录

一、什么是LOD:

二、LOD如何使用:

三、使用LOD的弊端:

四、使用LOD的注意事项:


一、什么是LOD:

LOD技术(level of detail)被称作多层次细节,它的原理是模型物体在场景中根据距离相机的远近来显示不同细节程度的模型,距离渐近时,显示细节程度较高的模型,距离渐远时,显示细节程度较低的模型,从而节省性能的开销。

二、LOD如何使用:

Unity中通过LOD Group组件来实现LOD,如图所示的集装箱模型,我们准备了四个不同细节程度的Mesh网格:

新建一个空物体,添加LOD Group组件,默认是分为3个层次,最后的Culled层是指的剔除层,不会渲染任何模型:

这里我们需要四个层次,通过选中一个层次右键/Insert Before插入一个:

通过Add来添加不同层次要渲染的Mesh网格:

添加完成后在场景中进行预览:

除了在Inspector检视面板设置LOD外,在代码中也可以进行设置,LOD Group类中提供了SetLODs函数:

//
// 摘要:
//     Set the LODs for the LOD group. This will remove any existing LODs configured
//     on the LODGroup.
//
// 参数:
//   lods:
//     The LODs to use for this group.
[MethodImpl(MethodImplOptions.InternalCall)]
[FreeFunction("SetLODs_Binding", HasExplicitThis = true)]
public extern void SetLODs(LOD[] lods);

 测试代码:

using UnityEngine;

public class LODExample : MonoBehaviour
{
    private void Start()
    {
        LODGroup group = gameObject.AddComponent<LODGroup>();
        LOD[] lods = new LOD[4];
        for (int i = 0; i < lods.Length; i++)
        {
            lods[i] = new LOD(1 - (i + 1) * .2f, new Renderer[] { transform.GetChild(i).GetComponent<Renderer>() });
        }
        group.SetLODs(lods);
        group.RecalculateBounds();
    }
}

三、使用LOD的弊端

弊端也是显而易见的,首先是增加建模同事的工作量,要准备不同细节程度的模型,当然有很多自动减面的插件,例如资源商店中的Mesh Simplify插件,但是程序减面多多少少会破坏模型的原有外观,最理想的情况还是建模人员手动减面。另外,大量的模型文件不但会增加包体的大小,而且在运行时会大量增加内存消耗,因此对于LOD有一句空间换取时间的评价,当然最终是否采用LOD技术要根据具体情况而定,性能优化无非是CPU、GPU与内存之间的取舍。

四、使用LOD的注意事项:

只有最高层次细节的模型才会参与静态光照的烘焙,如图所示,当集装箱物体上的LOD0过渡到LOD1时会变黑,因为LOD1没有参与静态光照烘焙。

如果我们希望细节程度较低的模型看起来也正常,需要在周围放置Light Probe Group 即光照探针,以获取烘焙过程中的间接光照。

具体可以参考官方文档:https://docs.unity.cn/2017.2/Documentation/Manual/LODForBakedGI.html

  • 9
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderZ1010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值