3D强大三维SDK Open Inventor 2023.2 Crack

Release notes Open Inventor 2023.2 RC

Minor version published in July 2023.

Enhancements and new features included in this version:


Open Inventor 2023.2 RC includes all fixes available in Open Inventor 2023.1


VolumeViz

Arbitrary tile size

So far a volume data is tiled to allow out-of-core and multiresolution rendering. Each tile had to have the same dimensions in x, y, and they had to be a power of 2, e.g. (128,128,128) or (512,512,512). As of 2023.2 it is possible to define the tile dimensions with 3 different values in x, y, and z.

The main benefit of this new feature is the ability to specify tile dimensions equal to the volume dimensions. In that case, the rendering is performed using only the full resolution of the volume without multiresolution. However, this option needs that the volume fits entirely in the available CPU and GPU memory (see the fields maxMainMemory and maxTexMemory in the class SoLDMResourceParameters). Otherwise, VolumeViz falls back in the classic behavior and creates tiles in order to support out of core rendering.

The tile dimensions are specified by the field SoLDMResourceParameters::tileDimension. If the API is not new in 2023.2 it makes it independant from the tile dimensions specified by the SoVolumeReader::getTileSize() method. It enables to load a dataset from tiled base format (such as LDM file format) with VolumeViz processing it with a different tiles dimension. Indeed, SoLDMResourceParameters::tileDimension can be set once the filename is set. That parameter can be push up to the volume dimensions.

Progress bar on slices

On previous versions, the loading progression of the data was only tracked when doing volume rendering. As of 2023.2 version, it is also possible to track data loading progression with slices (see SoOrthoSlice or SoObliqueSlice) or volume skin (see SoVolumeSkin).

See SoVolumeShape::setRenderProgress for detail. Note: the render progress is only taken into account by the classes SoOrthoSliceSoObliqueSlice and SoVolumeSkin even if their mother class SoVolumeShape contains other sub classes.

The example VolRend has been updated and a progress bar is attached to the loading progression of the volume rendering, the volume skin, and all ortho and oblique slices.

New platforms

Open Inventor on .NET6

Open Inventor is available on .NET6 as a preview built in addition to .NET framework 4.7/4.8.

Limitations:

  • As the .NET api of Open Inventor is mostly written in C++ and C++/CLI, some related limitations exist and described here. Thus, any application using some Open Inventor .NET6 assemblies must embed the ijwhost.dll that is delivered in the folder $OIVNETHOME/assemblies/arch-xxx.
  • the native dlls of Open Inventor must be manually copied in the destination folder of your application. As alternative, you can also add to your PATH environment variable $OIVNETHOME/assemblies/arch-xxx.
  • the examples using RemoteViz assembly do not yet work with this release candidate version.

Visual Studio 2022 support

A new package of Open Inventor C++ built with Visual Studio 2022 is available in the download pages as of 2023.2 version.

RemoteViz

Front-end & back-end rendering

Thanks to powerful javascript libraries for 2D vector drawing, it can be useful and convenient to mix rendering by using javascript rendering on the front-end with an Open Inventor rendering on the back-end. However it can be necessary to send information from back-end to front-end in order to synchronize both rendering. For instance when a simple javascript circle's center must follow a vertex of the 3D scene rendered by Open Inventor. Thus it is necessary to synchronize front-end and back-end when a simple zoom or pan of the 3D scene leads to a new position of the 3D vertex in the pixel space of the rendering area.

Such type of synchronization can be done by using the following new methods available as of 2023.2 version:

A new example highlights how to synchronize a javascript cirle with the top of a cone.

  • C++: $OIVHOME/examples/source/RemoteViz/FrontBackSync
  • .NET: $OIVNETHOME/examples/source/RemoteViz/FrontBackSync
  • Java: $OIVJHOME/examples/remoteviz/frontbacksync

MeshVizXLM

Color mapping improved in MeshViz XLM

When rendering a structured mesh having PER_NODE data binding, the interpolations performed by the GPU can lead to display some pixels whose color does not belong to the chosen color map. This new version removes this artifact and all pixels used to render the mesh have only colors that belong to the color map. This new correct behaviour may generate significant change in the rendering compared to previous version. That can be noticed when a large number of pixels are used by the render area to represent a cell, for instance when zooming on a single cell that have a large data gradient on its nodes.

The following images show the rendering of a 3D structured mesh where all mesh nodes in its left part have value 0, and all the mesh nodes in its right part have value 100. The color map used is a blue-white-red from 0 to 100. All hexahedron cells in the middle of the mesh have 4 nodes with value 0, and 4 nodes with value 100. Those cells are rendered with unexpected purple pixels before this new version.

Core

Minor API changes

  • In C# API:
    • The method SoVRLdmFileBorderReader.IsThreadSafe() is removed and replaced by the IsThreadSafe property inherited from SoVolumeReader.
    • The method SoAction.EnableElements() is obsolete : Use the EnabledElements property instead.
    • Some methods of the SoVolumeReader class are now deprecated:
      • The method GetBorderFlag() is now obsolete in the class SoVolumeReader. It is only kept in the class SoVRLdmFileBorderReader that is used to read old file format that contains borderFlag.
      • The method GetMinMax(Int32,Int32) is now obsolete and GetMinMax(Int64,Int64) must be used instead.
      • The method SetUserData(Object) is now obsolete and the property UserData must be used instead.
      • The method GetHistogram(Queue) is now obsolete and GetHistogram(IList<long>) must be used instead.
  • In C++ API:
  • In C++ API and Java API:
    • The class SbXfBox3f have 2 new methods computeMaxDistance2() and getClosestPoint().
    • The class SbMatrix3 have 2 new methods det() and inverse().

Reference manual update

The C++ reference manual provided in $OIVHOME/doc/ReferenceManual in the Windows package has change and has a new look and user interface thanks to the latest Doxygen version. The CHM file provided in previous versions has been replaced by a folder containing a list of HTML files. Open the file $OIVHOME/doc/ReferenceManual.html in any browser to see the main page of the reference manual. The following changes can be noticed in the new manual:

  • a new search engine.
  • a different look and style.
  • the document of each class provides a new "list of all members" including all inherited members.
  • a new list of the fields and methods per parent class.

Life cycle events

Dropped platforms

As of Open Inventor 2023.2 the following platforms or devices are no longer supported:

  • AMD GPUs
  • Ubuntu18.04

ImageViz becomes deprecated

ImageViz extension is deprecated as of Open Inventor 2023.2 . ImageViz is still supported and there is no impact when running an application using ImageViz. However warnings are raised when compiling source code that uses a class or a function of ImageViz. The examples using ImageViz have been removed but can be retreived from previous versions.

ImageViz is replaced by the new ImageDev toolkit which provides the same features with the added benefit of a simplier API. More details are available here: developer.imageviz.com and imagedev-software-development-toolkit

Misc API and feature depreciation

The support of the following file format becomes deprecated.

  • VolumeViz JP3D compression
  • PNM (Portable Any Map)
  • PGX (JPEG 2000 Verification Model)
  • RAS (Raster Graphic by SunOS)

Even if the corresponding API are not yet deprecated in this release candidate version, that will be effective in final release Open Inventor 2023.2. We plan to fully remove the support of those file formats and the corresponding API in version 2024.1.

Open Inventor 是一个面向对象的工具包,它简化并抽象了将图形编程编写为一组易于使用的对象的任务。这些对象的范围从以数据为中心的低级对象(例如球体、相机、材质、灯光和组)到用于网格可视化和体积渲染的高级对象。Open Inventor 中的基础概念是“场景数据库”,它定义了应用程序中要使用的对象。使用 Open Inventor 时,程序员可以创建、编辑这些对象并将其组合成分层 3D 场景图(即数据库)。渲染、拾取、事件处理和文件读/写等各种基本应用程序任务都是数据库中所有对象的内置操作,因此调用起来很简单。

由于 Open Inventor 是面向对象的(用 C++ 编写),因此它鼓励程序员通过编写新对象来扩展系统。Open Inventor 用户创建了多种未包含在产品中的新对象,例如:Bezier 曲面、CSG 对象、动画对象、特殊查看器等等。

版本号版本用于根据日期定义产品版本。例如:例如2023.2.7为2023年OIV的第二个版本和第7个补丁版本。

Rendering

Open Inventor 对象内部的渲染机制采用 OpenGL。在渲染过程中,每个对象都会自动对 OpenGL 进行正确、高效的调用。由于 Open Inventor 是专门为使用 OpenGL 进行图形渲染而设计的,因此它经过高度优化以利用所有 OpenGL 加速器。其优化的场景图管道还允许开发人员在没有硬件加速的情况下瞄准 PC 和低端系统。

此外,Open Inventor 渲染支持缓存方案,该方案可以自动生成非常快速的数据库渲染,而无需额外的遍历开销。

Picking

拾取是计算机图形学术语,用于在 3D 场景中选择形状。拾取可以选择由射线相交的形状(SoRayPickAction)或部分或完全位于屏幕区域内的形状,如“套索”(SoExtSelection))。光线拾取通常用于检测当前光标下方的形状。Open Inventor 拾取非常高效,并自动使用缓存的边界框来避免遍历场景图的部分(剔除)。在某些情况下,Open Inventor 使用 GPU 来加速拣选。拾取会返回各种 3D 信息以及有关拾取对象的详细信息。拾取的对象的排序列表和相应的信息将返回给程序员。拾取速度足够快,当鼠标在 3D 窗口上移动时,程序可以执行 3D 定位突出显示。

Interaction, Events, and Devices

Inventor 定义了用于编写 3D 交互的事件模型。该模型与窗口系统无关。它非常易于使用,使 3D 直接操作编程成为可能。Open Inventor 包括各种交互式 3D 对象和用于编写交互式对象的工具,例如:操纵器、拖动器和投影仪。灵活的事件模型鼓励程序员扩展系统以支持新的设备和事件类型。事件包括键盘事件、鼠标事件、触摸事件和手势,甚至虚拟/增强现实应用程序的跟踪输入设备事件。

File Formats

Open Inventor 3D 文件格式是 3D 数据事实上的标准。该格式支持 ASCII 和紧凑二进制格式。二进制格式是网络中立的,因此可以跨机器边界导出。可以压缩数据文件以进一步减小其大小。

SoEXTENDER/SoINTERNAL Methods and Classes

  • 所以扩展器。Open Inventor 头文件中“SoEXTENDER public”下列出的成员函数和类可供希望扩展工具包的程序员使用。有关扩展器 API 的更多信息,请参阅什么是扩展器 API?
  • 所以内部。Open Inventor 头文件中“SoINTERNAL public”下列出的成员函数和类不适合公共使用。它们如有更改,恕不另行通知,并且不建议在 Open Inventor 应用程序中使用。

  • 注意:使用 Open Inventor 帮助文件查看时,单词SoEXTENDER publicSoINTERNAL publicprotected不会出现在头文件中。要查看头文件的确切内容,请直接查看头文件。

Open Inventor Examples--例子参考

猜你喜欢

转载自blog.csdn.net/john_dwh/article/details/132571649