Unity3D场景渲染/卡顿/搭建优化 遮挡剔除/层消距离技术/LOD(多层次细节)
效果实现图:
一、遮挡剔除 简单理解:摄像机看不到的物体场景中不会渲染显示 实现方法: 在场景中选中需要遮挡剔除的物体,我这里是竹子 设置遮挡静态 接下来做场景的烘焙 等待烘焙的完成 选择遮挡剔除窗口的Visualizatior,运行程序移动摄像机即可看到效果 经过调试,在远处时摄像机看到的物体较多,所有的物体都会被加载出来,帧率也比较低,在近处时,物体有很多看不见,不会被加载,帧率较高,我这里大概有近3000FPS的差值
二、层消隐距离技术 简单理解:因距离太远太小而看不见的物体将其隐藏。 选中要剔除的物体,新建一个层级并给它添加 编写脚本,随便挂在一个场景中的物体上
using UnityEngine;
public class LayerBlankingDistance : MonoBehaviour
{
public float Distance = 10;
public int Layer = 9;
float[] distance = new float[32];
void Start()
{
distance[Layer] = Distance;
Camera.main.layerCullDistances = distance;
}
}
层级要相互对应 实现效果: 三、LOD技术(多细节层次) 简单理解:根据摄像机与模型的距离来决定显示哪一个模型,一般距离近的时候显示高精度多细节模型,距离远的时候显示低精度低细节模型,以内存做消耗来优化GPU
新建一个空物体,为其添加LOD组件,空物体下放高低中模 点击对应模块添加对应模型,同时可以滑动模块设置显示距离 效果: LOD的Cross Fade模式: 让两个模型之间的过渡带有动画效果 Speed模式:仅用于在两个Mesh LOD级别间进行混合,即当前和下一个LOD级别都具有Mesh Renderer时,当转换到Billboard LOD 级别或完全淡出时,Unity会执行Cross Fade风格的混合
在Project setting面板下可以去设置更多的参数 Maximum LOD Level:最大LOD级别,表示游戏中使用的最高LOD级别。在该级别以上的模型不会被使用,并且在编译时忽略。(这将节省存储空间和内存空间)。
LOD Bias: LOD偏离,LOD级别基于物体在屏幕上的大小。当物体大小在两个LOD级别之间,可以选择使用低细节模型或高细节模型。数值取值范围为0-1,数值越接近0,越偏向于选择低细节模型。
|