Mesh Cluster(网格簇)
Cluster(簇)是一种能包含大量拥有同种材质的完全相同网格的对象,这些网格被作为一个对象来管理。 簇对象中的这些网格可以被自动散置,或是每个网格都可以被手动放置,旋转和缩放。
网格簇通常被用作具有同种类型的一众对象,例如,居民区中的房屋。
簇对象中那些在视锥体(Viewing Frustum)中可见的网格会被加载,而不可见的网格则将被剔除。 簇对象的使用堪称是极其有效的性能优化方案:它不仅能大幅提高渲染速度,还能在不损失任何性能的情况下处理大量对象。
在UnigineEditor中有两种方式可以创建簇对象,它们是:
另请参阅
- 通过UnigineScript脚本中的ObjectMeshCluster类编辑网格簇
- 通过C++ API中的Unigine::ObjectMeshCluster类编辑网格簇
- 路径data/samples/objects/下存放的如下一组范例:
创建簇对象
要通过烘焙子网格来创建簇对象,只需按如下步骤操作即可:
- 在菜单栏上点击Create(创建) -> Object(对象) -> Mesh Cluster(网格簇)。
- 在打开的对话框窗口中选择存放.mesh文件的路径。 该网格将用作簇对象的源网格。
- 之后将簇对象放置在虚拟世界中的某处。 簇对象是不可见的,因为它充当的好比是子网格的源网格。
- 在虚拟世界中手动放置完全相同的网格,同时要确保这些网格成为已创建簇对象的子网格。
Nodes Editor(节点编辑器)要想让某一节点成为其它节点的子节点,只需按住ALT键的同时将该节点拖动至左边的父节点之下即可。
- 要想将子网格烘焙给簇对象,可点击MeshCluster(网格簇)标签页内的Create(创建)按钮。 此时子网格在节点层级中将不再可见。
Nodes Editor(节点编辑器),MeshCluster(网格簇)标签页只有启用的网格会被烘焙进簇对象。 而禁用的网格则会作为简单的子节点被留下。
要想将更多的网格添加进同一簇对象中,只需先使这些网格成为簇对象的子网格,之后再次点击Create(创建)按钮来重新烘焙该簇对象即可。
要想同时更改所有的子网格,只需更改MeshCluster(网格簇)标签页内Mesh(网格)选项栏中存放源网格簇的路径即可。
集合成簇对象
要通过烘焙虚拟世界中所有完全相同的网格来创建簇对象,只需按如下步骤操作即可:
- 在菜单栏上点击Create(创建) -> Object(对象) -> Mesh Cluster(网格簇)。
- 在打开的对话框窗口中选择存放.mesh文件的路径。该网格将用作簇对象的源网格。
- 之后将簇对象放置在虚拟世界中的某处。 簇对象是不可见的,因为它充当的好比是子网格的源网格。 要被烘焙的网格所使用的.mesh文件应当与网格簇中的网格所使用是同一个。
Nodes Editor(节点编辑器)
- 在Surfaces(表面)标签页内将分配给网格的材质指定为同一种,这里的网格指的是那些将被烘焙给簇对象的网格。
- 点击MeshCluster(网格簇)标签页内的Collect(集合成)按钮。 分配有相同网格以及同种材质的所有网格都将被烘焙给簇对象。 此时这些网格在节点层级中将不再可见。
Nodes Editor(节点编辑器),MeshCluster(网格簇)标签页
要想同时更改所有的子网格,只需更改MeshCluster(网格簇)标签页内Mesh(网格)选项栏中存放源网格簇的路径即可。
展开簇对象
要展开簇对象(指的是被创建的,或是被集合成的),只需点击MeshCluster(网格簇)标签页内的Expand(展开)按钮即可。 该操作可能对一些网格的重新放置或移除是有必要的。
清除簇对象
网格簇的参数
MeshCluster(网格簇)标签页内列有如下簇对象参数:
Mesh(网格) | 更改了源网格簇也就更改了所有的子网格。 |
---|---|
Visible(能见距离) | 指的是由簇对象中的所有网格都可见这一条件所确定的距离。
|
Fade(衰减距离) | 指的是由渲染的簇对象中的网格数量逐渐减少这一条件所确定的距离,具体表现就是这些网格会逐个随机消失。 衰减距离紧随能见距离之后。 假如没有设置衰减距离,那网格的消失过程会是急剧的,具体表现就是呈现一条清晰可见的线。 而借助衰减距离,则可使对象逐个消失,在达到衰减距离终点时对象会所剩无几。 这样一来就使得消失过程变得平滑,视觉感受上也没那么明显了。
为了能获得最好的结果,同时也是我们推荐的做法,就是您可以将对象的渐隐距离与此效果相结合使用。 |
Shadow(阴影距离) | 指的是由视锥体之外的附加网格都被渲染这一条件所确定的距离。 此选项可用来在转动摄像机时消除屏幕边缘处的阴影突变。
|