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

World Clutter(节点杂物)

World Clutter(节点杂物)节点几乎一键就能实现遍布场景随机散置一组完全相同的节点(节点引用)。 有了它就无需再手动放置,缩放和旋转每个单独对象了,也不用时刻考虑性能因素了。 World Clutter(节点杂物)会通过随机参数自动在场景中放置节点,所有的这些节点都可被有效控制,而节点杂物也只渲染摄像机周围的那些节点。 World Clutter对象被用来散置非几何体对象,像印花,粒子系统等等。 不过如果您想散置完全相同的网格,最好是使用Mesh Clutter(网格杂物)

有别于World Cluster(对象簇),World Clutter(节点杂物)会程序式散置对象,因此其拥有更高的存储效率。 同时这也意味着散置对象就不能被移动了。

注意
World Clutter(节点杂物)只作用于引用节点,原因是在虚拟世界被加载时,会在摄像机周围以更快的速度散置引用节点。

Port Angeles演示项目中通过使用World Clutter(节点杂物)散置的木片。

另请参阅

  • 通过UnigineScript脚本中的WorldClutter类编辑节点杂物(world clutters)

Clutter对象

任何Clutter中的对象都是将被遍布限定区域散置的节点引用,对每一个对象而言,其出现的概率都是可控的。

Node references that are contained in the clutter

World Clutter(节点杂物)中的节点引用的列表

Probability slider(概率滑块) 概率越高,某一Clutter对象相比于其它Clutter对象能被看到的次数也就越多。 假设我们创建一个拥有木片和海藻的海岸。 我们创建木片decal和海藻decal并将它们保存为*.node文件(创建NodeReference文件)。 如果海藻的概率滑块接近于0,那海岸将被木片覆盖,在其中就只能看到些许的海藻。 改变其出现的概率不会对渲染对象的数量产生影响,这样做只是指定了多个Clutter对象间的比重。
  • 如果概率被设为零,那对象将不再被渲染了。
  • 如果Clutter中只有一个对象,那概率参数(它等于0的情况除外)将被忽略,并且对象的出现就只会取决于density(密度)
Add(添加) 将引用节点添加到Clutter对象的列表。
Remove(移除) 从列表删除所有选定的节点引用。 要想选择某个对象,应勾选它旁边的复选框。
Reload(重载) 重载Clutter中的所有节点引用。 待某个节点引用被编辑完之后,保存的更改将不会被自动应用给Clutter散置的相同节点。 这是因为再次被加载之后的引用节点是被从内部缓存复制来的,这样一来就能真正快速地创建大量副本。 Reload选项就是用来更新这一缓存,使对对象参数的更改生效。

World Clutter(节点杂物)的参数

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

一旦被添加或散置,那对象就能被移动或旋转了。 唯一能改变散置形态的方法就是更改seed(种子)

Size X(X轴大小)
Size Y(Y轴大小)
指Clutter包围盒分别沿X轴和Y轴的大小。 在该区域内对象会以指定密度被散置。
  • 其各自大小都按单位长度计算。
Step for cells(格间间距) 指的是按单位长度计算的格间大小。 Clutter中,格间的数量的定义方式为:Clutter的大小(指的是分别沿X轴和Y轴的大小)由step(间距)来划分。
  • 格间的数量越多(也就是step【越小】),负荷也就越高。 不过,要想创建一个大的cell却会花费比较长的时间。 当摄像机移动的足够快时,小的格间会被非常慢地创建,不过大的格间却会很明显地跃入视线,引起小的渲染延迟。
Density(密度) 密度指定了单位平方面积上会有多少对象。 假如Clutter中存在不止一个对象,那就要将概率考虑在内了,不过这不会改变所有渲染对象的生成数量。
  • 如果密度值太高,那对象将能被彼此穿透。

Lower Density
低密度
Higher Density
高密度
Visible Distance(能见距离) 在能见距离范围内,对象的数量将由Density(密度)参数严格指定。 这也意味着所有应该呈现的对象都能在恰当的位置被找到。
  • 如果该参数被设置为无穷远(inf),那Fade distance(衰减距离)参数将被忽略。
  • 杂物对象的能见度的实际半径直接取决于对象(表面)的最大能见距离以及它的渐隐距离。 不过,假如对象在近距离处就消失了,那进一步增加能见距离将会导致性能下降,原因就是这种情况下与格间的生成相关的计算仍然在被执行。
  • 能见距离事实上是用来实现格间的:当摄像机在产生格间的给定距离上移动时,格间将会被生成。 在未使用衰减距离或对象的最大能见距离的情况下,对象将被以明显的正方形渲染。
Fade Distance(衰减距离) 在整个衰减距离范围内对象的数量是逐渐减少的,具体表现就是这些对象会逐个随机消失。 衰减距离紧随能见距离之后。 如果设置了衰减距离,那在Clutter中包含的对象所急剧消失的地方将不会出现清晰可见的线。 取而代之的是,剩下的很少一部分网格会平滑融合进背景而不出现任何视觉噪声。
  • 为了能获得最好的结果,同时也是我们推荐的做法,就是您可以将对象的渐隐距离与此效果相结合使用。
Seed(种子) 伪随机数生成器的种子值能为自动布置创建不同形态。 种子可以手动设置,或是由引擎为种子提供随机值(使用Randomize(随机化)选项)。

随机化Clutter对象

要想随机化构成World Clutter(节点杂物)的对象的出现,就需使用两类值:

  • 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度。

遮蔽有对象的区域

让对象在所有方向和位置上都一致地散置自然是十分不方便的。 作为创建大量覆盖有限场所的小的World Clutter(节点杂物)节点的一种替代方法,您可使用掩码(mask)来创建大的World Clutter(节点杂物)节点。

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

World Clutter(节点杂物) mask for scattering

注意
要想直接在场景中涂抹图像掩码,可使用Mask Editor(掩码编辑器)
Threshold for mask(掩码阀值) 要想控制遮蔽的强度,须使用掩码阀值参数。 该参数用来检查某个区域的遮蔽密度,如果阀值比掩码的颜色值【高】,则对象会在整个区域内被散置。 如果遮蔽密度不够,则该区域会被留空。
  • 最小值0代表掩码将会被按原样应用。
  • 通过设置【高】阀值,可使对象只在由掩码标记为密集的区域内被散置。 反观稀疏分布,对象会被处处散置,它们也很可能会被以密集的孤立群组形式渲染。
  • 最大值1代表该区域不存在散置对象。

Minimum Threshold
Threshold = 0
Maximum Threshold
Threshold = 1
Mesh Mask(网格掩码) 基于网格的掩码可用来放置对象。 矢量遮蔽可不依赖掩码纹理的分辨率,它能创建拥有极高精度的道路,河流等等 。 用于遮蔽的网格应是简单的平面网格。
Inverse(取反) Inverse(取反)标记选项用于切换对象是被放置在网格轮廓之内还是之外。
Min掩码值和Max掩码值 作为一种高级对象播种和内存消耗优化的解决方案,不仅可使用整个掩码,就连掩码的任意所需部分都可被应用给对象。 这意味着多个不同的对象可以共用同一掩码,但是会使用不同等级。

默认情况下,图像掩码的每个通道都指定了区域以及颜色密度范围为[0;255]的生长密度。 不过,借助Min value(最小值)和Max value(最大值),您不仅可以在它们所确定的值域内指定任意的颜色密度范围,还能指明是掩码的哪部分包含了指定的密度范围,该掩码部分将用于播种节点。

例如,下面给出的是R8型图像掩码:

如下几个代表了不同节点高度的节点对象可共用上述掩码:

  • 密度取值范围在100到200之间,某一类型的节点可被存储。
  • 密度取值范围在190到255之间,另一类型的节点可被存储。
Flip X 水平翻转Image Mask。
Flip Y 垂直翻转Image Mask。

沿地势确定朝向

除非World Clutter(节点杂物)列表中的对象是被遍布完全平坦且不倾斜的表面散置的,否则这些对象就可在无需任何干预的情况下被自动放置,以此来精确重复地势的高低起伏。 要实现这一点,底层表面就须成为World Clutter(节点杂物)节点的节点。 (如果层级列表中的地形节点(或网格节点)与World Clutter(节点杂物)间存在有多个节点,那相交选项仍然会被勾选。)

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

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

Intersection(相交) 待Intersection(相交)复选框被勾选之后,World Clutter(节点杂物)中的对象就会遍布父对象的表面散置。
  • World Clutter(节点杂物)在尺寸上大不大于父对象都无所谓 - 散置区域始终会被限定于父对象的表面。
Orientation(朝向) 此选项可将父表面的法线向量设置为散置对象的初始朝向。 这意味着,如果表面在某个地方是垂直的,那位于其上的对象的【上】方向将会被真实地指向这一边。
  • 它们仍然可以被随机旋转,不过却是相对于父法线的朝向而言的。
  • 只有勾选了Intersection(相交)选项该参数才可用。

Orienation disabled
启用了Orientation(朝向)
Orienation enabled
禁用了Orientation(朝向)
Angle(角度) 就像使用grass(草场)对象的情形一样,散置处理也可以考虑斜坡有多陡峭。
  • 最小值0表示用于散置Clutter对象的表面无论有多平坦或多倾斜,结果都没什么差别。
  • 该参数值越 【大】,用于在其上散置对象的那个地方也就越平坦。 随着该值的增加,一开始陡峭的斜坡将被忽略,到后来平坦的斜坡也变得很稀少了。
  • 最大值1表示对象只能在垂直表面之上被完美地散置。
  • 只有勾选了Intersection(相交)选项该参数才可用。
最新更新: 2017-07-03
Build: ()