当前位置: 首页 > news >正文

【unity游戏开发——优化篇】Unity6.2新功能介绍——Mesh LOD的使用

文章目录

  • 前言
  • 一、Mesh LOD与LOD Group对比
  • 二、实战
    • 1、为网格生成Mesh LOD数据
    • 2、预览效果
    • 3、mesh renderer中的mesh lod
    • 4、设置全局的mesh lod质量阈值
  • 参考
  • 专栏推荐
  • 完结

前言

Unity6.2新功能介绍——Mesh LOD,在模型导入时根据尽量保留原始形状和避免视觉错误两个前提下确定需要合并和需要保留的三角形,并将三角形索引放到原始网格的索引缓冲区中,并做多次简化迭代生成多级LOD。

Mesh LOD简化细节

  • 原始网格必须至少包含256个三角形才能开始简化
  • 每次简化不会添加任何新顶点,所有LOD都会重复使用原始网格的顶点缓冲区
  • 每个后续层级的LOD包含的索引数量大约是前一层级LOD的一半。
  • 当三角形数量不足(小于64)、生成器不能再省略任何顶点或达到导入设置的LOD限制时停止简化。

一、Mesh LOD与LOD Group对比

之前我们已经介绍了LOD Group的使用:LOD技术根据物体与摄像机的距离来动态调整模型的细节程度——LODGroup的使用,Mesh LOD其实有点像LOD Group的升级版。

Mesh LODLOD Group
内存占用小内存占用高
不会优化材质可以优化指定层级LOD
导入时创建LOD自定义创建LOD
隐式控制LOD转换参数需用户定义指明LOD层级参数
不支持Instancing、ParticalSystem与VFX全支持
仅在GPU Resident Drawer开启时支持Cross Fade支持Cross Fade
仅支持三角形拓扑不限
由于生成LOD时不考虑蒙皮权重和Morph形变对Skinned Mesh Rendererx对象支持有限制由于是自定义创建可以规避变形影响
适用于高顶点密度相对平坦的平面,对于曲率较高或不相连的子网格可能带来不良效果不受限制

注意:每个模型对象最好选择Mesh LODLOD Group,不要两种混合在一起用,因为那样既浪费内存,也会影响效率。

二、实战

1、为网格生成Mesh LOD数据

我们在模型导入的inspector中,开启Generate Mesh LODs,再点击apply就可以为网格生成Mesh LOD了
在这里插入图片描述

  • Discard Odd Levels可以丢弃奇数索引的LOD层,以此来减少LOD层级的数量。虽然此选项可以提高部分性能,但也会增加出现视觉误差的可能性。
  • limited LODs:可以限制生成LOD层级数量,也就是生成多少层LOD后,跳出简化迭代

2、预览效果

开启这个选项后,需要可以前往网格窗口修改maximum level来定义最大限制级别数,预览不同级别的效果
在这里插入图片描述
在这里插入图片描述

3、mesh renderer中的mesh lod

生成mesh lod后,我们还可以在每个mesh renderer中,找到mesh lod标签
在这里插入图片描述

  • 我们可以通过LOD Override来禁用mesh lod的自动选择,这样我们可以自定义为每个mesh renderer设置mesh lod层级
    在这里插入图片描述

  • 而LOD Selection Bias,侧是会被添加到计算LOD索引的值,增加Bias后LOD的索引值等于计算索引值加上BIOS值之后取floor,也就是向下取整来作为LOD的索引值

4、设置全局的mesh lod质量阈值

前面两种方法都可以自定义每个mesh rendererl的LOD,我们还可以在project settings中,为每个质量层级再设置全局的Mesh LOD质量阈值
在这里插入图片描述
这个值越小越倾向于更少的细节,这样做可以为不同平台设置不同的质量细节。

参考

https://www.bilibili.com/video/BV15zdEYsE12/


专栏推荐

地址
【unity游戏开发入门到精通——C#篇】
【unity游戏开发入门到精通——unity通用篇】
【unity游戏开发入门到精通——unity3D篇】
【unity游戏开发入门到精通——unity2D篇】
【unity实战】
【制作100个Unity游戏】
【推荐100个unity插件】
【实现100个unity特效】
【unity框架/工具集开发】
【unity游戏开发——模型篇】
【unity游戏开发——InputSystem】
【unity游戏开发——Animator动画】
【unity游戏开发——UGUI】
【unity游戏开发——联网篇】
【unity游戏开发——优化篇】
【unity游戏开发——shader篇】
【unity游戏开发——编辑器扩展】
【unity游戏开发——热更新】
【unity游戏开发——网络】

完结

好了,我是向宇,博客地址:https://xiangyu.blog.csdn.net,如果学习过程中遇到任何问题,也欢迎你评论私信找我。

赠人玫瑰,手有余香!如果文章内容对你有所帮助,请不要吝啬你的点赞评论和关注,你的每一次支持都是我不断创作的最大动力。当然如果你发现了文章中存在错误或者有更好的解决方法,也欢迎评论私信告诉我哦!
在这里插入图片描述

http://www.dtcms.com/a/273881.html

相关文章:

  • Redis数据类型之list
  • Vue3的组件通信方式
  • (1-7-2)Mysql 数据表的相关操作
  • ollama大模型spring单机集成
  • 输入输出练习
  • C++入门基础篇(二)
  • 【C语言网络编程】HTTP 客户端请求(域名解析过程)
  • P9755 [CSP-S 2023] 种树
  • 浮点测试初探
  • Genus:设计信息结构以及导航方式(路径种类)
  • Java中的泛型继承
  • 【C语言进阶】带你由浅入深了解指针【第四期】:数组指针的应用、介绍函数指针
  • 【Spring Boot】Spring Boot 4.0 的颠覆性AI特性全景解析,结合智能编码实战案例、底层架构革新及Prompt工程手册
  • mysql的LIMIT 用法
  • 1 APP-OneNET 生成token密钥
  • Ubuntu2404修改国内镜像
  • 我的第一个开源项目|Geex:道阻且长的开源之路
  • docker的学习
  • React中Redux基础和路由介绍
  • 将手工建模模型(fbx、obj)转换为3dtiles的免费工具!
  • threejs案例开发-中国3D国旗动画
  • PostgreSQL 查询库中所有表占用磁盘大小、表大小
  • [Meetily后端框架] 多模型-Pydantic AI 代理-统一抽象 | SQLite管理
  • 共享储能电站在工业用户经济调度中的matlab仿真
  • 需求升级,创新破局!苏州金龙赋能旅游客运新生态
  • Go中使用wire进行统一依赖注入管理
  • 【JavaScript高级】构造函数、原型链与数据处理
  • 3 OneNET-调试器模拟上报数据
  • 深入理解Spring声明式事务的同步管理机制
  • C++ 面向对象 - 对象定义方法汇总