编程
Fundamentals
Setting Up Development Environment
UnigineScript
High-Level Systems
C++
C#
UUSL (Unified UNIGINE Shader Language)
File Formats
Rebuilding the Engine and Tools
GUI
Double Precision Coordinates
应用程序接口
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
Rendering-Related Classes

Mesh Cluster(网格簇)

Cluster(簇)是一种能包含大量拥有同种材质的完全相同网格的对象,这些网格被作为一个对象来管理。 簇对象中的这些网格可以被自动散置,或是每个网格都可以被手动放置,旋转和缩放。

网格簇通常被用作具有同种类型的一众对象,例如,居民区中的房屋。

簇对象中那些在视锥体(Viewing Frustum)中可见的网格会被加载,而不可见的网格则将被剔除。 簇对象的使用堪称是极其有效的性能优化方案:它不仅能大幅提高渲染速度,还能在不损失任何性能的情况下处理大量对象。

注意
簇对象中只能包含完全相同的网格,且分配给这些网格的每一个表面的须是同种材质。

在UnigineEditor中有两种方式可以创建簇对象,它们是:

  • 通过烘焙所有完全相同的子网格来创建簇对象。
  • 通过烘焙虚拟世界中所有完全相同的网格来集合成簇对象。

另请参阅

创建簇对象

要通过烘焙子网格来创建簇对象,只需按如下步骤操作即可:

  1. 在菜单栏上点击Create(创建) -> Object(对象) -> Mesh Cluster(网格簇)

  2. 在打开的对话框窗口中选择存放.mesh文件的路径。 该网格将用作簇对象的源网格。
  3. 之后将簇对象放置在虚拟世界中的某处。 簇对象是不可见的,因为它充当的好比是子网格的源网格。
  4. 在虚拟世界中手动放置完全相同的网格,同时要确保这些网格成为已创建簇对象的子网格。

    Nodes Editor(节点编辑器)
    注意
    要想让某一节点成为其它节点的子节点,只需按住ALT键的同时将该节点拖动至左边的父节点之下即可。
  5. 要想将子网格烘焙给簇对象,可点击MeshCluster(网格簇)标签页内的Create(创建)按钮。 此时子网格在节点层级中将不再可见。

    Nodes Editor(节点编辑器)MeshCluster(网格簇)标签页
    注意
    只有启用的网格会被烘焙进簇对象。 而禁用的网格则会作为简单的子节点被留下。

    要想将更多的网格添加进同一簇对象中,只需先使这些网格成为簇对象的子网格,之后再次点击Create(创建)按钮来重新烘焙该簇对象即可。

    要想同时更改所有的子网格,只需更改MeshCluster(网格簇)标签页内Mesh(网格)选项栏中存放源网格簇的路径即可。

集合成簇对象

要通过烘焙虚拟世界中所有完全相同的网格来创建簇对象,只需按如下步骤操作即可:

  1. 在菜单栏上点击Create(创建) -> Object(对象) -> Mesh Cluster(网格簇)

  2. 在打开的对话框窗口中选择存放.mesh文件的路径。该网格将用作簇对象的源网格。
  3. 之后将簇对象放置在虚拟世界中的某处。 簇对象是不可见的,因为它充当的好比是子网格的源网格。 要被烘焙的网格所使用的.mesh文件应当与网格簇中的网格所使用是同一个。

    Nodes Editor(节点编辑器)
  4. Surfaces(表面)标签页内将分配给网格的材质指定为同一种,这里的网格指的是那些将被烘焙给簇对象的网格。
  5. 点击MeshCluster(网格簇)标签页内的Collect(集合成)按钮。 分配有相同网格以及同种材质的所有网格都将被烘焙给簇对象。 此时这些网格在节点层级中将不再可见。

    Nodes Editor(节点编辑器)MeshCluster(网格簇)标签页

    要想同时更改所有的子网格,只需更改MeshCluster(网格簇)标签页内Mesh(网格)选项栏中存放源网格簇的路径即可。

展开簇对象

要展开簇对象(指的是被创建的,或是被集合成的),只需点击MeshCluster(网格簇)标签页内的Expand(展开)按钮即可。 该操作可能对一些网格的重新放置或移除是有必要的。

注意
被集合成的网格将成为簇对象的子网格。

清除簇对象

要想清除掉烘焙给簇对象的所有网格,只需点击Clear(清除)按钮即可。 请确保要清除的网格是被创建的,或是被集合来的,因为如果它们不是被重新烘焙的,那清除操作将不能被执行。

网格簇的参数

MeshCluster(网格簇)标签页内列有如下簇对象参数:

Nodes Editor(节点编辑器)MeshCluster(网格簇)标签页
Mesh(网格) 更改了源网格簇也就更改了所有的子网格。
Visible(能见距离) 指的是由簇对象中的所有网格都可见这一条件所确定的距离。
  • 如果该参数被设置为无穷远(inf),那Fade(衰减距离)参数将被忽略。
  • 簇对象的能见度的实际范围直接取决于对象(表面)的最大能见距离以及它的渐隐距离。 假如网格在近距离处就消失了,那不管怎样,能见距离再怎么增加都不会对性能产生影响。
Fade(衰减距离) 指的是由渲染的簇对象中的网格数量逐渐减少这一条件所确定的距离,具体表现就是这些网格会逐个随机消失。 衰减距离紧随能见距离之后。 假如没有设置衰减距离,那网格的消失过程会是急剧的,具体表现就是呈现一条清晰可见的线。 而借助衰减距离,则可使对象逐个消失,在达到衰减距离终点时对象会所剩无几。 这样一来就使得消失过程变得平滑,视觉感受上也没那么明显了。

为了能获得最好的结果,同时也是我们推荐的做法,就是您可以将对象的渐隐距离与此效果相结合使用。

Shadow(阴影距离) 指的是由视锥体之外的附加网格都被渲染这一条件所确定的距离。 此选项可用来在转动摄像机时消除屏幕边缘处的阴影突变。
  • 在无阴影突变时选择最小的可能值。
  • 要设置的阴影范围取决于网格的大小,网格被放置多高,以及太阳的角度(该角度决定了网格产生的阴影将有多长)。
最新更新: 2017-07-03