This page has been translated automatically.
编程
Fundamentals
Setting Up Development Environment
Usage Examples
UnigineScript
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
CIGI Client Plugin
Rendering-Related Classes
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

Mesh Clutter(网格杂物)

Mesh Clutter(网格杂物)是一种能包含大量完全相同网格的对象,这些网格都是被随意放置的,它们的朝向和缩放比例也是任意的,而且还不能对它们进行手动管理。 通过使用图像掩码(image mask)或网格掩码(mesh mask)就可以将网格杂物对象中的网格散置于一定区域内。

网格杂物对象通常用于植被(例如,森林,地面上的落叶)的布置,以及散布完全相同的对象(例如,垃圾)。

网格杂物用于遍布整个(或部分)虚拟世界或地形来散置完全相同的网格。 网格杂物会程序式散置对象,且它只负责渲染位于视锥体(Viewing Frustum)内的那些对象。 这样一来不仅能渲染数量众多的网格,还可保持高性能。

另请参阅

创建网格杂物

要创建网格杂物,只需按如下步骤操作即可:

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

  2. 在打开的对话框窗口中选择存放.mesh文件的路径。 该网格将用作杂物对象的源网格。
  3. 之后将杂物对象放置在虚拟世界中的某处。
  4. 指定网格杂物的参数

网格杂物的参数

Mesh Clutter(网格杂物)与World Clutter(节点杂物)非常相似(后者是用于处理节点引用)。 网格杂物在众多被随机放置的meshs(网格)的每个cell(格间)中都会被渲染为2D网格(grid),而如此大量的网格要被随机放置还需依赖杂物对象的密度和出现的概率。 格间会由近及远逐一生成。 这种方法不仅可以控制散置对象彼此间相距有多近或多远,同时还能在摄像机移动时降低渲染负荷,使远处的格间变得可见。

Mesh(网格) 网格,其副本将被散置。
Size X(X轴大小)
Size Y(Y轴大小)
指的是杂物对象包围盒分别沿X轴和Y轴的大小。 在该区域内对象会以指定密度被散置。
  • 其各自大小都按单位长度计算。
Step for cells(格间间距) 指的是按单位长度计算的格间大小。 杂物对象中,格间的最终数量的定义方式为:杂物对象的大小(指的是分别沿X轴和Y轴的大小)由step(间距)来划分。
  • step越【小】,格间的数量就越多。
Density(密度) 密度指定了单位平方面积上会有多少对象。
  • 若step为1个单位,密度就不能减小至1以下(说明单位平方面积上的对象少于1个)。
  • 如果密度值太高,那对象将能被彼此穿透。
Visible distance(能见距离) 在能见距离范围内,对象的数量将由Density(密度)参数严格指定。 这也意味着所有应该呈现的对象都能在恰当的位置被找到。
  • 如果该参数被设置为无穷远(inf),那Fade distance(衰减距离)参数将被忽略。
  • 杂物对象的能见度的实际半径直接取决于对象(表面)的最大能见距离以及它的渐隐距离。 不过,假如对象在近距离处就消失了,那进一步增加能见距离将会导致性能下降,原因就是这种情况下与格间的生成相关的计算仍然在被执行。
  • 能见距离事实上是用来实现格间的:当摄像机在产生格间的给定距离上移动时,格间将会被生成。 在未使用衰减距离或对象的最大能见距离的情况下,对象是能在可见的单位平方面积上被渲染的。
Fade Distance(衰减距离) 在整个衰减距离范围内对象的数量是逐渐减少的,具体表现就是这些对象会逐个随机消失。 衰减距离紧随能见距离之后。 如果设置了衰减距离,那在网格急剧消失的地方将不会出现清晰可见的线。 取而代之的是,剩下的很少一部分网格会平滑融合进背景而不出现任何视觉噪声。
  • 为了能获得最好的结果,同时也是我们推荐的做法,就是您可以将对象的渐隐距离与此效果相结合使用。
Radius(半径) 指的是绘制视锥体之外的对象所需的距离。 此选项可用来在转动摄像机时消除屏幕边缘处的阴影突变。
  • 在无阴影突变时选择最小的可能值。
  • 要设置的阴影半径取决于网格的大小,网格被放置多高,以及太阳的角度(该角度决定了网格产生的阴影将有多长)。
Seed(种子) 伪随机数生成器的种子值能为自动布置创建不同形态。 种子可以手动设置,或是由引擎为种子提供随机值(使用Randomize(随机化)选项)。

随机化杂物对象

要随机化网格杂物所散置的网格的出现,就需使用两类值:

  • Mean value(平均值)(即:Scale(缩放比)Offset(偏移)Rotation(旋转))定义了平均值。 它是会被随机拉高或拉低的基本值。
  • Spread value(散布值)定义了参数的可能变化范围。 该值越高,最终结果呈现的也就越多样。
    散布值是【可选的】:如果该值被设置为0,那仿真过程也不受此影响,这时将只有平均值会被应用给所有对象。

待这些值被指定之后,就可以根据如下公式来计算每个参数了:

结果 = Mean值 + Random * Spread值
这里的Random是取值范围从-11的随机值。 例如,如果参数的平均值等于3,散布值等于1,那最终结果的取值范围将会是从24

Scale(缩放比) 该参数可随机缩放所有散置对象以使它们变大或变小。
  • Mean值的缩放比值不能为负。
Offset(偏移) 高度偏移参数可控制以同一高度或不同高度放置的所有对象是应在高处被找到,还是应在低处被找到。 例如,带有偏移参数的石头可被深插于地下,这样一来就只有石头顶部的一小块儿是可见的;或是将该石头放置在高处,以便让其看起来很高大。
  • 偏移参数按单位长度计算。
Rotation X(旋转X轴)
Rotation Y(旋转Y轴) Rotation Z(旋转Z轴)
这些参数可随机确定散置对象的朝向。
  • 旋转参数按角度来设置。
  • 如果散布值被设置为180,那对象将会被旋转360度。

遮蔽有对象的区域

除了能遍布整个区域均匀散置网格,也可以为网格的布置应用掩码。 掩码可控制网格应被放置在何处。

Image Mask(图像掩码) Mask(掩码)决定了要遍布哪些区域来随机散置对象,以及决定哪些区域是不存在列表中的对象的。 例如,在某一地形中,可用掩码在遍布多岩石的区域内散置石头,而使多草的区域内不掺杂岩石。
  • 掩码是单通道纹理(R8)。 如果所提供的掩码中存在更多个通道,那它们将被忽略。
    • 颜色值为【零】用来指定不存在杂物对象的区域。
    • 颜色值越【高】,该区域内的对象就越多,它们被放置的也就越密集。
    • 颜色值为255意味着密度将由相应参数来指定。
  • 包含在杂物对象列表中的所有对象都执行遮蔽操作。

注意
要想直接在场景中涂抹图像掩码,可使用Mask Editor(掩码编辑器)
Threshold for mask(掩码阀值) 要想控制遮蔽的强度,须使用掩码阀值参数。 该参数用来检查某个区域的遮蔽密度,如果阀值比掩码的颜色值【高】,则对象会在整个区域内被散置。 如果遮蔽密度不够,则该区域会被留空。
  • 最小值0代表掩码将会被按原样应用。
  • 通过设置【高】阀值,可使对象只在由掩码标记为密集的区域内被散置。 反观稀疏分布,对象会被处处散置,它们也很可能会被以密集的孤立群组形式渲染。
  • 最大值1代表该区域不存在散置对象。
Mesh Mask(网格掩码) 基于网格的掩码可用来放置对象。 矢量遮蔽可不依赖掩码纹理的分辨率,它能创建拥有极高精度的道路,河流等等 。 用于遮蔽的网格应是简单的平面网格。

网格用作了掩码

基于网格的遮蔽
Inverse(取反) Inverse(取反)标记选项用于切换对象是被放置在网格轮廓之内还是之外。

取反的遮蔽

沿地势确定朝向

网格杂物也可用来沿地势散置对象。 要实现这一点,底层表面就须成为网格杂物节点的节点。 (如果层级列表中的地形节点(或网格节点)与网格杂物间存在有多个节点,那相交选项仍然会被勾选。)

用于相交的父节点只能是terrain(地形)对象或mesh(网格)对象。 网格也应呈地形状,也就是说,它须只有一个沿Z坐标的垂直表面。

注意
网格杂物只对父网格(mesh)几何体执行一次垂直相交检测。 如果上半表面之下存在多个表面,那它们将被忽略。 例如,要遍布整个球体来散置引用节点,就需使用两个半球网格。

Intersection(相交) 待Intersection(相交)复选框被勾选之后,对象就会遍布父对象的表面散置。
  • 网格杂物在尺寸上大不大于父对象都无所谓 - 散置区域始终会被限定于父对象的表面。
Orientation(朝向) 此选项可将父表面的法线向量设置为散置对象的初始朝向。 这意味着,如果表面在某个地方是垂直的,那位于其上的对象的【上】方向将会被真实地指向这一边。
  • 它们仍然可以被随机旋转,不过却是相对于父法线的朝向而言的。
  • 只有勾选了Intersection(相交)选项该参数才可用。
Angle(角度) 就像使用grass(草场)对象的情形一样,散置处理也可以考虑斜坡有多陡峭。
  • 最小值0表示用于散置杂物对象的表面无论有多平坦或多倾斜,结果都没什么差别。
  • 该参数值越 【大】,用于在其上散置对象的的那个地方也就越平坦。 随着该值的增加,一开始陡峭的斜坡将被忽略,到后来平坦的斜坡也变得很稀少了。
  • 最大值1表示对象只能在垂直表面之上被完美地散置。
  • 只有勾选了Intersection(相交)选项该参数才可用。
最新更新: 2017-12-21
Build: ()