遮挡框

概览

遮挡框是一种特殊的几何体,用于提高性能。每个完全被遮挡框遮挡的物体都会被排除在渲染之外。部分被遮挡的物体则保持原样。

如果物体的任何部分超出了遮挡框, ,它就会重新出现:请参阅视频 1视频 2

创建遮挡框

为对象创建遮挡框的步骤如下

  1. 创建一个方框对象。

  2. 将该对象命名为 occluder_box.

  3. 使用 Dagor Dagorrat Material 2 着色器创建一个材质。


  4. 将着色器类别设置为 gi_black(为获得更好的可见度,建议选择与物体形成鲜明对比的材质颜色,如鲜红色)。


  5. 将材质分配给名为 occluder_box 的对象。

  6. 打开对象的属性,取消选中Renderable选项(这将防止以后出现潜在问题)。


  7. User Defined选项卡中,输入以下内容:

    renderable:b=no
    cast_shadows:b=no
    occluder:b=yes
    collidable:b=no
    

    User Defined Properties:

    • renderable:b=no - 禁止渲染对象。

    • cast_shadows:b=no - 阻止对象投射阴影。

    • occluder:b=yes - 将对象指定为遮挡器。

    • collidable:b=no - 禁用碰撞生成。


    Important

    取消选中Dagor对象属性中的collidable选项并不能达到同样的效果!

    要验证这一点,请在 Asset Viewer 中检查资产。如果碰撞数据中可见遮挡框,则说明设置不正确。 碰撞不应该包括一个 occluder_box 节点。

  8. occluder_box 对象转换为 Editable Poly 或应用 Edit Poly 修改器。

  9. 调整大小以适合要遮挡的对象。具体尺寸要求详见下文。

编辑包围盒

**occluder ** 这个名字很贴切,因为只有它的边界框才是最重要的,而与它的方向无关。因此,在创建遮挡框时应遵循以下规则:

  1. 遮挡框绝对不能超出对象的几何尺寸。


  2. 它应尽可能填满对象的内部空间,类似于 UV 贴图,但不应超出对象的边界。


  3. 不建议旋转遮挡盒。

    下面是一个未旋转遮挡框的示例:


    这是旋转后的效果:


  4. 不要将对象命名为 occluder_box 以外的名称。

  5. 应将遮蔽盒放置在 LOD00 图层中。

Tip

如果需要删除遮挡框,请删除其多边形,同时保留所述对象及其属性。

验证遮挡框的设置

有几种方法可以验证遮挡框的设置是否正确:

  1. Asset Viewer中,遮挡框显示为白色矩形。

    如果不可见,请确保启用了适当的设置。如果遮挡框出现错位(如图所示),则需要在 3ds Max 中进行修正。


  2. 在游戏内测试时,您可以通过按下 F3 键显示线框来观察遮挡框的运行情况,请参见 视频 以供参考。

    如果遮挡框后面的物体没有消失、消失过早、过晚或根本没有消失,请根据上述指南重新检查设置。如果遮挡框配置不正确,很可能会遇到类似 视频 1视频 2中显示的问题。

配置良好的遮挡框示例

下面是几个正确设置遮挡框的示例图片。

显示遮挡框的命令

  • render.debug occlusion occluded - 显示遮挡物及其统计信息。

  • render.debug occlusion occluded - 显示遮挡物体的边界框。

切换命令:

  • render.debug occlusion boxes

  • render.debug occlusion stats

  • render.debug occlusion occludedv

  • render.debug occlusion not_occluded

此外,您还可以使用

  • occlusion.enabled - 完全启用或禁用遮挡渲染。

  • rendinst.check_occlusion - 启用或禁用渲染实例的遮挡。