引言

借助可视性对象,您可以使用工具栏上的链接工具,以直观可见的方式将静态几何网格、水平面等多个图形附加到可视性系统中。

 

  注:默认设置下,静态几何网格有一个可视性对象和一个远切距离。 在大部分情况下,链接到一个几何网格不是合理的选择,您应该链接多个几何网格供遮挡查询系统使用。 对于镜面和默认不包含可视性对象的自定义用户场景对象,应将这些几何网格链接到一个可视性对象,将它们包含到可视性系统中。

 

完成布置后,您可以编辑可视性对象的远切距离,设好图形停止渲染的预定义距离,从而提升游戏的性能表现,仅呈现需要呈现的部分。 该系统的另一功能是为静态几何网格加入遮挡剔除,因为静态几何网格默认不包含在该系统中。

可视性对象是在 Vision 引擎提供的默认可视性收集器中使用动态自定义场景元素的直接手段,也非常有助于整体可视性测试(即使用一个可视性对象测试多个场景元素,判定其可视性状态)。 可视性对象呈现为一个几何体图形,该图形可以纳入可视性测试的遮挡入口测试和遮挡查询。 可视性对象与自定义渲染循环结合使用尤其有效。

 

可视性对象图形

可视性对象图形位于可视性图形组,从图形创建面板将可视性对象图形实例拖拽到场景中即可完成添加。

镜面图形等部分图形使用可视性边界框列表来决定其自身的可视性状态。 这些图形可链接至可视性对象。

 

优化: 链接静态几何网格

 

默认设置下,静态几何网格图形不使用可视性剔除遮挡查询。 这就是说,引擎没有用于剪切位于不透明几何体后方的复杂几何体的默认机制。

 

vForge 允许将静态几何网格图形链接到可视性对象。 见下文关于链接的段落。

 

将图形链接到静态几何网格时,请在可视性对象的属性中启用硬件遮挡测试。 见下文的可视性对象属性部分。

 

请在遇到如下状况时使用该技术:

 

   静态几何网格的剪切尺寸相对较小(紧凑边界框),但细节度高。 从性能优化的角度来看,剪切一个低多边形对象并不值得。

   该技术还用于将大量低多边形几何网格并为一组,以便同时剪切。 虽然低多边形对象对多边形总计数的影响不大,但这一方法可节省大量绘制请求,而绘制请求的数量对 CPU 负担至关重要。

   可视性对象被遮挡查询剪切的可能性不为 0。 如果没有这种可能性,可视性对象就完全起不到作用,因为它会回退成简单的平截体剪切,而静态几何网格边界框本身完成平截体剪切的效率要高得多。 例如,在俯瞰视角的 RTS 游戏中,可视性对象通常就起不到作用。

 

  注:可视性对象也会造成性能占用,因为需要一个额外的绘制请求。

这一优化有益与否并没有决定性的规则可循。 与此相反,您需要仔细寻找性能瓶颈,查看是否存在潜在的、可以使用该方法剪切的对象。

 

链接可视性对象至图形

只要类型兼容,单一可视性对象图形可链接至场景中的无限多个图形。 可视性对象是链接源,图形是链接目标。

 

选择该图标可激活链接

一旦启用链接,可视性对象会显示其连接。 请参阅链接图形章了解如何链接图形。 您只要将链接拖拽到您需要加入可视性系统的图形上即可。

可视性对象相关操作菜单

可视性对象的上下文菜单中包含相关操作选项,可加快图形连接的操作。

值得一提的主要选项为:

 

    Shape Name as Key(设图形名称为键名): 该选项将图形名称设为对象键名,然后您可以在引擎中引用该键名,用它来执行特定任务。

 

    Adjust bounding box to linked objects(根据被链接对象调整边界框): 仅当可视性对象被链接到某个图形时,该选项才会显示。 该选项可调整边界框的位置和尺寸,使其紧紧贴合所有被链接图形。

 

示例: 将您的图形链接到可视性对象后,在图形面板中右键单击可视性对象,选择”根据被链接对象调整边界框”

您的可视性边界框会自动调整,贴合被链接图形。

Link to all shapes that touch the Bounding Box(链接接触边界框的所有图形): 选中该选项,所有接触边界框的静态几何网格图形都将被链接。

 

示例: 在您的图形没有链接到可视性对象的情况下,将可视性对象边界框放置到图形周围或与其相交。

然后 右键单击(单击图形列表中的图形或单击 3D 控制器) > Relevant Operations(相关操作)> Link to all Shapes that Touch the Bounding Box(链接接触边界框的所有图形)。

点击后,所有与边界框相交的对象都会被链接。

这一可视性边界框已被上移,以便清楚地显示连接。

 

然后您可以使用 根据被链接对象调整边界框等其他属性,让边界框贴合边缘。

 

Link to all shapes that are inside the bounding box(链接边界框内的所有图形): 如果您的边界框中有大量图形,这是一个便利的工具。 您无需链接每个图形,使用该选项即可自动链接所有图形至可视性对象。

 

示例: 在您的图形没有链接到可视性对象的情况下,用可视性对象边界框圈起您想要链接的所有图形。

然后,打开可视性对象相关操作,选择链接边界框内的所有图形。

点击后,可视性对象边界框内的所有图形都会被链接。

蓝线是链接线,可视性边界框已被上移,以便清楚地显示连接。

 

可视性对象属性

链接好所有所需图形后,就可以更改可视性对象属性了。

大部分属性与其他图形类似,例如 位置、缩放比例和图形设置。

 

值得一提的新属性组为  Box Size(边界框尺寸)和 Visibility Test Flags(可视性测试勾选项)。

 

Box Size X/Y/Z(边界框尺寸 X/Y/Z): 这是边界框 X、Y 和 Z 轴的尺寸。

 

Active(激活): 如启用,可视性对象会为每一帧执行可视性测试。

 

Frustum Test(平截体测试): 该测试会判断可视性对象是否离开视平截体,如离开,该可视性对象将被剔除。

 

Portal Test(遮挡入口测试): 如启用,该可视性对象会执行遮挡入口测试。

 

Hardware Occlusion Test(硬件遮挡测试): 遮挡剔除是一种尝试减少图形系统渲染负担的方法,会从渲染流水线中清除(剔除)被其他对象隐藏(遮挡)的对象。

 

Far Clip Distance(远切距离): 决定了可视性对象被剪切的镜头距离。 如果值 ⇐0,则拉远距离也不会剪切该对象。

 

   提示:如果您看不到对象的任何可视性变化,请确保将该值设为大于 0。

 

Context Bitmask(上下文位元蒙版): 设置位元蒙版,用于判断该对象在哪个渲染上下文中激活,例如,1 是在主视图中激活。