Unity之LOD代码研究

模型渲染占用CPU过多,可采用LOD技术,降低远处模型精度,使得渲染CPU占用率下降,配合使用的还有灯光烘焙技术,灯光烘焙可以建模软件烘焙后直接使用,也可以U3的直接烘焙,此处暂且不讲。

LOD重要的组件LODGroup部件,此部件为一个封闭组件,改动LOD的等级和render显示后,需要重新设置SETLod方可正常使用。由此LODGroup的每个层级的比例属性screenRelativeTransitionHeight不能直接设置使用。

1、LOD层级和渲染的重新构造

        LOD[] lods = new LOD[2];
        Renderer[] renderers = new Renderer[1];
        //LOD0:
        renderers[0] = cubeTra.GetComponent<Renderer>();
        lods[0] = new LOD(1.0F, renderers);

        //设置lod参数
        lods[0].screenRelativeTransitionHeight = lodFloat;
        lods[1].screenRelativeTransitionHeight = 0f;
        //lod应用
        cubeTra.parent.GetComponent<LODGroup>().SetLODs(lods);
        cubeTra.parent.GetComponent<LODGroup>().RecalculateBounds();

2、构造后探测LOD现在显示的等级

LOD使用的时候,是显示其render,模型并不会被隐藏。

但可用以下方法探测正在显示的render。

 private IEnumerator CheckLOD_RenderVisible()
    {
        yield return new WaitForSeconds(0.01f);

        Transform lodTrans = cube.GetComponentInParent<LODGroup>().transform;

        foreach (Transform item in lodTrans)
        {
            var rend = item.GetComponent<Renderer>();
            if (rend == null)
            {
                Debug.Log("lodFloat: ");
            }
            else
            {
                if (rend.isVisible)
                    Debug.Log(item.name);
                else
                {
                    Debug.Log("rend.isVisible:" + rend.isVisible);
                    var lodGGG = cube.GetComponentInParent<LODGroup>().GetLODs(); 
                } 
            } 
        }
    }

3、运行中强制操作LOD参数

手机游戏中经常有模型精度选择,ForceLOD此函数可以控制模型精度。

参数为int型,值为-1,则正常显示,超出LODGroup等级则不显示render。

参数1,则显示LOD1,以此类推;

lodG = gameObeject.GetComponent<LODGroup>();
lodG.ForceLOD(1); 

END!!!

兄弟们,点个赞呗,激情易退,热血难凉。

附赠照片一张;

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值