LOD初探

Posted by 蔡华的博客 on October 9, 2016

概念

  • LOD全称是Level of Detail,也就是细节层级。
  • 为什么会产生这个技术?根据官方教程的解释是因为在一个很大的场景中,需要进一步考虑性能问题。LOD就是一个很好的解决性能问题的方案,它根据物体与摄像机的距离来展示这个物体不同的mesh,从而使得物体较远是使用面数比较少的mesh,而距离近的时候使用面数多的mesh。

如何使用

  • LOD在unity中的使用极为简单,基本分为以下几个步骤
  1. 创建一个空GameObject,然后加上LOD Group组件。

  2. LOD Group中选择某个LOD块会出现

  3. 拖动对象到add按钮上后就设置了当前level下的模型。

  4. 依次设置完0、1、2的模型,需要注意LOD 0 表示摄像机最近距离显示,因此模型质量最高,数字越大距离摄像机越远,模型质量越低。

  • 最终效果

我设置的是绿色cube在LOD 2,黄色在LOD 1,红色是0,因此从右下角的camera preview看到摄像机距离对象最远时显示的绿色,依次变为黄色和红色。

几个参数的设置

  • 在setting的quality中有LOD的两个参数

Maximum LOD Level:最大LOD级别,表示游戏中使用的最高LOD级别。在该级别以上的模型不会被使用,并且在编译时忽略。(这将节省存储空间和内存空间)。

Bias LOD:LOD偏离 ,LOD级别基于物体在屏幕上的大小。当物体大小在两个LOD级别之间,可以选择使用低细节模型或高细节模型。数值取值范围为0-1,数值越接近0,越偏向于选择低细节模型。即是:如果该值小,那么摄像机离物体距离稍微有些变化,不同细节物体即会切换,该值大,那么摄像机需要与物体有很大的距离才会切换。

缺点

  • 它的缺点是需要占用更多的内存,而且如果没有调整好距离的话,可能会造成模拟的突变。

  • 如果不想占用内存还有种办法是只设置一个LOD在group中,可以通过代码实现,这样只用一个模型即可,不过如果刷新不够快或者设置的不合适可能出现视野中突然多了个物体的情况。