World Clutter(节点杂物)
World Clutter(节点杂物)节点几乎一键就能实现遍布场景随机散置一组完全相同的节点(节点引用)。 有了它就无需再手动放置,缩放和旋转每个单独对象了,也不用时刻考虑性能因素了。 World Clutter(节点杂物)会通过随机参数自动在场景中放置节点,所有的这些节点都可被有效控制,而节点杂物也只渲染摄像机周围的那些节点。 World Clutter对象被用来散置非几何体对象,像印花,粒子系统等等。 不过如果您想散置完全相同的网格,最好是使用Mesh Clutter(网格杂物)。
有别于World Cluster(对象簇),World Clutter(节点杂物)会程序式散置对象,因此其拥有更高的存储效率。 同时这也意味着散置对象就不能被移动了。
另请参阅#
- 通过UnigineScript脚本中的WorldClutter类编辑节点杂物(world clutters)
Clutter对象#
任何Clutter中的对象都是将被遍布限定区域散置的节点引用,对每一个对象而言,其出现的概率都是可控的。
Probability slider(概率滑块) | 概率越高,某一Clutter对象相比于其它Clutter对象能被看到的次数也就越多。 假设我们创建一个拥有木片和海藻的海岸。 我们创建木片decal和海藻decal并将它们保存为*.node文件(创建NodeReference文件)。 如果海藻的概率滑块接近于0,那海岸将被木片覆盖,在其中就只能看到些许的海藻。 改变其出现的概率不会对渲染对象的数量产生影响,这样做只是指定了多个Clutter对象间的比重。
|
---|---|
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(间距)来划分。
|
||
Density(密度) | 密度指定了单位平方面积上会有多少对象。 假如Clutter中存在不止一个对象,那就要将概率考虑在内了,不过这不会改变所有渲染对象的生成数量。
|
||
Visible Distance(能见距离) | 在能见距离范围内,对象的数量将由Density(密度)参数严格指定。 这也意味着所有应该呈现的对象都能在恰当的位置被找到。
|
||
Fade Distance(衰减距离) | 在整个衰减距离范围内对象的数量是逐渐减少的,具体表现就是这些对象会逐个随机消失。 衰减距离紧随能见距离之后。 如果设置了衰减距离,那在Clutter中包含的对象所急剧消失的地方将不会出现清晰可见的线。 取而代之的是,剩下的很少一部分网格会平滑融合进背景而不出现任何视觉噪声。
|
||
Seed(种子) | 伪随机数生成器的种子值能为自动布置创建不同形态。 种子可以手动设置,或是由引擎为种子提供随机值(使用Randomize(随机化)选项)。 |
随机化Clutter对象#
要想随机化构成World Clutter(节点杂物)的对象的出现,就需使用两类值:
- Mean value(平均值)(即:Scale(缩放比),Offset(偏移),Rotation(旋转))定义了平均值。 它是会被随机拉高或拉低的基本值。
- Spread value(散布值)定义了参数的可能变化范围。 其值越高,最终结果呈现的也就越多样。
散布值是【可选的】:如果该值被设置为0,那仿真过程也不受此影响,这时将只有平均值会被应用给所有对象。
待这些值被指定之后,就可以根据如下公式来计算每个参数了:
- 结果 = Mean值 + Random * Spread值
Scale(缩放比) | 该参数可随机缩放所有散置对象以使它们变大或变小。
|
---|---|
Offset(偏移) | 高度偏移参数可控制以同一高度或不同高度放置的所有对象是应在高处被找到,还是应在低处被找到。 例如,带有偏移参数的石头可被深插于地下,这样一来就只有石头顶部的一小块儿是可见的;或是将该石头放置在高处,以便让其看起来很高大。
|
Rotation X(旋转X轴) Rotation Y(旋转Y轴) Rotation Z(旋转Z轴) |
这些参数可随机确定散置对象的朝向。
|
遮蔽有对象的区域#
让对象在所有方向和位置上都一致地散置自然是十分不方便的。 作为创建大量覆盖有限场所的小的World Clutter(节点杂物)节点的一种替代方法,您可使用掩码(mask)来创建大的World Clutter(节点杂物)节点。
Image Mask(图像掩码) | Mask(掩码)决定了要遍布哪些区域来随机散置对象,以及决定哪些区域是不存在列表中的对象的。 例如,在某一地形中,可使用掩码遍布区域散置废物,同时又能留出一些地方。
要想直接在场景中涂抹图像掩码,可使用Mask Editor(掩码编辑器)。 |
||
---|---|---|---|
Threshold for mask(掩码阀值) | 要想控制遮蔽的强度,须使用掩码阀值参数。 该参数用来检查某个区域的遮蔽密度,如果阀值比掩码的颜色值【高】,则对象会在整个区域内被散置。 如果遮蔽密度不够,则该区域会被留空。
|
||
Mesh Mask(网格掩码) | 基于网格的掩码可用来放置对象。 矢量遮蔽可不依赖掩码纹理的分辨率,它能创建拥有极高精度的道路,河流等等 。 用于遮蔽的网格应是简单的平面网格。 | ||
Inverse(取反) | Inverse(取反)标记选项用于切换对象是被放置在网格轮廓之内还是之外。 | ||
Min掩码值和Max掩码值 | 作为一种高级对象播种和内存消耗优化的解决方案,不仅可使用整个掩码,就连掩码的任意所需部分都可被应用给对象。 这意味着多个不同的对象可以共用同一掩码,但是会使用不同等级。
默认情况下,图像掩码的每个通道都指定了区域以及颜色密度范围为[0;255]的生长密度。 不过,借助Min value(最小值)和Max value(最大值),您不仅可以在它们所确定的值域内指定任意的颜色密度范围,还能指明是掩码的哪部分包含了指定的密度范围,该掩码部分将用于播种节点。 例如,下面给出的是R8型图像掩码: 如下几个代表了不同节点高度的节点对象可共用上述掩码:
|
||
Flip X | 水平翻转Image Mask。 | ||
Flip Y | 垂直翻转Image Mask。 |
沿地势确定朝向#
除非World Clutter(节点杂物)列表中的对象是被遍布完全平坦且不倾斜的表面散置的,否则这些对象就可在无需任何干预的情况下被自动放置,以此来精确重复地势的高低起伏。 要实现这一点,底层表面就须成为World Clutter(节点杂物)节点的父节点。 (如果层级列表中的地形节点(或网格节点)与World Clutter(节点杂物)间存在有多个节点,那相交选项仍然会被勾选。)
用于相交的父节点只能是terrain(地形)对象或mesh(网格)对象。 网格也应呈地形状,也就是说,它须只有一个沿Z坐标的垂直表面。
Intersection(相交) | 待Intersection(相交)复选框被勾选之后,World Clutter(节点杂物)中的对象就会遍布父对象的表面散置。
|
||
---|---|---|---|
Orientation(朝向) | 此选项可将父表面的法线向量设置为散置对象的初始朝向。 这意味着,如果表面在某个地方是垂直的,那位于其上的对象的【上】方向将会被真实地指向这一边。
|
||
Angle(角度) | 就像使用grass(草场)对象的情形一样,散置处理也可以考虑斜坡有多陡峭。
|