HTC VIVE

VRED は、HTC VIVE、VIVE Pro、VIVE Pro Eye、VIVE Focus シリーズ、VIVE Flow、VIVE Cosmos、VIVE Cosmos Elite、VIVE XR Elite シリーズをサポートしています。

Vive コントローラが検出されると、そのトラッキングされたポーズで手がレンダリングされます。「 VR 内の手 」を参照してください。Vive トラッカーが検出されると、そのトラッキングされたポーズで、トラッカーのシンプルかつ静的なジオメトリック表現がレンダリングされます。

VIVE VIVE Cosmo
番号付き VIVE VIVE Cosmo の内側のボタン

1[VR]メニュー([メニュー]ボタン)

2 テレポート(トラックパッド)

3 ツールチップ(グリップ)

4 ポインタ(トリガ)

Python スクリプトを使用してコントローラおよびトラッカーに動作を追加します。たとえば、ボタンのクリックや、トラッキングされたデバイスの動きに反応するようにします。サンプル ファイル OpenVRExample.vpb と「 HTC VIVE 用に VRED でのインタラクションを追加する 」を参照してください。

VRED を使用して VIVE を設定およびアクティブにする方法

VRED は、SteamVR を介して、OpenXR および OpenVR での HTC VIVE ハードウェア(VIVE Cosmos など)の使用をサポートします。Vive Pro Eye のユーザ向けに、VRED はフォービエイテッド レンダリング用の視線トラッキングをサポートしています。

  1. シーンをロードします。

  2. [ビュー] > [ディスプレイ]を選択して、HMD モードを選択します。

    • XR エクスペリエンスを実現するには、OpenXR HMD を選択します。

    • VR エクスペリエンスを実現するには、OpenVR HMD を選択します。SteamVR がまだ実行されていない場合は、しばらくお待ちください。自動的に起動します。

      重要:

      OpenVR HMD モードを使用する前に、SteamVR ソフトウェアをインストールする必要があります。インストールされていない場合は、https://store.steampowered.com/steamvr?l=japanese に移動し、[Steam をインストール]をクリックしてください。インストールしたら、画面上部の[VR]ボタンをクリックして、SteamVR をインストールします。

瞳孔間距離を設定する

VIVE ヘッドセットのハードウェア スライダを使用して、瞳孔間の距離を設定します。VRED でこの値を上書きするには、[可視化] > [立体視] > [立体視設定] > [瞳孔間距離]を選択します。

コントローラと Vive トラッカー

Vive コントローラが検出されると、そのトラッキングされたポーズで手がレンダリングされます。「VR 内の手」を参照してください。Vive トラッカーが検出されると、そのトラッキングされたポーズで、トラッカーのシンプルかつ静的なジオメトリック表現がレンダリングされます。

Python スクリプトを使用してコントローラおよびトラッカーに動作を追加します。たとえば、ボタンのクリックや、トラッキングされたデバイスの動きに反応するようにします。

サンプル ファイル OpenVRExample.vpb と「HTC VIVE 用に VRED でのインタラクションを追加する」を参照してください。

イメージ深度の送信の拡張機能

2024.1では、コントローラのバインドを追加してユーザがアクセスできるように、OpenXR に VIVE トラッカーの拡張機能を追加しました。ランタイムは、イメージの位置のタイムワープを効率的に行うために、この拡張機能 XR_KHR_composition_layer_depth を使用します。これが、XR_VARJO_composition_layer_depth_test を使用して深度テストを行う場合の要件になります。

OpenXR HTC VIVE トラッカー

トラッカーの位置を要求し、OpenVR と同様に Python を介して使用することができます。トラッカーはオブジェクト(シート バックやハンドルなど)に割り当てることができます。C:\ProgramData\Autodesk\VREDPro-16.1\examples\vr\attachToTracker.py の例と Python の vrDeviceService のドキュメントを参照してください。

ビデオ キャプション: VRED 2024.1 では、OpenXR にさらに多くの機能を追加しました。VIVE トラッカーの拡張機能の追加により、VIVE トラッカーを追加できるようになりました。これで、OpenVR で使用していた場合と同様に、OpenXR に VIVE トラッカーを追加することもできるようになりました。ただし、OpenXR では、すべてのトラッカーに異なるロールを割り当てる必要があることにご注意ください。この割り当ては、SteamVR の設定で直接実行します。

OpenXR トラッカーの外観は、次のようになります。OpenXR では、すべてのトラッカーに異なるロールを割り当てる必要があります。これは、動きをトラックし、実際の作業から VR にオブジェクトを取り込む場合に使用します。

OpenXR トラッカー

この操作を行うには、StreamVR の設定を使用し、[コントローラ] > [トラッカーの管理]を選択します。

ロールを割り当てるための StreamVR の設定

VR では、ロールを割り当てた後にトラッカーをオンにすると、そのロールがビューと StreamVR ディスプレイに表示されます。

トラッカーがオフ トラッカーがオン
VR UI のコントローラのイメージ VR UI のコントローラのイメージ
注:

ハンドヘルド オブジェクトは現在サポートされていないため、カスタム コントローラを使用してこれらを定義できます。同じロールが複数のトラッカーに割り当てられている場合、OpenXR ランタイムで 1 つが選択され、VRED で使用可能な唯一のロールになります。

シーン内の特定のポイントで VR エクスペリエンスを開始する方法

シーン内の特定のポイント(オブジェクトの前面 1 m など)で VR エクスペリエンスを開始する必要がある場合は、次の操作を実行します。

  1. シーン内の床面の、VR 内で自分が立つ位置にビューポイントを作成します([シーン] > [カメラ エディタ]を選択し、右クリックして[作成] > [ビューポイント]を選択)。

    注:

    このビューポイントを作成するには、「 ビューポイントの作成方法 」を参照してください。

  2. [ビュー] > [表示] > [OpenVR HMD]を選択します。

  3. 事前に定義されたビューポイントをアクティブにします。

    座標系の詳細な説明については、「 カメラ 」を参照してください。

トラッキング原点のタイプ

重要:

SteamVR の更新により Vive Tracker の既定の動作が変更され、VRED でのトラッカーの回転に問題が発生します。解決方法については、フォーラムの Re: Vive Tracker orientation issue VRED 2019 (英語)の投稿の終わりにある返信を参照してください。SteamVR の更新に関する詳細については、「 Vive トラッカーの最近の変更について 」という記事を参照してください。

部屋スケール着座モードの唯一の違いは、想定されているトラッキング原点です。トラッキング値は、この原点を基準とする相対的な値として報告されます。

  • 部屋スケール(既定)

    部屋スケールで想定されているトラッキング原点は、床面の再生領域の中心に配置されています。トラッキング値は、この中央の位置を基準とする相対的な値です。再生領域は SteamVR で設定されます。

  • 着座

    着座モードのトラッキング原点は、ユーザのヘッドです。トラッキング値は、ユーザが設定した着座ゼロ ポーズ(お勧めの着座位置)を基準とする相対的な値です。このモードが適している可能性があるのは、現実の世界と仮想世界が実際に対応している必要がないシナリオのみです。

    注:

    Python コマンドを使用して着座モードを有効にするには、「 着座モード 」を参照してください。

カメラ

VRED の既定のシーン設定は Z アップです。OpenVR モードの場合、VRED は既定に従って部屋スケール トラッキングを使用します。次の説明では、シーンが Z アップに設定されていて、部屋スケール トラッキング モードを使用していると仮定します。

ZYX 軸 UpZ

カメラのトランスフォームとトラッキング空間

VRED アクティブ カメラのトランスフォーム(移動および回転)では、シーン内のトラッキング空間の原点/場所や、その方向の設定方法を定義します。

  • カメラの位置は、床面の再生領域内のお勧めの直立ポイント(中心)を表します。VR 内の既定のカメラの位置は(0,0,0)です。

  • カメラの Z 値の位置は、床の高さを表します。VR 内の既定のカメラの高さは 0 です。

  • カメラの視線方向は、お勧めの前方方向を表します。VR 内の既定のカメラの方向は、VRED のワールド座標系における Y 軸の正方向です。

    お勧めの前方方向は、HMD (ヘッドマウント式ディスプレイ)を装着しているユーザが現実の世界で眺める可能性が高い方向です。トラッキング システムをインストールするときに SteamVR で設定されます。

  • カメラのアップベクトルは常に(0, 0, 1)に設定されています。これは、VRED のワールド座標系の Z 軸です。

HMD の VRED SteamVR トラッキングの値は、カメラのトランスフォームの後に重ねて適用されます。

OpenVR HMD モードがアクティブになるたびに、VRED シーン内のアクティブ カメラはワールドの位置(0, 0, 0)に設定され、Y 軸の正方向を向きます。OpenVR を再度非アクティブにすると、カメラは以前の位置/方向にリセットされます。

次の図では、外部から設定する簡単な例を示します。

  • 次の図に、(HMD トラッキング値を使用しないで)床面の原点に VRED カメラを配置する方法と、トラッキング値が適用されている場合のカメラの配置場所(オレンジ色で表示)を示します。

    既定のカメラ

  • 次の図では、VRED カメラは X 軸に沿って -1,000 単位移動されています。したがって、トラッキングが適用されたカメラも 1,000 単位移動されています。

    カメラを移動

ナビゲートにマウスを使用しない理由

レンダリング ウィンドウでマウスを使用してナビゲートすると、アクティブ カメラのトランスフォームが変更されます。VR の実行中にアクティブ カメラをトランスフォームすることは可能ですが、そうすると、カメラが床の高さに設定されなくなったり、カメラが誤って回転したりすることがあります。VR 中にマウスを使用してナビゲートする方法をお勧めしないのは、このためです。

床の高さおよび初期位置(部屋スケール モード)

部屋スケール モードでは、床の高さはカメラの Z 移動値で定義されます。つまり、シーン内の Z 値はトラッキング空間内の物理的な床に対応します。したがって、シーン内の床が Z = 0 でない場合は、カメラの Z 値を適切に調整します。

注:

カメラを(0, 0, 0)の位置のままにして、Python 関数 setOpenVRTrackingOrigin(Pnt3f(x,y,z)) を使用することもできます。

例: Automotive_Genesis.vpb の床の高さ

次のシーンでは、シーンの原点(0, 0, 0)は前面車軸の中心に配置されているため、床の高さは Z = 0 でなく、Z = -337 に設定されています。

床レベル

  • グラウンド面の Z 値の検索 - グラウンド面の Z 値を検索するには、シーングラフで ShadowPlane ノードを選択し、右クリックしてメニューから[情報...]を選択します。[ノード情報]ダイアログで[バウンディング ボックスの中心]の 3 番目の値を確認します。この値がワールドの Z 値(グラウンド面)です。

    バウンディング ボックスの中心

    シーン内の特定のジオメトリに対してこの方法が有効でない場合は、[計測]モジュールを使用して一時的な点から点の計測を作成します。

点から点の計測を作成する方法

  1. メニュー バーで[インタラクション] > [計測]を選択します。
  2. [計測]モジュールの上部セクション内で右クリックして、[点から点の計測を追加]を選択します。
  3. [Shift]キーを押しながら床に沿って 2 つのポイントを選択し、[プロパティ]セクション内で選択したいずれかのポイントの Z 値を確認します。

カメラの移動を変更して床の高さを設定する方法

カメラの移動を変更して床の高さを設定するには、OpenVR をアクティブにする必要があります。こうすると、カメラの移動は(0, 0, 0)に自動的に設定されます。そこから、いくつかの方法の中の 1 つを使用して、カメラを床の高さに設定し、カメラの移動を変更します。

  1. OpenVR をアクティブにします。

  2. カメラの移動を(0, 0, -337)に変更します。この操作は、カメラ エディタ([シーン] > [カメラ エディタ])で行うことができます。

  3. カメラ ノードがシーングラフ内のいずれかの親トランスフォーム ノードによってトランスフォームされている場合は、トランスフォーム エディタを使用します。このエディタの[移動]セクションで、[座標系]を[ワールド]に変更して、移動にワールド座標が使用されるようにします。

  4. 正しいカメラ位置を設定したら、新しいビューポイントを作成します。

    ヒント:

    後でこれらの値を使用するには、ビューポイントに保存します。ビューポイントは、OpenVR で作業を開始した後にアクティブにできます。ビューポイントをアクティブにするには、カメラ エディタまたは Python を使用します。Python 関数でビューポイントをアクティブにするには、「 OpenVR およびビューポイントをアクティブにするためのショートカット 」を参照してください。

フォービエイテッド レンダリング

Open GL で視線トラッキングによるフォービエイテッド レンダリングを実行するには、VRED Pro および Design 2020.2 と HTC Vive Pro Eye ヘッドセットを併用します。Turing アーキテクチャの NVIDIA グラフィックス カードなど、OpenGL 拡張機能の Shading Rate Image をサポートするグラフィックス カードが必要です。

注:

このオプションは現在、Varjo および StarVR ヘッドセットではサポートされていません。視線トラッキング機能がない別のヘッドセットを使用している場合は、VR のフォービエイテッド レンダリング基本設定のオプションを有効にします。ただし、視線をトラッキングできないため、中心領域は移動しません。中心領域はイメージの中央に固定されたままになります。

ダイナミック フォービエイテッド レンダリングは VIVE Pro Eye ユーザの視線方向をトラッキングします。また、周辺よりも高いシェーディング品質を使用して、現在焦点が置かれているイメージの領域をレンダリングします。HMD バーチャル リアリティの基本設定のオプションを使用して、レンダリング速度や表示品質を高めます。

フォービエイテッド レンダリングは、計算の負荷が高いマテリアルやリアルタイム アンチエイリアシングを使用して、シーン内のパフォーマンスを改善します。

ビューポイントの作成方法

ビューポイントはカメラ エディタ内に作成され、カメラの保存されたパラメータとして使用されます。カメラをトランスフォームすると、シーンのトラッキング空間の場所、およびその方向の設定方法が定義されます。つまり、通常のデスクトップ表示モードで既存のビューポイント設定を VR に再使用することはできません。専用の VR ビューポイントを作成する必要があります。

ビューポイントのトランスフォームを設定する場合は、外部のセカンダリ カメラを使用して実際のカメラを表示する方が簡単です([ビュー] > [カメラを表示])。この操作を実行したら、シーン内でトランスフォーム マニピュレータを使用して、表示されたカメラを目的の位置に移動します。

ビューポイントを作成

「床」のカメラからビューポイントを作成するには、まず「床」のカメラをアクティブにし、ビューポイントを作成してから、他のカメラをもう一度アクティブにして、同様な方法で次のビューポイントを設定します。

注:

新しいビューポイントは常に、アクティブなカメラのトランスフォームによって作成されるため、ビューポイントを作成する前にカメラをアクティブにする必要があります。

  • [移動] - カメラの移動は床面で行う必要があります。

  • [回転] - カメラの視線方向がお勧めの前方方向であるため、アップベクトルを(0, 0, 1) (VRED のワールドの Z 軸)に設定する必要があります。確認するには、[シーン] > [カメラ エディタ] > [詳細]タブ > [元の場所/場所/アップ]を選択します。

  • [アクティベーション] - 瞬時にテレポーテーションするには、アニメーションを使用しないでビューポイントをアクティブにします。VRED のビューポイント アニメーションは開始時と終了時に速度が上がるため、VR 中に不快になる可能性があります。したがって、[シーン] > [カメラ エディタ] > [カメラ設定] > [アニメーション]を選択してカメラ エディタの設定でアニメーションを非アクティブにします。

Vive: トラッキング位置合わせの確認方法

Vive の位置合わせが正しく行われていて、仮想シーン内の計測が現実の世界に 1 対 1 で対応しているかどうかを確認するには、次の操作を実行します。

  1. VRED 内に 1 メートル四方のボックスを作成します。
  2. VR 内で、[メニュー]ボタンがボックスの端に密着するようにコントローラを配置します。
  3. 現実の世界でこれらのボタンの間の距離を計測します。一致しない場合は、Vive 設定の位置合わせを再実行しなければならない可能性があります。