ガイドブック
FactVerse Omniverse Adaptor 利用ガイド
概述
FactVerse Omniverse Adaptorは、FactVerseプラットフォームとNVIDIA Omniverseを接続するための拡張プラグインです。本プラグインを使用することで、ユーザーはデジタルツインシーンをOmniverse環境へ迅速に取り込み、DFS(Data Fusion Services)と連携させて、USDシーン内での動的シミュレーションおよび連動制御を実現できます。
コア機能
本プラグインは Omniverseアプリケーションにおいて、以下の主要な機能を提供します:
- 高速インポート:FactVerse プラットフォームから USD モデルと設定を読み込み
- リアルタイム駆動:DFS データを接続し、シーンの動的な変化を制御;
- マルチアプリ互換:USD Composer、Viewer、Explorerなどのアプリケーションに統合して利用可能です。
- 柔軟なデプロイ:ローカル実行またはカスタムアプリへの組み込みに対応;
- Web 可視化:WebRTC および Web フロントエンドと連携し、ブラウザ上でのリモート操作と閲覧を実現。
利用シーンの例
本プラグインは、以下の代表的な利用シーンに適しています:
シナリオ名 | 説明 |
シーンのインポートと開発統合 | FactVerse で構築したデジタルツインシーンを Omniverse アプリ(USD Composer や Isaac Sim など)に迅速にインポートし、Omniverse 内でのさらなる開発や編集を可能にします。 |
リアルタイムデータの可視化 | DFS プラットフォームからのリアルタイムまたはシミュレーションデータを接続し、シーン内のオブジェクト属性(位置、回転、状態など)を動的に変化させ、データと 3D シーンの連動表示を実現します。 |
シミュレーションロジックの実行 | プラグイン内蔵のビヘイビアツリーエンジンを使用して、シーン内のロジック(機器状態の変化や自動化プロセスなど)をローカルで実行し、その結果を Omniverse にリアルタイムでレンダリングします。機能検証やシーンシミュレーションに最適です。 |
リモート可視化表示 | プラグインを Streaming アプリに統合することで、WebRTC を活用して Omniverse のレンダリング画面をブラウザへストリーミングし、遠隔地からの閲覧や操作を可能にします。 |
プラグイン読み込み方法の説明
読み込み方法 | 適用シーン | 操作説明 |
Import Extension | ✅ 接続確認および機能検証に適用 | メニュー「Window > Extensions > Options > Import Extension」から .zip プラグインパッケージをインポートし、プラットフォームとの接続状況やデータ駆動の成否を迅速に確認可能 |
Extension Search Path | ✅コード開発およびデバッグ段階に適用 | USD Composer または Kit アプリにて Extension Search Path を source/extensions/ に設定することで、Python プラグインコードのホットリロードやリアルタイムのログ出力が可能 |
依存関係として構成 | ✅ プロジェクト初期化段階に適用 | .kit アプリ構成ファイルおよび extension.toml 内に依存関係を追記することで、ビルド時にプラグインモジュールを一括読み込み可能 |
システム環境要件
開発またはテスト環境においては、以下のコンポーネントを同一の高性能ワークステーション上にインストールすることを推奨します。これにより、通信経路の安定性と描画性能の確保が可能となります。
開発ツールおよび依存項目
ツール | 説明 |
Git | kit-app-template のテンプレートおよびプラグインコードをダウンロードするために使用 |
Omniverse Launcher | USD Composer、Nucleus などの Omniverse コアサービスをインストール |
VS Code(推奨) | プラグインの開発およびデバッグ環境。Omniverse 公式の VS Code 拡張機能を使用して Kit 開発をサポート |
Node.js + npm(任意) | Web Client(リモートインタラクションや WebRTC 可視化)を構築する |
推奨ハードウェア構成(単体構成)
コンポーネント種別 | 推奨構成 |
GPU | NVIDIA GeForce RTX 4090 D (VRAM 24G) |
メモリ | 32GB (2400 MHz) |
CPU | Intel 第12世代 Core i7-12700KF(12コア) |
ストレージ | SSD 512GB以上 |
準備作業
FactVerse Omniverse Adaptor プラグインを正式に接続する前に、以下の準備手順を完了してください。環境設定が正しく整い、必要なリソースが使用可能であり、データ接続が確立されていることを確認します。
テストプラットフォームおよびアカウント情報の取得
プラグインのテストおよびシーン構築を行うには、DataMesh が提供する FactVerse プラットフォーム と DFS プラットフォーム を使用する必要があります。
プラットフォーム情報
プラットフォーム名 | アクセスURL |
FactVerse プラットフォーム | |
DFS プラットフォーム |
アカウント申請とリソース取得
- 下記のメールアドレスにご連絡ください:lab@datamesh.com
試用アカウントおよびテスト用素材をご申請いただけます。また、関連するハンズオンラボからテストリソースをダウンロードすることも可能です。 - ご注意: 上記プラットフォームは、提供されたテスト用素材にのみ対応しています。自社保有のデータを使用してのテストや、社内テスト環境(オンプレミス)の構築をご希望の場合は、データの安全性とコンプライアンス確保のため、事前に lab@datamesh.com 宛にご相談ください。
プラグインツールパッケージのダウンロード
必要なプラグインツールパッケージをダウンロード・解凍してください:FactVerse-Omniverse-Adaptor-v1.0.1.zip
パッケージ内容:
ファイル名 | 略称 | 機能説明 |
datamesh.factverse_ovadaptor_extension-1.0.1.zip | Adaptor プラグイン | FactVerse に接続し、USD シーンを駆動して Nucleus へ書き込み |
datamesh.factverse_viewer_messaging_extension-0.1.1.zip | Messaging プラグイン | Web リクエストを処理し、シーンの読み込みと状態フィードバックを制御 |
USDConverter_v0.1.0_20250526.zip | USDコンバーター | 一般的な 3D フォーマット(FBX など)を USD モデルファイルに変換 |
デジタルツインシーンの構築
ツインモデルのテンプレートおよびデジタルツインシーンを構築する前に、以下の設計ツールをインストールしてください:
- DataMesh Importer:Dモデルファイルのインポートおよび前処理に使用
- FactVerse Designer:テンプレートの作成、シーン構築、およびインタラクションロジックの設定に使用
操作手順
- モデルの準備:
a) DataMesh Importerでモデルを開く。
b) 実際の動作要件に基づき、モデル階層のノードを選択してデータ駆動に利用。
c) モデルを自身のFactVerse リソースライブラリにアップロードする。
- テンプレートの作成と設定:
a) FactVerse Designerで新しいテンプレートを作成します。
b) モデルをインポートし、プロパティを追加します。例:回転角度など。
c) データバインディングエリアにて、モデル階層と属性を関連付け、テンプレートとして保存します。
- デジタルツインシーンの構築:
a) 新しいツインシーンを作成し、既存のテンプレートに基づいてツインモデルを一括生成します。
b) ツインモデルは実際の設備を表します。後続のデータバインディングを容易にするため、明確な命名を行ってください。
c) ツインモデルの配置とレイアウトを調整し、基本シーンの構築を完了して保存します。
USD モデルリソースのアップロード
3D モデルを .usdz 形式に変換し、プラットフォームのリソースライブラリへアップロードします。
操作手順
- モデル形式の変換:DataMesh が提供する変換ツールを使用して、一般的な3Dフォーマット(例:FBX、OBJ)を .usdz ファイルに変換します。
a) プラグインツールパッケージ内の USDConverter_v0.1.0_20250526.zip を解凍します。
b) USDConverter.exeを実行します
c) 元のモデルを開く
d) モデルを開いた後、【Export USD】をクリックして .usdz 形式でエクスポートします。
- .usdz ファイルのアップロード
a) FactVerse プラットフォームにログインします。
b) デジタルアセットのリソースライブラリで、該当モデルを選択し、リソースの詳細ページにアクセスします。
c)【Omniverse】をクリックし、対応する .usdz 形式のリソースファイルをアップロードします。
ータの接続
DFS(Data Fusion Service) プラットフォームを通じて機器データを接続し、デジタルツインシーンにおけるデータ駆動構成を完了させます。
操作手順
- シミュレーションデータソースの作成:
a) DFS プラットフォームにログインし、【データソース管理】>【シミュレーションデータソース】にアクセスし、新しいタスクを作成してデータをアップロードします。
b) アップロードしたデータに対応するデバイスをバインドし、データのループ頻度を設定します。
- デジタルツインシーンのインポート:DFS プラットフォームで【ツインモデル連携】>【シーン構成】ページにアクセスし、【インポート】をクリックして、データをバインドする対象のツインシーンを選択します。
インポート完了後、シーンの詳細ページにてツインモデルの一覧を確認できます。
- ツインモデルへのデータバインド:
a)【ツインモデル連携】>【デバイスバインド】ページに進み、対象のデバイス(例:Robot)を探します。該当デバイスの詳細ボタンをクリックして、デバイスの詳細ページを開きます。
b) デバイス設定セクションにて、【ツインモデル設定】ボタンをクリックし、ツインモデル設定ウィンドウを開いて、対応するツインモデルをバインドします。
c) 属性セクションで、デバイスの属性にあるバインドアイコンをクリックし、デバイス属性とツインモデルの属性をそれぞれバインドします。
- シーンの検証:FactVerse Designer に戻り、データがバインドされたツインシーンを開き、再生ボタンをクリックしてツインモデルの動作効果を確認します。
詳細は《DataMesh FactVerse DFSユーザーガイド》を参照してください。
Omniverse Nucleusのインストール
Adaptor プラグインを正式に使用する前に、Omniverse Nucleus をインストールおよび設定する必要があります。このコンポーネントは、プラグインの動作において以下の2つの重要な役割を担います:
- 役割①:USDシーンリソースサーバー
プラグインによって生成された USD シーンファイルを保存・同期し、Omniverse アプリケーションに読み込み・描画を提供します。
- 役割②:ローカル API インターフェースの提供
Adaptor プラグインの実行時に、ローカル Nucleus インターフェースを呼び出してアップロードやリソースクエリなどの操作を行います。
配置方式説明
配置方式 | 配置内容の説明 |
プラグインとリソースサーバーを同一マシンに配置 | Nucleus のインスタンスを1つのみインストールすれば十分です。このインスタンスはリソースサーバーとして機能すると同時に、APIインターフェースも提供します。プラグイン設定における Nucleus IP は localhost と設定可能です |
プラグインとリソースサーバーを異なるマシンに配置 | 以下の追加設定が必要です: |
注意: プラグインが動作するマシンから、リソースサーバーへ正常にアクセスできる必要があります。アクセス不能な場合、シーンの読み込みおよびデータ駆動が失敗します。
インストール手順
- Omniverse Launcherを起動し、「Nucleus」タブを開きます。
- Add Local Nucleus Serviceをクリックします。
- 管理者アカウントの設定
Nucleus サーバーアドレスの設定
設定手順
- http://localhost:3080/ にアクセスして、Nucleus サーバーの管理ページを開きます。
- Appsページで、【Enable sharing】 をクリックします。
- Nucleus を起動した後、サーバー一覧画面で【Add Server】をクリックし、Nucleus サーバーのアドレス(=ローカルマシンのIP)を追加します。
- 設定完了後、サーバー一覧で追加済みのアドレスが表示されていることを確認します。
接続テストとデータ駆動の検証
Omniverse の公式アプリケーション(例:USD Composer や Isaac Sim)に Adaptor プラグイン をインポートすることで、FactVerse プラットフォームとの接続確認、DFS データによる駆動効果の検証、および シーンの正確な読み込み を行うことができます。
適用シーン:
- FactVerse プラットフォームへの接続可否
- DFS データによる駆動が正常に行われるか(例:ロボットアームの動作)
- 今後のリモートデプロイやカスタムアプリ開発に向けた可視化・動作確認の支援
プラグインのインポート
ここでは USD Composer (USD Composer 2023.2.3)を例に、プラグインのインポート手順を説明します:
- USD Composer をインストールします。
- プラグインのインポート手順:
a) USD Composer を起動し、メニューから Window > Extensions を開きます。
b) 右上の Options > Import Extension をクリックします。
c) datamesh.factverse_ovadaptor_extension-1.0.1.zip ファイルを選択し、【Import】をクリックして読み込みます。
d) Extension の検索欄に DataMesh と入力し、「FACTVERSE OMNIVERSE ADAPTOR」を見つけて、有効化をクリックします。
接続確認とデータ駆動の検証
注意事項:シーンのインポートおよびデータ統合を行う際は、編集モード にあることを確認してください。
- プラグインを有効化すると、上部メニューに新たに 【DataMesh】 タブが追加されます。【DataMesh】 > 【FactVerse Omniverse Adaptor】 をクリックして、接続ウィンドウを開きます。
- 接続ウィンドウで、以下の情報を入力します:
- Nucleus IP:プラグインがアクセスするリソースサーバーのアドレスです。プラグインとリソースサーバーが同一マシン上にある場合は localhost を指定します。リモートに配置する場合は、例として192.168.1.1 のようなIPアドレスを記入してください。
- FactVerse Server URL:FactVerse プラットフォームのアクセスURL
- Account ID:FactVerseのアカウント
- Password:ログインパスワード
- Scene ID:ツインシーンの ID
Scene ID の取得方法:
- FactVerse プラットフォームで、対象のツインシーンの詳細ページを開きます。
- URL の中から、以下のような形式の ID をコピーします:
https://dtcs-local-demo.datamesh.com/…/6fa55ac9f44f4523ae0c166e299176d9/…
この6fa55ac9f44f4523ae0c166e299176d9 が Scene IDです。
- 【CONNECT】 ボタンをクリックすると、プラグインが自動的にシーンを読み込み、データバインドを開始します。
- 接続が完了したら、【OPEN STAGE AND JOIN SESSION】をクリックします。
以上の手順が完了すると、USD Composer 上で FactVerse のリアルタイムデータによって駆動されるツインシーンの挙動を確認できます。これにより、今後のリモート配信や検証、デバッグ作業の基盤として活用可能です。
- テストが完了したら、【STOP】ボタンをクリックして Adaptor の動作を停止します。
プラグインの統合とカスタム開発
本章では、Omniverse Kit フレームワークをベースにしたカスタム USD Viewer Streaming アプリケーション の開発方法と、その中に Adaptor プラグイン を統合する方法を紹介します。この統合により、ユーザーはアプリケーション内で以下の主要機能を実現できます:
- FactVerse プラットフォームからツインシーンを読み込み
- DFS(リアルタイムまたはシミュレーション)データをバインドしてシーンを動的に駆動
- USD Viewer Streaming アプリ上でシーンを描画
- Web ブラウザを通じてリモートアクセスとインタラクティブ制御を実現
この方式は、企業向けの本番環境デプロイ、リモート可視化表示、プロジェクト納品、複数ユーザーとのインタラクションなどに適しており、ローカルでの開発検証から本格的な商用環境への移行における主要な統合方法のひとつです。
データフローの説明:
- Adaptor プラグイン は FactVerse プラットフォームから USD モデルおよびツインシーン構成情報をダウンロードし、その内容とデータ変更をローカルの Nucleus に書き込みます。
- DFS はデバイスまたはセンサーからのデータを Adaptor プラグイン に継続的に送信します。
- Adaptor プラグイン は、マッピング関係に基づいて、位置・角度・色などの USD 属性 にデータを書き込み、シーンを動的に駆動します。
- USD Viewer は Nucleus から現在のシーンを読み込み描画し、Adaptor によって書き込まれた変更をリアルタイムで反映します。
- Messaging プラグイン は Web リクエスト に応答し、USD Viewer の API を通じて対象シーンを読み込み、シーン内のイベントや状態変化を監視します。
- Web Client は読み込み・操作コマンドを Messaging プラグイン に送信し、応答情報を受け取ってリモートでのシーン制御と状態同期を実現します。
- Streaming モジュール は USD Viewer の描画画面をキャプチャし、映像ストリームとしてエンコード、WebRTC を通じて Web Client に送信し、ブラウザ上で 3D シーンの可視化を実現します。
USD Viewer Streaming アプリの作成
- 初アプリプロジェクトの初期化:
git clone https://github.com/NVIDIA-Omniverse/kit-app-template cd kit-app-template .\repo.bat template new |
- プロンプトに従って以下のように入力:
- タイプ:Application
- ベーステンプレート:[omni_usd_viewer]
- アプリ名:datamesh.my_usd_viewer
- バージョン番号:0.1.0
- 拡張機能の設定:
初期化プロセス中に、以下の2つのコア拡張機能を構成する必要があります:
a) USD Viewer Messaging Extension
このプラグインは、Web クライアントと Viewer アプリケーション間のコマンド通信および状態フィードバックを処理します。
項目 | 設定例 |
ファイル名 | datamesh.factverse_viewer_messaging_extenslon |
名称 | My USD Viewer Messaging Extension |
バージョン番号 | 0.1.1 |
b) USD Viewer Setup Extension
このプラグインは、アプリケーション内の設定、通信、レイアウト、およびその他の構成処理を担当します。
項目 | 設定例 |
ファイル名 | datamesh.my_usd_viewer.setup |
名称 | My USD Viewer Setup Extension |
バージョン番号 | 0.1.0 |
- ストリーミング転送の有効化
USD Viewer Streaming アプリケーションの初期化時に、Streaming 構成ステップにて次のモジュールを選択してください:
- [omni_default_streaming]: Omniverse Kit App Streaming (Default)
このモジュールは、アプリに WebRTC ストリーミング転送機能 を自動的に統合します。USD Viewer の描画画面を Web クライアントにリアルタイム配信し、リモートでの可視化とインタラクティブ制御を可能にします。
- プロジェクトのビルド
.\repo.bat build |
Adaptor プラグインおよび Messaging プラグインの統合
- プラグインを extensions ディレクトリに解凍:以下の2つの zip ファイルを、source/extensions/ ディレクトリに解凍してください。
- datamesh.factverse_ovadaptor_extension-1.0.1.zip
- datamesh.factverse_viewer_messaging_extenslon-0.1.1.zip
- 依存関係の設定:
a) datamesh.usd_viewer.setup/config/extension.toml を編集し、Messaging プラグインの依存関係を追加します。
[dependencies] “omni.kit.usd.layers” = {} “omni.activity.ui” = {order=1000} # Progress activity messages “omni.kit.quicklayout” = {} “omni.kit.viewport.utility” = {} “datamesh.factverse_viewer_messaging_extension” = {} # Required messaging extension |
b) datamesh.factverse_viewer_messaging_extension/config/extension.toml を編集し、Adaptor プラグインの依存関係を追加します。
[dependencies] “datamesh.factverse_ovadaptor_extension” = {} # Required Adaptor extension |
c) source/apps/datamesh.my_usd_viewer_streaming.kit に Live Session 機能の依存関係を追加します。
[dependencies] … “omni.kit.collaboration.channel_manager” = {} “omni.kit.collaboration.presence_layer” = {} “omni.kit.collaboration.selection_outline” = {} “omni.kit.collaboration.telemetry” = {} “omni.kit.widget.live” = {} “omni.kit.livestream.webrtc” = {} # Livestream extension |
- 接続パラメータの設定:datamesh.factverse_ovadaptor_extension\config\extension.tomlを編集し、以下の接続パラメータを設定します。
接続パラメータの説明
パラメータ | 説明 |
id | FactVerse プラットフォームのアカウント(例:admin@datamesh.com) |
pass | ログインパスワード |
sceneId | 接続対象のツインシーン ID。プラットフォームの URL から取得可能(詳細は4.2節参照) |
ovserver | Nucleus が設置されているサーバーの IP アドレス: • Nucleus リソースサーバーがプラグインと同一マシンの場合 → localhost を使用 • 他マシンにある場合 → 実際の IP アドレスを記入し、接続可能であることを確認 • Nucleus 側では必ず【Add Server】機能を使ってこの IP を追加登録すること(詳細は 3.6.2 参照) |
DCSDomain | DFS プラットフォームのアドレス、例:https://dfs-local-demo.datamesh.com |
ui_visible | UIプラグイン UI の表示有無 • true :プラグイン UI を表示(通常の操作用) • false :プラグインを非表示モードで実行(カスタムアプリでの自動読み込み用) |
- シンボリックリンクの作成(任意):Windows 環境におけるパス長制限を回避するため、ハードリンク方式でパスを短縮することが可能です。
mklink /J “パス/_build/…/exts/datamesh.factverse_ovadaptor_extension” “パス/source/extensions/datamesh.factverse_ovadaptor_extension” mklink /J “パス/_build/…/exts/datamesh.factverse_viewer_messaging_extension” “パス/source/extensions/datamesh.factverse_viewer_messaging_extension” |
開発とデバッグ
- USD Composer にて、Extension Search Path に Adaptor プラグインのソースコードパスを追加します、例:d:/temp/kit-app-template/source/extensions。
- プラグインを有効化
- VSCode を使用してプラグインのソースコードを開き、デバッグ開発に入ります。
- 管理者権限で USD Viewer Streaming アプリを起動する
.\repo.bat launch datamesh.my_usd_viewer_streaming.kit |
開発およびデバッグが正常に完了したら、以下のコマンドを実行してアプリケーションをパッケージ化・公開します:
.\repo.bat package |
Web フロントエンドのデプロイ
プラグインを統合して USD Viewer アプリ を起動した後、ブラウザを通じてリモートでシーンにアクセス・操作したい場合は、対応する Web フロントエンド をデプロイします。このフロントエンドは Vite + React のようなモダンなフレームワークに基づいており、WebRTC によって USD の描画画面をリアルタイムで表示し、プラグインと通信してデータ制御を行うことが可能です。
参考例:Omniverse Configurator Sample Application(提供元:DataMesh)。
1. シーンURLの変更:
フロントエンドプロジェクトの以下のファイルを開きます:
..\configurator-viewer-sample\src\Window.tsx |
_onClickOpenNucleusUSD() および _onClickJoinSession() メソッド内にあるURLを、表示させたいターゲットのUSDシーンの実際のパスに置き換えてください。
2. フロントエンドアプリの起動
npm install npm run dev |
デフォルトのアクセス先:http://localhost:5173、ブラウザで開くと Web 操作インターフェースに入れます。
3. Adaptor プラグインの起動
画面上の【Start Adaptor】ボタンをクリックすると、データ駆動プラグインがバックグラウンドで起動します。
4.プラグインの状態確認
【Get Adaptor Status】ボタンをクリックし、Adaptor が正常に起動しているかを確認します。
5. USD シーンの読み込み
Adaptor が正常に動作していることを確認した後、【Open USD】および【Join Session】ボタンをクリックしてシーンを読み込みます。USD Viewer は Nucleus からシーンを取得して描画し、データ駆動が自動的に有効になります。
読み込みが完了すると、画面上に USD Viewer の描画結果が表示され、シーンとのインタラクティブ操作が可能になります。