Visual Studio 2022 用の Open Inventor 2023.2.2 C++

Open Inventor とは何ですか?
Inventor メンターは、グラフィックス プログラマやアプリケーション開発者にオブジェクト指向 3D ツールキットである Open Inventor を紹介します。 Open Inventor は、インタラクティブな 3D グラフィックス アプリケーションの作成に使用されるオブジェクトとメソッドのライブラリです。 Inventor は C++ で書かれていますが、C バインディングも含まれています。

リリース ノート Open Inventor 2023.2

マイナー バージョンは 2023 年 9 月に公開されます。

このバージョンに含まれる拡張機能と新機能:


Open Inventor 2023.2 には、 Open Inventor 2023.1 で利用可能なすべての修正が含まれています


ボリュームビズ

任意のタイルサイズ

ボリューム データは、コア外および多重解像度レンダリング用のタイルのセットとして表されます。以前のリリースでは、各タイルの x と y の寸法が同じである必要があり、(128,128,128) または (512,512,8) のように 2 のべき乗である必要がありました。 2023.2 以降、タイルの寸法は x、y、z の 3 つの異なる任意の値にすることができます。

この新機能の主な利点は、ボリュームの寸法と等しいタイルの寸法を指定できることです。その場合、レンダリングは単一の解像度、つまり多重解像度のないボリュームの解像度のみを使用して実行されます。ただし、このオプションでは、ボリューム データが使用可能な CPU および GPU メモリに完全に収まる必要があります ( SoLDMResourceParameters クラスの maxMainMemory フィールドと maxTexMemory フィールドを参照)。それ以外の場合、 VolumeViz は従来の動作に戻り、コア外のレンダリングをサポートするタイルを作成します。

タイルの寸法は、 SoLDMResourceParameters::tileDimension フィールドで指定します。 API が 2023.2 で新しくない場合は、 SoVolumeReader::getTileSize() メソッドで指定されたタイルのサイズから独立します。これにより、元の形式とは異なるタイル サイズのタイル データセット (LDM ファイル形式など) を読み込むことができ、読み込み時間を短縮できます。ファイル名を設定したら、 SoLDMResourceParameters::tileDimension を設定する必要があります。このパラメータはボリュームの寸法まで押し上げることができます。

スライスの進行状況バー

以前のバージョンでは、データの読み込みの進行状況はボリューム レンダリングの実行時にのみ追跡されていました。 2023.2 バージョンでは、スライスを使用してデータ読み込みの進行状況を追跡することもできます ( SoOrthoSlice または SoObliqueSlice を参照)。SoVolumeSkin) またはボリューム スキン ( 

詳細については、 SoVolumeShape::setRenderProgress をご覧ください。注: レンダリングの進行状況は、 SoOrthoSlice、 SoObliqueSliceSo VolumeSkin は、その基本クラス SoVolumeShape に他のサブクラスが含まれている場合でも同様です。 .

VolRend という名前のサンプルが更新され、ボリューム レンダリング、ボリューム スキン、すべてのオルソ スライスとオブリーク スライスの読み込みの進行状況に進行状況バーが追加されました。

新しいプラットフォーム

サポートされているプラ​​ットフォームのリスト

2022 年まで、システム要件とサポートされているプラ​​ットフォームは 開発者ゾーン でのみ指定されており、最新バージョンの Open Inventor 用にのみ更新されていました。 。 Open Inventor 2023.2 以降、サポート/非推奨/廃止されたプラットフォームのリストとその要件は、 こちらのリファレンス マニュアルの一部となっています。

さらに、システム要件ドキュメントには、Open Inventor の以前のバージョンの要件が含まれるようになりました。

.NET6 で Inventor を開く

Open Inventor は、.NET Framework 4.7/4.8 に加えてビルドされたプレビューとして .NET6 で利用できます。

制限事項:

  • Open Inventor の .NET API は主に C++ および C++/CLI で記述されているため、関連する制限がいくつか存在し、 ここで説明されています。したがって、一部の Open Inventor .NET6 アセンブリを使用するアプリケーションは、$OIVNETHOME/assemblies/arch-xxx フォルダに提供される ijwhost.dll を埋め込む必要があります。
  • Open Inventor のネイティブ DLL は、アプリケーションの宛先フォルダに手動でコピーする必要があります。代わりに、PATH 環境変数 $OIVNETHOME/assemblies/arch-xxx に追加することもできます。
  •  RemoteViz アセンブリを使用した例は、このバージョンではまだ動作しません。

Visual Studio 2022のサポート

Visual Studio 2022 で構築された Open Inventor C++ の新しいパッケージは、2023.2 バージョンの時点でダウンロード ページから入手できます。

リモートビズ

フロントエンドとフロントエンドバックエンド同期

2D ベクトル描画用の JavaScript ライブラリのおかげで、フロントエンドでの JavaScript レンダリングとバックエンドでの Open Inventor レンダリングを組み合わせると便利です。ただし、両方のレンダリングを同期するために、バックエンドからフロントエンドに情報を送信することが必要になる場合があります。たとえば、JavaScript の円の中心が Open Inventor によってレンダリングされた 3D シーンの頂点を追跡する必要がある場合です。したがって、3D シーンの単純なズームまたはパンによってレンダリング領域のピクセル空間内の 3D 頂点の新しい位置が得られる場合、フロントエンドとバックエンドを同期する必要があります。

このような種類の同期は、2023.2 バージョンで利用できる次の新しい方法を使用して実行できます。

新しい例では、JavaScript の円を円錐の上部と同期させる方法を示します。

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

MeshVizXLM

MeshViz XLM でのカラー マッピングの改善

PER_NODE データ バインディングを持つ構造化メッシュをレンダリングする場合、GPU によって実行されるデフォルトの補間により、選択したカラー マップに属さない色を持つピクセルが表示される可能性があります。この新しいバージョンでは、このアーティファクトが削除され、メッシュのレンダリングに使用されるすべてのピクセルには、カラー マップに属する色のみが含まれます。この新しい正しい動作により、以前のバージョンと比較してレンダリングに大幅な変更が生じる可能性があります。これは、セルを表すためにレンダリング領域で多数のピクセルが使用される場合、たとえばノード上に大きなデータ勾配がある単一のセルをズームする場合に気づくことがあります。

次のイメージは、3D 構造化メッシュのレンダリングを示しています。左側の部分のすべてのメッシュ ノードの値は 0、右側の部分のすべてのメッシュ ノードの値は 100 です。使用されるカラー マップは、0 から 0 までの青、白、赤です。 100。メッシュの中央にあるすべての六面体のセルには、値 0 のノードが 4 つ、値 100 のノードが 4 つあります。この新しいバージョンより前では、これらのセルは予期しない紫色のピクセルでレンダリングされます。

APIのマイナーな変更

  • C# API の場合:
    • SoAction.EnableElements() メソッドは廃止されました。代わりに EnabledElements プロパティを使用してください。
    •  So VolumeReader クラスの一部のメソッドは非推奨になりました。
      • メソッド GetBorderFlag() は、 SoVolumeReader クラスでは廃止されました。これは、borderFlag を含む古いファイル形式を読み取るために使用される SoVRLdmFileBorderReader クラス内にのみ保持されます。
      • GetMinMax(Int32,Int32) メソッドは現在廃止されており、代わりに GetMinMax(Int64,Int64) を使用する必要があります。
      • SetUserData(Object) メソッドは現在廃止されており、代わりにプロパティ UserData を使用する必要があります。
      • GetHistogram(Queue) メソッドは現在廃止されており、代わりに GetHistogram(IList<long>) を使用する必要があります。
  • C++ API および Java API の場合:
    • クラス SbXfBox3f には、computeMaxDistance2() と getClosestPoint() という 2 つの新しいメソッドがあります。
    • クラス SbMatrix3 には 2 つの新しいメソッド det() と inverse() があります。

リファレンスマニュアルの更新

Windows パッケージの $OIVHOME/doc/ReferenceManual で提供される C++ リファレンス マニュアルが変更され、最新の Doxygen< i=2> バージョン。以前のバージョンで提供されていた CHM ファイルは、HTML ファイルのリストを含むフォルダーに置き換えられました。任意のブラウザでファイル $OIVHOME/doc/ReferenceManual.html を開き、リファレンス マニュアルのメイン ページを表示します。新しいマニュアルでは次の変更点が確認できます。

  • 新しい検索エンジン。
  • 違う見た目とスタイル。
  • 各クラスのドキュメントには、新しい「すべてのメンバーのリスト」が提供されます。継承されたすべてのメンバーを含みます。
  • 親クラスごとのフィールドとメソッドの新しいリスト。

互換性に関する注意事項

次のメモでは、Open Inventor 2023.1 と比較してこのバージョンで行われた API の変更について説明します。

C++ API

SoVolumeReader::getSubSlice(const SbBox2i32&, int, void*)
このメソッドには、呼び出し時にエラー メッセージを出力するデフォルトの実装が追加されました。

C# API

メソッド SoVRLdmFileBorderReader.IsThreadSafe() は削除され、 SoVolumeReader から継承された IsThreadSafe プロパティに置き換えられます。

Java API

クラス com.openinventor.inventor.SbViewVolume
メソッド getProjectedBbox(com.openinventor.inventor.SbMatrix, com.openinventor.inventor.SbBox3f) は静的になりました

ライフサイクルイベント

ドロップされたプラットフォーム

Open Inventor 2023.2 以降、次のプラットフォームまたはデバイスはサポートされなくなりました。

  • AMD GPU
  • Ubuntu 18.04

ImageViz が非推奨になる

ImageViz 拡張機能は、Open Inventor 2023.2 以降非推奨になりました。 ImageViz は引き続きサポートされており、ImageViz を使用してアプリケーションを実行する場合には影響はありません。ただし、ImageViz のクラスまたは関数を使用するソース コードをコンパイルするときに警告が発生します。 ImageViz を使用したサンプルは削除されましたが、以前のバージョンから取得できます。

ImageViz は、同じ機能に、よりシンプルな API の利点を追加した新しい ImageDev ツールキットに置き換えられました。詳細については、 developer.imageviz.com および imagedev-software-development-toolkit をご覧ください。

その他の API と機能の非推奨

以下のファイル形式のサポートは廃止されます。

  • VolumeViz JP3D 圧縮
  • PNM (ポータブル エニー マップ)
  • PGX(JPEG2000検証モデル)
  • RAS (SunOS によるラスター グラフィック)

おすすめ

転載: blog.csdn.net/john_dwh/article/details/134986181