Setting Up Object LODs(建立层次细节度对象)
对项目进行优化的一个最主要的方法就是使用Levels of Details (LODs)层次细节度。 这样做的意义在于当网格离摄像头较远时,它能将细节要求高的网格转换成对细节要求不那么高的网格。为达到这样的效果,你需要带上细节化的模型及创建数个版本的模型,并且每一个版本所用的多边形数量都不宜太多。
带有细节层次度的网格作为单个对象导入到Unigine中,它有数个surfaces(面) 。这些面代表层次细节度。当需要将某个面转换成另一个面时,层次细节度的设置允许你将距离具体化。
此文主要讲述如何从3D编辑器中导出拥有细节层次度的网格,怎样将此网格添加到Unigine引擎中并具体化这些细节层次度网格表面的设置。
See Also
- 世界坐标管理一文中 Levels of Details(细节层次度) 部分。
- 内容优化一文中 Level of Details(细节层次度) 部分
第一步:导出层次细节度
为通过使用细节层次度而达到优化项目的效果,你需要为网格对象创建一个或多个细节层次度。 这些细节层次度应当作为同一个网格的各个独立面而导出,每一个独立面都是网格的细节层次度。
按照下列操作步骤可导出细节层次度的网格:
- 在3D编辑器内,创建一个具体化的模型及数个拥有较少多边形数量的模型。例如,你可以拷贝现存的具体化模型,之后减少它的多边形数量。
此文中,我们将使用Unigine SDK Browser中的飞机模型进行演示。此模型飞机的机身及机窗各有3个细节层次度,飞机的其他部分有另外3个细节层次度。
17827 polygons 11054 polygons 2696 polygons 33403 triangles 20649 triangles 4836 triangles LOD 0LOD 1LOD 2 - 将模型作为 *.fbx文件导出。
最后,你将得到一个以细节层次度命名有9个面的网格。
第二步:在世界坐标里添加网格
第三步:建立层次细节度
这部分阐述当摄像头离网格越来越远时,如何建立网格的层次细节度,怎样把具体化细节高的细节层次度平滑地转换成细节要求相对较低的细节层次度。细节层次度的表面有3个参数:
视线可见距离及衰减距离
你应该为每一个细节层次度的表面设置具体的视线可视距离及衰减距离。按照下列步骤便可搭建细节层次度:
- 打开 Nodes(节点)窗口选择要添加的节点。
-
在 Surfaces 标签里, 选择 the first LOD surfaces 并且:
- 将 Maximum Visibility(最大可视距离) 设置为5这意味着当摄像头与网格的距离为5个单位时,第一个细节层次度的表面将不可见。
- 将 Minimum Visibility(最小可视距离) 保留在 -inf。这意味着无论网格与摄像头的距离如何,表面都可见。
- 将 Maximum Fade(最大衰减距离) 调为10个单位。这样将拉长距离,细节层次度表面的距离将仍可见,并提供平顺的衰减效果。
可将其它细节层次度的表面调为不可用,以此查看当前细节层次度表面设置的结果。 - 选择second LOD 面并且:
- 将第二个细节层次度面的Minimum Visibility(最小可视距离)调整为第一个细节层次度的 Maximum Visible(最大可视距离) 的边界处, 即:5个单位。这就意味着当第一个细节层次度的面开始淡化时,第二个细节层次度的面便出现。
- 将 Maximum Visibility(最大可视距离) 设为 30 个单位。这样在30个单位之后,第二个细节层次度的面便开始淡化,第三个细节层次度的面出现。
- 将 Minimum Fade(最小衰减距离)设置为10 个单位。在达到5到15个单位之后,第二个细节层次度的面将平顺地渐渐显示出来。
- 将Maximum Fade(最大衰减距离) 设置为20 个单位。 在达到30到50个单位后,第二个细节层次度的面将平顺地渐渐淡化。
-
选择 third LOD 面并且:
- 将Minimum Visibility(最小可视距离) 设为30 个单位。这意味着当第二个细节层次度的面开始消失时,第三个细节层次度的面便开始显现。
- 将 Maximum Visibility(最大可视距离) 设为300 个单位。 在距离达到300个单位之后,第三个细节层次度的面完全消失。
- 将 Minimum Fade(最小衰减距离) 设为 20 个单位。这样在距离为30到50个单位时,第三个细节层次度的面会逐渐开始平顺地显现出来。
-
将Maximum Fade(最大衰减距离) 设为50个单位。在距离达到300个单位之后,网格便会开始平顺地淡化。
如果你想将最后一个细节层次度始终设为可视状态,可将Maximum Visibility(最大可视)距离设为 inf.
你应当为同一个细节层次度的每一个面作出相同的设置。同一细节层次度的不同面应当有相同的设置,这样才能同时显现或消失。 Different surfaces from the one level of details should have the same settings to appear and disappear simultaneously.
最小及最大父类
LODs(细节层次度)的另一重要参数是 Min and Max Parents(最小及最大父类)。
这些参数使你能够具体化层中哪些面或节点的最小及最大可视距离将被测量。使用默认值 1。 这样由于将被测量的是整个网格边界框的距离而非这些面自身的距离,因此网格的所有面将能同时转换。
关于这些参数请阅读 here