位屏蔽
位掩码是一种灵活的机制,用于仅访问一组数据中的特定位。可以将其应用于以下系统:
- Rendering into viewport
- Shadowing
- 反射渲染
- Collisions
- Intersections
- 贴图
- Fields
- Sound sources
- 身体
- Pathfinding
要指定掩码,请单击相应的掩码按钮(Viewport, Shadow, Intersection等),然后启用32位掩码的必需位。启用位意味着设置 1 的值(禁用时,该值为 0 )。生成的掩码在上下文菜单窗口的顶部显示为十六进制字符。所选按钮的名称显示在屏蔽按钮上。
要折叠上下文菜单,请再次单击“遮罩”按钮。
启用第一位的位掩码
|
|
可以更改默认的位名称。在此类型的所有掩码中,将在字段中输入的名称分配给选定的位。例如,如果将名称分配给曲面的Viewport遮罩的第一位,则为相机的Viewport遮罩的第一位显示相同的名称。位掩码名称是在本地分配的,并存储在<Project Name>/data/default.bitmasks文件中,该文件是您首次在UnigineEditor中打开项目时创建的。
比较口罩#
使用二进制运算符和按位比较掩码。结果,将第一掩码的第一位与第二掩码的第一位进行比较,将第二位-与第二位进行比较,依此类推。
例如,以下视口蒙版具有4个匹配位,因此它们匹配:
启用了前6位的相机Viewport掩码 |
启用了第二,第三,第四和第五位的对象的Viewport掩码 |
每个掩码都有一个十六进制表示形式,显示在上下文菜单的输入字段中。您可以复制一个掩码的十六进制值并将其粘贴到另一个掩码的输入字段中,以启用掩码的相同位。
请参阅我们的 有关位屏蔽的视频教程的一部分,该教程专门介绍位屏蔽概念的更详细和直观的说明。
渲染到视口#
可以选择性地将 对象(以及 decals 和 lights )渲染到视口中。为此,相机Viewport遮罩(在通过“相机”面板Camera Settings打开的窗口中设置)应与以下遮罩匹配:
- 物体表面Viewport蒙版(Parameters窗口→Node选项卡→Surfaces部分→Rendering字段)
- 对象材质视口蒙版以渲染对象的材质(Parameters窗口→Node选项卡→Surface Material部分→Common选项卡→Options字段)
使用范例#
假設我們有兩個具有相同材質的對象。 為了使其中一個渲染到視口中,而另一個不渲染,我們應該更改第二個對象的Viewport mask。
在两个对象的表面Viewport蒙版中,启用了相同的位Viewport Mask 0(00000001)
|
对于第一个对象,禁用了表面Viewport蒙版的所有位(该蒙版设置为00000000)
|
在我們的## 有關位掩碼的視頻教程中查看如何將渲染設置為視口的演示。
Reflection Mask#
反射蒙版(Reflection Viewport)控制将环境探针反射和平面动态反射渲染到反射相机的视口。
可以设置反射罩:
- 用于环境探针(Parameters窗口→Node选项卡→Baking Settings部分→Reflection Viewport Mask按钮)。该遮罩仅与为环境探针启用的Realtime Update模拟结合使用。
- 用于平面反射(Parameters窗口→Node选项卡→Surface Material部分→Parameters选项卡→Planar Reflection部分→Viewport Mask按钮)。
为了渲染动态反射,反射材质的Reflection Viewport遮罩(Parameters窗口→Node选项卡→Surface Material部分→Parameters选项卡Planar Reflection部分→Viewport Mask按钮)必须具有至少一个与以下每个遮罩匹配的位:
- 摄像机的Reflection Viewport遮罩(Camera Settings窗口→Masks字段)
- 对象的Viewport掩码(Parameters窗口→Node选项卡→Surfaces部分→Rendering字段)
- 对象材质的Viewport蒙版(Parameters窗口→Node选项卡→Surface Material部分→Common选项卡→Options字段)
另请参见我们的视频教程中有关位掩码的片段,演示了如何使用 烘焙反射和 动态反射。
使用范例#
假设您有一个反射表面,并且在该表面上反射了两个对象。
- 要渲染无反射的对象,其Viewport遮罩或其材质的Viewport遮罩应与平面反射的Viewport遮罩或相机的反射Viewport不具有匹配位。面具。
- 要在没有对象的情况下渲染反射,对象的Viewport遮罩或其材质的Viewport遮罩应与相机的Viewport遮罩没有匹配的位。
在下面的示例中,掩码以二进制表示形式给出。为了方便起见,我们假设对象及其材质具有相同的Viewport蒙版。为了使掩码匹配,它们应在适当的位位置共享1。您可以将这些掩码转换为十六进制数字表示形式,并通过UnigineEditor设置获得的值。
没有反射的对象
|
没有对象的反射
|
||||||||||||||||||||||||
|
|
在第一个示例中,对象的Viewport遮罩与相机的反射Viewport遮罩不匹配。但是,它与摄影机的Viewport蒙版匹配,因此将渲染对象。
在第二个示例中,对象的Viewport掩码与相机的Viewport掩码不匹配。但是,它与相机的Reflection Viewport遮罩和相匹配,因此与平面反射的Viewport遮罩匹配,因此将渲染反射。
Shadow Mask#
Shadow蒙版控制由光源照明的对象投射的阴影的渲染。
要渲染阴影,照亮对象的光源的Shadow遮罩必须与以下遮罩匹配(至少一位):
- 物体表面Shadow蒙版(Parameters窗口→Node选项卡→Surfaces部分→Rendering字段)
- 对象材质Shadow蒙版(Parameters窗口→Node选项卡→Surface Material部分→Common选项卡→Options字段)
使用范例#
下面的示例演示了区别。在左侧,启用了表面及其材质的Shadow遮罩的所有位,因此它们具有与光源的Shadow遮罩相匹配的一位,并渲染了阴影。在右侧,表面的Shadow遮罩及其材质与光源的Shadow遮罩不匹配,因此不会渲染阴影。
表面及其材质的Shadow蒙版
|
表面及其材质的Shadow蒙版
|
光源的Shadow蒙版
|
光源的Shadow蒙版
|
请参阅我们的 有关位掩码的视频教程中的另一个用法示例。
Material Mask#
Material遮罩是一个24位遮罩,用于指定可以在其上投影贴花的对象。仅当对象的Material蒙版与贴花的Material蒙版相对应时,对象或其表面之一才能接收贴花。
可以在材质编辑器的Parameters选项卡上为选定的材质指定Material蒙版:
在我們有關位掩碼的視頻教程中,了解如何使用Material掩碼限制貼花投影區域
Intersection Mask#
Intersection遮罩指定将(或不会)找到交叉点的对象(包括对象,节点,形状,碰撞对象和障碍物)。仅当对象的Intersection掩码与作为函数参数传递的Intersection掩码匹配时,才找到相交,否则将忽略该相交。
可以通过UnigineEditor或 API 指定对象表面的遮罩。
Intersection掩码可用于限制对象的数量,以限制对象的参与或通过交叉路口来提高性能。
我们有关位掩码的视频教程介绍了Intersection掩码的两种使用情况: 从交集检测中排除对象和 剪草。
Collision Mask#
Collision遮罩允许您过滤特定的形状和物体以进行物理交互:只有具有匹配的Collision遮罩的对象才会碰撞。如果蒙版不匹配,则形状和实体将通过相互忽略。
例如,我们有四个物体应该以以下方式碰撞:
Body A | Body B | Body C | Body D | |
Body A | ||||
Body B | ||||
Body C | ||||
Body D |
为此,每个碰撞体应在适当的位位置共享1:
身體 | 蒙版 |
---|---|
Body A | 0001 |
Body B | 0010 |
Body C | 0110 |
Body D | 1111 |
在我們 有關位掩碼的視頻教程中,了解Collision掩碼的工作原理。
Exclusion Mask#
Collision掩码的类似物,反之亦然。用于防止形状与其他形状的碰撞。对于具有匹配的Collision蒙版不碰撞的形状,其Exclusion蒙版的至少一位应匹配。 0 启用具有匹配的Collision蒙版的所有形状的碰撞。此掩码独立于Collision掩码。
在我們 有關位掩碼的視頻教程中,了解Exclusion掩碼的工作原理。
Physics Intersection Mask#
物理相交(具有物體和碰撞體形狀的物理對象之間,或具有碰撞體幾何形狀的光線相交之間)使用單獨的蒙版,與上述描述的蒙版不同 並用於世界交集(即對象綁定的體積之間或與對象表面的射線交集之間)。 這提供了更大的靈活性,使您可以獨立控制它們。
物理相交可用于例如检测生成的粒子与物理形状和物体的碰撞,或用于确保正确交互的静态碰撞器表面,或用作检测模拟地面车辆射线轮的快速方法,或检查是否有可摧毁的物体或玩家被弹丸击中。
可以通過UnigineEditor或通過針對粒子系統,shape,骨折體,playeractor或#的API指定Physical Intersection蒙版。號車輪接頭,可通過限制可參與物理相交的對像數量來進行選擇性的物理相交檢測或提高性能。也可以通過UnigineEditor或API為對象的表面設置該對象(如果該對像沒有指定實體或形狀,則應被視為靜態碰撞體)。
Physical Mask#
用于过滤与物理节点交互的对象的位掩码:force, wind, water。根据与collision mask相同的原理设置此掩码。例如,在物理水中放置面罩不匹配的身体不会漂浮。
在有關位掩碼的視頻教程中,顯示了使用Physical掩碼進行物理效果的示例。
声源口罩#
掩码可以通过UnigineEditor和 API 进行设置。
要查看和听到与声音相关的遮罩的用法,请观看我们的 有关位遮罩的视频教程。
Source Mask#
一个位掩码,用于确定声源所属的声道。要听到声音,其面具应至少与播放器的声音面具相匹配。
Reverb Mask#
Occlusion Mask#
一个位掩码,用于确定所选表面遮挡了哪些声源。为了使声源被表面遮挡,此蒙版的至少一位应与声源的Occlusion蒙版匹配。
Navigation Mask#
Navigation掩码用于指定参与或不参与寻路的导航区域。 Navigation掩码应与导航区域内计算的在導航區域內計算的路線的Navigation掩碼; 否則,該區域不參與尋路。
导航区域的Navigation掩码可以通过以下方式指定:
- 窗口的Navigation Sector/Navigation MeshParameters部分中的UnigineEditor
- Unigine API
使用Navigation掩码,您可以限制导航区域的数量,在其中可以计算特定路线。例如,您可以使用遮罩来计算相交导航区域内的2条不相交的路线。
在我們 有關位掩碼的視頻教程中,了解Navigation掩碼的工作原理。
Obstacle Mask#
Obstacle掩码用于指定在路径查找过程中已绕过或未绕过的导航区域中的障碍物。障碍物的Obstacle遮罩应与所计算路线的Obstacle遮罩相匹配;否则,不会考虑障碍。
与导航蒙版类似,可以通过以下方式指定障碍蒙版:
- 窗口的Obstacle Box/Sphere/CapsuleParameters部分中的UnigineEditor
- Unigine API
在我們 有關位掩碼的視頻教程中,了解Obstacle掩碼的工作原理。
Field Mask#
Field掩码定义了草、水或云等对象是否与Field对象相互作用。字段节点的Field掩码应与草,水或云层的Field掩码匹配。
可以通过UnigineEditor或API设置Field掩码。
在我們 有關位掩碼的視頻教程中,了解Field掩碼的工作原理。
Particles Field Mask#
Particles Field 掩码用于粒子与Particles Field 节点(Deflectors 和 Spacers)的相互作用。只有当它们的掩码匹配(至少一个比特)时,发射的粒子才会受到Particles Field的影响。