This page has been translated automatically.
视频教程
界面
要领
高级
实用建议
基础
专业(SIM)
UnigineEditor
界面概述
资源工作流程
Version Control
设置和首选项
项目开发
调整节点参数
Setting Up Materials
设置属性
照明
Sandworm
使用编辑器工具执行特定任务
如何擴展編輯器功能
嵌入式节点类型
Nodes
Objects
Effects
Decals
光源
Geodetics
World Nodes
Sound Objects
Pathfinding Objects
Players
编程
基本原理
搭建开发环境
使用范例
C++
C#
UnigineScript
统一的Unigine着色器语言 UUSL (Unified UNIGINE Shader Language)
Plugins
File Formats
材质和着色器
Rebuilding the Engine Tools
GUI
双精度坐标
应用程序接口
Animations-Related Classes
Containers
Common Functionality
Controls-Related Classes
Engine-Related Classes
Filesystem Functionality
GUI-Related Classes
Math Functionality
Node-Related Classes
Objects-Related Classes
Networking Functionality
Pathfinding-Related Classes
Physics-Related Classes
Plugins-Related Classes
IG Plugin
CIGIConnector Plugin
Rendering-Related Classes
VR-Related Classes
创建内容
内容优化
材质
Material Nodes Library
Miscellaneous
Input
Math
Matrix
Textures
Art Samples
Tutorials
注意! 这个版本的文档是过时的,因为它描述了一个较老的SDK版本!请切换到最新SDK版本的文档。
注意! 这个版本的文档描述了一个不再受支持的旧SDK版本!请升级到最新的SDK版本。

遮挡剔除

对象剔除允许您不渲染在视锥中未显示的对象。遮挡剔除的特殊情况如下:

注意
由于对象的边界框用于遮挡剔除(检查边界框是否可见),建议从3D计算机图形软件中以本地坐标导出对象,以使网格的边界更接近几何

封堵器#

遮挡物允许剔除隐藏在其后面的几何图形。封堵器有2种类型:

要使用的封堵器类型由要剔除的几何定义。

在复杂的环境中,当许多物体相互遮挡并且渲染成本很高(它们有很多多边形和/或较重的着色器)时,遮挡器可能会非常有效。

注意
使用封堵器剔除表面较小的大物体可能会导致其他性能损失。此外,遮挡物在带有平坦物体的场景中或摄像机从上方俯视场景时无效。因此,在使用封堵器时,应考虑要剔除的对象的特殊性。

在使用封堵器之前,请检查以下内容:

  • 启用遮挡物渲染:在菜单栏中,启用了Rendering -> Occlusion Culling -> Occluders
  • 禁用了遮挡对象的阴影渲染:在菜单栏中,选择Rendering -> Occlusion Culling并启用Shadows Culling
    注意
    如有必要,可以启用阴影渲染。

Usage of occluders is shown in the Content Optimization video tutorial.

使用盒形封堵器#

occluder是一个框形形状,用于剔除对象的表面,其后部的边界不可见。这是最简单的封堵器,应与阻挡其他物体的箱形物体一起使用。例如,您可以添加一个遮挡物,遮挡物的形状与建筑物的边界重合,以避免在该建筑物后面渲染对象。

建筑物内的盒形封堵器

要创建盒形封堵器,请执行以下操作:

  1. 在菜单栏中,选择Create -> Optimization -> Occluder并将遮挡物作为子项添加到应该遮挡其他对象的节点上。
  2. Parameters窗口的Node选项卡的Common部分中,将遮挡物的位置设置为父遮挡物的位置。

  3. Node选项卡的World Occluder部分中,单击Edit Size以启用封堵器的编辑模式。通过使用阻塞器框两侧的彩色矩形来调整阻塞器的大小,使其与父节点大小一致。
    注意
    您还可以使用Size参数设置沿轴的大小。

  4. 在摄像机和遮挡件之间指定Distance,在该位置遮挡件不会遮挡任何东西,因此应将其禁用以避免对性能造成负面影响。

要检查阻塞器如何工作,请禁用父节点,然后尝试打开和关闭阻塞器。

默认情况下,封堵器的正面用于剔除对象。但是,如果摄像机位于遮挡物内部(例如建筑物内部),则不会执行遮挡剔除。为避免这种情况,请在NodeBack Face选项卡的World Occluder部分中启用参数。

使用基于网格的遮挡物#

occluder网格 是基于任意网格的,该网格对对象的表面进行剔除,其边界在后面不可见它。封堵器网格与无法用框近似的几何一起使用。

要创建基于网格的遮挡件,请执行以下操作:

  1. 准备要用于封堵器的低多边形网格。
    注意
    不建议使用与应该阻塞其他对象的节点相同的详细网格:阻塞器的网格应尽可能简单,以避免性能损失。

  2. 在菜单栏中,选择Create -> Optimization -> Occluder Mesh并指定准备的网格。
    注意
  3. 将阻塞器作为子对象添加到应该阻塞其他对象的节点上。
  4. Parameters窗口的Node选项卡的Common部分中,将遮挡物的位置设置为父遮挡物的位置。

  5. 在摄像机和遮挡件之间指定Distance,在该位置遮挡件不会遮挡任何东西,因此应将其禁用以避免对性能造成负面影响。

硬件遮挡查询#

剔除在摄影机视口中不可见的几何的另一种选择是使用硬件遮挡查询。它允许跳过对象的渲染,这些对象的边界框被另一个实体几何覆盖。结果,减少了渲染多边形的数量,并提高了性能。

要在将数据发送到GPU之前对场景进行硬件遮挡测试,请在菜单栏中打开Rendering -> Occlusion Culling -> Occlusion Query标志。

注意
将对在ParametersCulled by Occlusion Query窗口的Node选项卡中设置了标志的所有对象执行剔除。

要运行硬件遮挡测试,请执行以下操作:

  1. 在菜单栏中,将Rendering -> Occlusion Culling -> Occlusion Query标志打开,以启用对场景的测试,然后再将数据发送到GPU。

  2. 对于所有应该剔除的对象,在ParametersCulled by Occlusion Query窗口的Node选项卡中启用标志。
    注意
    仅对设置了此标志的节点进行硬件遮挡剔除测试。

为对象启用剔除后,将为其呈现遮挡查询框

Material ball及其遮挡查询框
注意
要显示此类框,请打开Helpers -> Occlusion Queries选项。

遮挡查询框与对象边界框的大小一致。当此框重叠时(即不在相机视口中),将突出显示红色,这意味着未通过遮挡测试并且将不会绘制网格。

遮挡查询测试通过
遮挡查询测试失败,未显示实物球
注意
硬件遮挡查询仅应用于使用较重着色器的对象。否则,性能将下降而不是提高。建议启用对具有反射的水或对象的查询。

您可以通过启用第二个线框模式以查看场景中的所有三角形来检查此技术的效果。在控制台中输入 render_show_triangles 2 并检查遮挡的多边形的作用方式。

“内容优化”视频教程中也提供了使用硬件遮挡查询的示例。内容优化 视频教程.

最新更新: 2024-08-16
Build: ()