什么是LOD
LOD是Level Of Details的缩写即多层次细节。在计算机图形学中,LOD就是为了支持当物体远离观察者或者物体的重要程度不同,位置不同,速度不同或者视角相关的参数不同需要减少渲染3D模型的复杂度。LOD技术增加渲染效率的本质是通过增加图形管线的工作量,主要是通过顶点数据进行交换的。大部分情况下,被减少的视角效果不会被注意到,因为对于非常远的物体或者快速移动的物体的影响是非常小的。
多层次细节就是让一个物体在相机距离不同的情况下,显示不同的模型,从而节省性能的开销。比如一个非常漂亮的建筑,顶点数和面数一定很多,玩家在游戏中控制人物相机视角离建筑很近时,看起来非常好看,当玩家走远的时候,这座建筑还在相机视线内,但距离已经很远了,看起来不是那么清晰了,但由于建筑的模型精度太高,无论远近模型的顶点和面数都不变,性能开销不变,当你的游戏里面有很多这样的建筑时,这时就需要使用LOD技术来节省性能开销了。LOD技术主要广泛用于沙盒游戏或大世界地图游戏。
![e0ddcfb7cadf3bca09d5a0055629c904.png](https://i-blog.csdnimg.cn/blog_migrate/4ea5394c6829b94881054262f3ff5ea8.jpeg)
如何使用LOD
在项目中使用LOD技术实际上关联了游戏制作过程的很多流程,如模型制作,场景制作,渲染管线,资源加载,内存控制,性能消耗都会涉及到很多需要解决的难点。项目中要充分利用LOD需要考虑以下几个方面:
需要美术人员来处理LODs
需要建立一套定制化的Pipeline
需要依赖甚至开发相关的专业软件工具
需要评估很多在Pipeline流程里面不同程度地使用LOD的产品,并且每一个产品的使用方式都不尽相同
最主要的,需要评估使用LOD带来的价值和成本的开销的比较。
网格简化处理LODs
使用LOD技术一个关键点就是需要不同面数精度的模型。所以制作模型时,需要制作多套不同面数的模型,对于几个模型还好说,如果像大世界游戏或者沙盒游戏含有成百上千个显示对象的话,都单独定制2套模型或者3套模型的时间成本和预算成本就太大了,所以需要一种方式快速生成多套不同面数的模型。
![c4e3c6af0425bc0597a6bcdbb4a4bb7a.png](https://i-blog.csdnimg.cn/blog_migrate/f22802229a27eb335325b82613aca0b9.jpeg)
Mesh Decimation技术就是用于解决这个问题的。简单的说,Mesh Decimation其实就是网格简化,我们需要一套面数和精度比较高的模型,然后进行模型减面来得到不同程度的低面数模型。网格简化的实现原理主要有两种,第一种为顶点聚类(vertex clustering),第二种为增量式简化(Increment decimation)。
顶点聚类(vertex clustering)
顶点聚类原理大致分为以下几步:
1. 生成聚类(Cluster Generation)
2.计算表现因子(Computing a representative)
3.生成网格(Mesh Generation)
4.改变拓扑结构(Topology Changes)
生成聚类其实就是顶点合并,它的主要思路是用一个立方体包围盒包住整个模型,然后把包围盒分成很多的小立方体区域,最后落在同一个区域的顶点将会被合并。可以以树层次结构自顶向下或者自底向上的开始处理顶点合并。
![20b2ca564fbe274877a93f2a7cdba735.png](https://i-blog.csdnimg.cn/blog_migrate/8b7a95a4a266c559f9e7cb6c74520b25.jpeg)
计算表现因子主要用以下几个参数为主,顶点位