LOD技术有点类似于Mipmap技术,不同的是,LOD是对模型建立了一个模型金字塔,根据摄像机距离对象的远近,选择使用不同精度的模型。

它的好处是可以在适当的时候大量减少需要绘制的顶点数目。

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

通过一个例子来说明他的用处:

我们使用了3dsmax来说明LOD模型的制作,下载附件后打开场景文件,里面是三个面数不同的油桶造型,由左到右分别代表了高模,一般与低模的模型结构。

选择左边的油桶模型,如图所示,这个模型的数据为三角面712,顶点数358。

选择右边的模型,这个低模的数据很符合我们的要求,一般来说,用三个模型来制作LOD的效果就很足够了,例如建筑场景里面,最远端的房子只能看到类似盒子的效果,而镜头前面的楼房则是可以清楚的看到里面的许多细节,但是镜头推进到远处的楼房时,原来的盒子立即换成另一个可以战胜细节的模型,这个就是LOD的运作原理。

将模型保存为FBX后,导入Unity进行测试,命名的方式建议是在物件的后面加上LOD的层级代号,这样比较方便我们直接用名称来选择高模与低模。

在制作LOD之前,我们需要注意一个事情,那就是将不同面数的模型放在同一个位置,否则会发生模型位置错乱的情况,如图所示,使用Reset方式将中间的模型与低模移到与高模相同的位置。

 

接着建立一个空的Game Object,将其命名为prop_Barrell,我们准备用在这个空组件上面添加LOD的属性。

选择Component > Rendering > LODGroup,然后就可以对LOD开始进行设置的工作。

在LODGroup的设置里面列出了LOD的层级,底下的Add用来添加LOD所对应的模型,操作方法是先选择LOD : 0,按下Add,选择场景里面的prop_barell_LOD0模型。

系统弹出一个提示,询问是否将这个选择的模型设置子物体,选择Yes,Reparent即可。

如图所示,在选择Reparent后,LOD0的模型自动的设置为prop_Barell的子物件。

设置完成LOD:0的层级后,选择LOD:1,按下Add,选择场景内的prop_barell_LOD1,接着选择LOD:2,按下Add,选择prop_barell_LOD2后即可完成整个LOD的设置。

现在滑动LODGroup上方的相机图标来测试LOD的效果,模型在近处时使用的是LOD0所设置的高模,移到LOD1时则是显示为一般进度的模型,而在LOD3的层级时,模型就换为低模,移到最后的Culled插件,模型已经完全的消失了。

 

此外,我们还可以任意的修改每一个层级的作用范围,只要拖动LOD分隔的线段即可,然后再根据相机的预览来调整出最合适的LOD效果。

Unity的资源商店也提供了功能更为强大的LOD设置插件,以下为试用版的链接,如果是用于商业项目,请支持正版。

Smart LOD 1.0 - 大场景的优化神器(比unity自带的优化效率更高!)

http://www.narkii.com/club/thread-320869-1.html

同样还有Simple LOD等

在资产的导入管线基于LOD的命名约定

为了简化LOD设置,Unity在模型导入时有一个命名约定。

简单地创建你网格,名称后缀为_LOD0,_LOD1,_LOD2等,会为你创建LOD组,并作出相应的设置。

请注意,该约定假定最高分辨率的网格的LOD后面的数字是最小的。

质量设置你可以为每个平台条件LOD设置,特别是LOD偏移和最大LOD层次。

[转自] http://www.narkii.com/club/thread-321290-1.html

[转]unity之LOD的更多相关文章

  1. 关于Unity中LOD和渲染队列----渲染通道通用指令(一)

    每个shader里面有很多的subshader,如果所以的subshader都不执行的话就,就执行fallback.每个subshader都可以设置一个LOD,整个shader也有一个LOD. 系统就 ...

  2. Unity优化方向——优化Unity游戏中的脚本(译)

    原文地址:https://unity3d.com/cn/learn/tutorials/topics/performance-optimization/optimizing-scripts-unity ...

  3. Unity3d笔试题大全

    1.       [C#语言基础]请简述拆箱和装箱. 答: 装箱操作: 值类型隐式转换为object类型或由此值类型实现的任何接口类型的过程. 1.在堆中开辟内存空间. 2.将值类型的数据复制到堆中. ...

  4. Light Probes

    LightProbes (光照探针,光探测器?) 提供了一种方法用于捕获和使用 穿过场景中空白空间的 光(light)的信息. 和光照贴图相似(lightmaps),Light Probes也存储关于 ...

  5. Unity 中实现粒子系统的 LOD

    模型的 LOD 比较简单,直接使用 Unity 提供的组件 LODGroup 挂到模型物体上,然后分别指定不同 LOD 级别的 Renderer 即可. LODGroup 并不是用距离来控制 LOD, ...

  6. Unity3D for VR 学习(10): Unity LOD Group 组件

    LOD (Level of Detail), 远小近大思想. LOD,在Unity中是用到了空间换时间的优化方法:即程序加载2套模型,导致包会增大:在运行时刻,远处的用面数少的模型–模糊一些,近处用面 ...

  7. Unity中的Lod

    http://blog.csdn.net/bigpaolee/article/details/48521371 LOD是( Level of Detail)的缩写,表示细节级别. 这里注意下,Lodg ...

  8. Unity Lod

    LOD是Level Of Detais 的简称,多细节层次,根据摄像机与物体距离,unity会自动切换模型.一般离摄像机近的时候显示高模,离摄像机远的时候显示低模,借此来提升性能. 如果你在Blend ...

  9. Unity性能优化——LOD技术

    LOD,中文名多层次细节,是游戏中最常用的技术,它按照模型的位置和重要程度决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算.今天我们来实现使用它来做一个简单的优化例子. ...

随机推荐

  1. Map的嵌套,HDU(1263)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1263 新学的map的嵌套 #include <stdio.h> #include < ...

  2. 2017.11.7 JavaWeb------Servlet过滤器

    JavaWeb------Servlet过滤器 (1)过滤器是web服务器上的组件,它们对客户和资源之间的请求和响应进行过滤.Servlet 过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响 ...

  3. 探索性数据分析EDA综述

    目录 1. 数据探索的步骤和准备 2. 缺失值处理 为什么需要处理缺失值 Why data has missing values? 缺失值处理的技术 3. 异常值检测和处理 What is an ou ...

  4. MapReduce计算每年最大值

    1. 测试文件生成程序,参考 https://www.cnblogs.com/jonban/p/10555364.html MapReduce程序示例如下: 2. 新建Maven项目  hadoop ...

  5. Gtk-Message: Failed to load module “canberra-gtk-module”

    编写wxPython程序时,总是报以下错误: Gtk-Message: Failed to load module “canberra-gtk-module” 解决办法:apt-get install ...

  6. django视图层(views)

    1.视图层概念 视图函数,其实就是一个简单的函数,它接收web请求并返回web响应(响应的可以是一个html,一个重定向,一个xml文档等等) 每个视图函数都负责返回一个HttpResponse对象. ...

  7. 【模板时间】◆模板·I◆ 倍增计算LCA

    [模板·I]LCA(倍增版) 既然是一篇重点在于介绍.分析一个模板的Blog,作者将主要分析其原理,可能会比较无趣……(提供C++模板) 另外,给reader们介绍另外一篇非常不错的Blog(我就是从 ...

  8. Java - 静态方法的线程安全问题

    若该静态方法中有对某个静态属性操作,那么它就不是线程安全的,反之,若只对实例属性操作,那么它就是线程安全的.     补充说明,因为,静态方法不对特定的实例操作,只能访问静态成员.实例方法可对特定的实 ...

  9. C#爬虫实践

    忘了什么时候加的,iPad上的人人视频追剧了<我的天才女友>,没事的时候看了下,感觉还不错,进一步了解到原著那不勒斯四部曲,感觉视频进度有些慢,就想找找书看看,一时没找到[PS:购买实体书 ...

  10. vue学习--Props

    Props:        props用以从父组件接收数据:                     使用:                Vue.component('child',{        ...