文档于 2023 年 4 月发布。
此版本中包含的增强功能和新功能:
Open Inventor 2023.1 包括Open Inventor 10.12.3 中可用的所有修复
版本2023.1.0
它是什么?
Open Inventor是一个面向对象的工具包,它将图形编程任务简化并抽象为一组易于使用的对象。这些对象的范围从以数据为中心的低级别对象(如球体、摄影机、材质、灯光和组)到用于网格可视化和体积渲染的高级对象。Open Inventor中的基础概念是“场景数据库”,它定义了应用程序中要使用的对象。使用Open Inventor时,程序员会创建、编辑这些对象,并将其组合到分层三维场景图(即数据库)中。各种基本的应用程序任务,如渲染、拾取、事件处理和文件读/写,都是数据库中所有对象的内置操作,因此调用起来很简单。
由于Open Inventor是面向对象的(用C++编写),它鼓励程序员通过编写新对象来扩展系统。Open Inventor用户创建了多种产品中未包含的新对象,例如:Bezier曲面、CSG对象、动画对象、特殊查看器等。
发布号版本用于根据日期定义产品版本。例如:例如2023.2.7,针对2023年OIV的第二个版本和第七个补丁版本。
翻译
Open Inventor对象内部的渲染机制采用OpenGL。在渲染过程中,每个对象都会自动对OpenGL进行正确、高效的调用。由于Open Inventor是专门为使用OpenGL进行图形渲染而设计的,因此经过高度优化,可以充分利用所有OpenGL加速器。其优化的场景图管道还允许开发人员在没有硬件加速的情况下瞄准PC和低端系统。
此外,Open Inventor渲染支持缓存方案,该方案可以自动生成非常快速的数据库渲染,而无需额外的遍历开销。
领料
拾取是计算机图形学中用于在三维场景中选择形状的术语。拾取可以选择与光线相交的形状(SoRayPickAction),也可以选择部分或完全位于屏幕区域内的形状,如“套索”(SoExtSelection)。光线拾取通常用于检测光标下当前的形状。Open Inventor拾取非常高效,可以自动使用缓存的边界框来避免遍历场景图的部分(剔除)。在某些情况下,Open Inventor会使用GPU来加速拾取。拾取将返回有关拾取对象的各种三维信息和详细信息。拾取的对象和相应信息的排序列表返回给程序员。拾取速度足够快,当鼠标在三维窗口中移动时,程序可以执行三维定位高亮显示。
交互、事件和设备
Inventor定义了用于编写三维交互的事件模型。此模型与窗口系统无关。它非常易于使用,并使3D直接操作编程成为可能。Open Inventor包括各种交互式三维对象和用于编写交互式对象的工具,例如:操纵器、拖动器和投影仪。灵活的事件模型鼓励程序员扩展系统以支持新的设备和事件类型。事件包括键盘事件、鼠标事件、触摸事件和手势,甚至包括虚拟/增强现实应用程序的跟踪输入设备事件。
文件格式
Open Inventor三维文件格式是三维数据的事实标准。该格式同时支持ASCII和压缩二进制格式。二进制格式与网络无关,因此可以跨机器边界导出。可以对数据文件进行压缩以进一步减小其大小。
SoEXTENDER/SoINTERNAL方法和类
SoEXTENDER公司。Open Inventor头文件中“SoEXTENDER public”下列出的成员函数和类可供希望扩展工具包的程序员使用。有关扩展器API的更多信息,请参阅什么是扩展器API。
SoINTERNAL公司。Open Inventor头文件中“SoINTERNAL public”下列出的成员函数和类不用于公共用途。它们可能会更改,恕不另行通知,不建议在Open Inventor应用程序中使用。
注意:使用Open Inventor帮助文件查看时,头文件中不会出现SoEXTENDER public、SoINTERNAL public和protected等字样。要查看头文件的确切内容,请直接查看头文件。
自 2023 年起,所有未来的 Open Inventor 10 版本都将使用版本发布的年份编号进行重命名。我们将继续每年发布 2 个版本,因此在 2023 年,第一个版本将命名为 2023.1,第二个版本将命名为 2023.2。每年,第一个版本计划于 3 月发布,第二个版本计划于 9 月发布。Open Inventor 版本的名称中将不再提及数字 10。
根据过去 3 年,每年这 2 个版本将是我们所说的次要版本,具有在产品生命周期中指定的兼容性策略。未来的主要版本也将使用年份编号命名。当一个版本被认为是主要版本时,我们将明确沟通。
除了那些每年两次的版本之外,我们还将在需要时继续发布由版本名称最后一位数字标识的维护版本。例如 Open Inventor 2023.1.2 定义了次要版本 2023.1 的第二个维护版本
旧版 Open Inventor 9 版本名称将保持不变。
使用单一分辨率渲染体积更容易,因为 Volume Viz 现在可以根据当前设置和硬件配置(例如,视点、纹理内存量)自动计算可能的最高分辨率。使用单一分辨率可防止在默认模式下可能出现的不良伪影。但是,最高可能分辨率可能低于卷某些部分的默认模式分辨率。
这个最高的计算分辨率考虑了感兴趣的区域和视图剔除选项。在达到统一分辨率之前,不同分辨率的瓦片会在不阻塞渲染区域的情况下进行渲染。
下图突出显示了单一分辨率的优势。在左图中,在具有不同分辨率的相邻图块之间的边界处可以看到一些不需要的伪影。使用新模式的正确图像中不存在此类伪影,因为在整个体积上使用了统一的分辨率。然而,与右图相比,左图中电池离相机最近的部分以更高的分辨率呈现。
可以使用类SoLDMResourceParameters激活新模式。字段fixedResolution必须为 TRUE,并且字段分辨率必须设置为 -1。
VolumeViz 片段着色器 API 的新函数VVizIsClipppedByROI()已添加到文件vvizClipping_frag.h中,以检查纹理坐标是否被应用于给定数据集的感兴趣区域裁剪。在混合大小或范围不同的多个数据集时,它主要有用。
MoMeshClipLine类允许计算和提取 3D 表面网格与单个平面之间的交集。自 2023.1 起,此类还允许计算和提取 3D 折线在 3D 表面网格上的任何投影。要投影的折线和投影方向是类MoMeshClipLine的 2 个新公共字段。
注意:MoMeshClipLine现在是MoMeshFenceSlice的补充,因为新字段MoMeshClipLine::polyline和MoMeshClipLine::direction也定义了栅栏。MoMeshClipLine对应于栅栏与 3D 表面网格的交集,而MoMeshFenceSlice对应于与 3D 体网格的交集。
MoMeshClipLine ::plane字段现已弃用,因为可以通过在新的MoMeshClipLine::polyline字段中设置单个点来定义单个平面。
更新了 2 个现有的 C++ 示例,以演示将任何 3D 多段线投影到 3D 表面网格上。
以下图像来自此示例,显示透明立方体顶部的 3D 红色折线,该折线被投影并提取到 3D 表面网格上。用于为表面网格的单元着色的属性也被提取并显示到投影的折线上。
从版本 2023.1 开始,Open Inventor 使用了两个额外的库。因此,当您使用 Open Inventor 重新分发应用程序时,必须将以下文件嵌入其运行时部分: