`
plmkome
  • 浏览: 44211 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

Vision引擎中Visibility Objects(可视性对象)介绍

 
阅读更多
引言
借助可视性对象,您可以使用工具栏上的链接工具,以直观可见的方式将静态几何网格、水平面等多个图形附加到可视性系统中。
 
  注:默认设置下,静态几何网格有一个可视性对象和一个远切距离。 在大部分情况下,链接到一个几何网格不是合理的选择,您应该链接多个几何网格供遮挡查询系统使用。 对于镜面和默认不包含可视性对象的自定义用户场景对象,应将这些几何网格链接到一个可视性对象,将它们包含到可视性系统中。
 
完成布置后,您可以编辑可视性对象的远切距离,设好图形停止渲染的预定义距离,从而提升游戏的性能表现,仅呈现需要呈现的部分。 该系统的另一功能是为静态几何网格加入遮挡剔除,因为静态几何网格默认不包含在该系统中。

可视性对象是在 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 是在主视图中激活。
分享到:
评论

相关推荐

    VIsibility属性

    在 XML 文件中,我们可以使用不同的 visibility 属性值来设置控件的可见性,而在 Java 代码中,我们可以使用不同的 VISIBILITY 常量来设置控件的可见性。这些状态的区别在于对控件的显示和布局的影响,它们可以帮助...

    Android中visibility属性

    在Android开发中,`visibility`属性是控制UI组件可见性的重要元素,广泛应用于各种视图控件,如TextView、ImageView、Button等。该属性决定了一个控件是否在屏幕上显示,以及如何显示。`visibility`属性有三个可能的...

    A Survey of Visibility for Walkthrough Applications

    - **介绍可视性**:概述可视性的基本概念及其在不同领域中的应用。 - **对象空间可视性**:讨论如何基于对象的几何属性确定可视性。 - **图像空间可视性**:探索基于像素的可视性确定技术。 - **从区域可视性**:...

    WPF的bool2Visibility转换器使用

    `BoolToVisibilityConverter` 是一个内置的数据转换器,它用于将布尔值(`bool`)转换为 `Visibility`枚举类型,这对于根据逻辑状态控制UI元素的可见性非常有用。在本教程中,我们将深入探讨如何使用`...

    SuperMap iObjects Java 8C基于地形两点间的可视性分析

    2. 可视性计算:利用SuperMap iObjects Java提供的`Visibility Analyst`类或相关方法,输入观察点、目标点的坐标,结合DEM数据进行可视性分析。此过程会计算出哪些点在视线内,哪些被地形遮挡。 3. 结果处理:分析...

    SuperMap Objects .NET 6R(2012) 添加对象到跟踪层

    在“SuperMap Objects .NET 6R(2012) 添加对象到跟踪层”这个主题中,我们将深入探讨如何利用这个版本的库在三维空间中创建、管理和操作跟踪层,并在其中添加模型和标注,以及实现点选模型后的信息查询功能。...

    JS中style.display和style.visibility的区别实例说明.docx

    JS 中 style.display 和 style.visibility 的区别实例说明 在 JavaScript 中,style.display 和 style.visibility 是两种常用的控制元素显隐的方法,但是它们之间有着根本的区别。 style.display style.display ...

    前端项目-visibility.js.zip

    《前端项目中的Page Visibility API与visibility.js库》 在当今的Web开发中,前端性能优化是不可或缺的一部分。其中,理解用户与页面的交互状态对于提升用户体验至关重要。这就是Page Visibility API和`visibility....

    display与visibility的区别

    在网页布局与样式设计中,`display`与`visibility`属性是控制元素显示状态的两种常用方式。尽管它们都能达到隐藏或显示元素的目的,但两者之间存在本质的区别。本文将深入探讨这两种属性的工作原理、应用场景以及...

    virtual_visibility

    标题“virtual_visibility”和描述“virtual netflow visibility,my test”提及的核心概念是虚拟网络的NetFlow可视性。NetFlow是一种由Cisco系统开发的技术,用于收集、分析和记录网络流量数据,以帮助网络管理员...

    DataGrid_Column_Visibility_Binding

    本教程将详细讲解如何通过数据绑定来改变DataGrid中的列的可见性,即"DataGrid_Column_Visibility_Binding"的主题。 首先,我们需要了解WPF中的数据绑定基础。数据绑定允许UI元素的属性与应用程序中的数据源进行...

    dotnet-一个在Unity中简单2D3D可视化效果

    在Unity游戏引擎中,开发2D和3D可视化效果是创建引人入胜的游戏和交互式体验的关键步骤。`.NET开发-其它杂项`标签暗示了这个项目可能使用了Unity的C# API和其他.NET框架来实现这些效果。"2d-3d-visibility-master"这...

    CSS隐藏元素 display visibility opacity的区别.docx

    在CSS中,隐藏元素的方法主要有三种:`display:none`、`visibility:hidden`和`opacity:0`,它们各自有不同的特点和适用场景。 1. `display:none`:此属性会使元素完全从页面布局中消失,不占据任何空间。元素及其...

    对比: display, visibility(有代码)

    在网页设计和开发中,`display` 和 `visibility` 是两个非常重要的CSS属性,它们用于控制元素在页面上的可见性和布局。这篇博客文章通过代码示例深入探讨了这两个属性的区别和用法。 首先,`display` 属性主要用于...

    satellite visibility_satellite_卫星轨道计算

    "satellite visibility_satellite_卫星轨道计算"这个标题暗示我们要讨论的是如何预测和计算卫星在特定地点的可见性,这对于地面站接收信号或者规划卫星任务来说是极其关键的。 首先,卫星的轨道是由它的六根数(也...

    visibility_2020建模_2020数学建模_参数估计_数学建模_Visibility_

    "visibility_2020建模_2020数学建模_参数估计_数学建模_Visibility_"这个标题暗示了我们正在探讨2020年数学建模竞赛中的一项任务,特别关注的是“Visibility”问题,这可能涉及对某个系统或现象的可视性进行量化或...

    css中display和visibility的用法和区别介绍

    在CSS中,`display`和`visibility`两个属性都是用于控制元素在页面上的显示状态,但它们的作用方式和效果有着显著的区别。 `display`属性主要影响元素的布局和类型。它有多种不同的值: 1. `block`:将元素转换为...

    浅析Android中的visibility属性

    总结起来,`visibility`属性在Android开发中至关重要,因为它允许开发者动态地控制用户界面的可见性,从而实现交互效果或根据应用逻辑隐藏/显示组件。`visible`、`invisible`和`gone`三个状态提供了不同级别的隐藏,...

Global site tag (gtag.js) - Google Analytics