Unity 模型的动态LOD优化
Posted 吾无法无天
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity 模型的动态LOD优化相关的知识,希望对你有一定的参考价值。
文章目录
前言
上一节主要讲述了动态生成球体模型的思路及正二十面体的生成,这一节我们来讲讲如何实现实现。因为将来要是生成的是一个6371km并具有一定分辨率的球体,若将每个顶点都细分计算出来,这样的顶点数无疑会是个天文数字,如此巨大的开销在目前的主流PC设备上,想要流畅运行几乎是不可能的。并且unity中单个模型的顶点数也不能超过65535,所以必须用多个模型来组成一个球体,这些模型的管理也是一个比较大的性能开销。所以这里使用LOD技术,在不影响整体效果的情况下,对距离玩家近的部分,细节程度越高,顶点越密集;反之细节程度越低,顶点越稀疏。
关于LOD技术
LOD技术(Level Of Detail)指用若干不同复杂度的模型来表示同一对象的技术。此技术主要根据视点距离对象位置的变化调用不同复杂度的模型,即在较远时调用低复杂度模型,在较近时调用高复杂度模型。采用该技术虽然会损失一定的逼真程度,但可以减少场景绘制的多边形的数量,节约了系统资源,与它提高的性能来说ÿ
Unity学习-优化_LOD技术
最近项目的需求被策划那边卡流程了,在大改,没什么事情做
于是开始自己找点不会的东西来学一下了
这里会记录我得学习经历,采用费曼学习法来提示自己
LOD
Unity会根据摄像机的远近距离调整模型的显示效果
其中效果是需要我们去提供的
在给物体添加LOD Group组件之后 会出现有4块颜色不同的区域,这里就是告诉我们的层级权重关系
在scene视图下我们可以拖动上面的摄像机小图标可以预览实际效果
其中分为4个层级
1:LOD0 100% 权重显示
2:LOD1 60% 权重显示
3:LOD2 30%权重显示
4:这是看不到的位置,做剔除处理
这上面的30% 60% 100%不是一个具体参数,只是在告诉我们这个物体的距离和显示关系。越小越看不到
点击其中一个LOD
可以增加renderers,这里的检索范围是Hierachy里面的物体,也就是被创建出来的物体,而且只会检索带MeshRender组件的物体
我们在每一个阶段放一个CUBE,位置相同,颜色不同以作区分,因为在实际的用处中,这里会替换成实际的模型 ,3个显示等级
对应【1种物体的3种规格模型】,没一种规格的模型顶点,贴图都会做不同的精度设置 达到我们优化的目的
这里我们用3种颜色代替3种精度达到我们想要的效果
拖动摄像机,即可预览实际效果
首先设置3种显示效果
1.创建3个CUBE
2.新建3个材质球,达到我们自定义CUBE颜色的目的
3.将材质球赋给各个CUBE
如图
cube1:
cube2:
cube3:
当实际的摄像机和物体的距离在LOD1的阶段时显示为红色
在距离达到LOD1位置的生活,显示为黑色
LOD2的生活 显示为绿色
到这里,我们就可以从逻辑上面达到可以根据摄像机的距离,来控制物体的显示效果了
接下来就可以和美术沟通,如果对应实际需求了。
这样做有一个弊端,每个游戏物体都需要对应3套精度的模型,在效率上会增加,但是优化的效果不错。
而且在场景比较简单的情况下,实用LOD本身会占用一部分的开销,如果一个简单的场景,本身的开销并不大
实用LOD的开销甚至比优化掉的开销还打,就会得不偿失了。
至于具体决定使不使用就看小伙伴们的项目组啦~
以上是关于Unity 模型的动态LOD优化的主要内容,如果未能解决你的问题,请参考以下文章
Unity优化篇| Unity3D场景 常用优化策略,遮挡剔除层消隐距离技术 和 LOD多层次细节