HTC Vive 用の Python (廃止予定)

注:

VRED バージョン 2020.1 以降用の新しい Python スクリプトを記述する場合は、代わりに VR 用 Python API v2 を使用してください。

VRED で HTC Vive の使用に特化した Python 関数を取得する

HTC Vive には、表示モードのオプションが 1 つのみあります(OpenVR HMD)。

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

直立モードまたは部屋スケール モードでは、床の高さはカメラの Z 移動値で定義されます。つまり、シーン内の Z 値はトラッキング空間内の物理的な床に対応します。

VRED でカメラを設定する方法は HTC Vive の方法と同じであるため(シーン内の仮想的な床と実際の床が一致するように設定する場合など)、「*カメラの移動を変更して床の高さを設定する方法*」を参照してください。

シーン内の床が Z = 0 の位置にない場合は、Python 関数 setOpenVRTrackingOrigin(Pnt3f(x,y,z)) を使用してトラッキング値を調整することもできます。

次の図では、setOpenVRTrackingOrigin Python 関数を使用してトラッキング値が変更されています。

トラッキング原点

床の高さを設定する方法

Python 関数を使用して床の高さを設定する場合の例を、次に示します。

  1. Automotive_Genesis サンプルをロードします([ファイル] > [サンプルを開く]を選択し、Automotive_Genesis を検索して[開く]をクリックします)。
  2. [ターミナル]ダイアログ([ビュー] > [ターミナル])で、setOpenVRTrackingOrigin(Pnt3f(0.0, 337.0, 0.0)) と入力します、
  3. [Enter]キーを押します。
  4. OpenVR をアクティブにします。

Python 関数 setOpenVRTrackingOrigin はオフセット ベクトルを指定します。この値が、OpenVR の位置トラッキングの値から差し引かれます。この関数は、OpenVR がアクティブになる前、または OpenVR の実行中に実行できます。この関数では、位置が専用の座標系で表されることにご注意ください。

VRED シーン内のトラッキング原点が pos = (x\_scene, y\_scene, z_scene) の位置にある場合は、Python 関数 setOpenVRTrackingOrigin(Pnt3f(-x\_scene, -z\_scene, y_scene)) を呼び出します。

OpenVR およびビューポイントをアクティブにするためのショートカット

OpenVR HMD ディスプレイ モードを有効にした後で、ビューポイントをアクティブにします。次の Python 関数を[ターミナル]に貼り付けて、OpenVR またはスクリプト エディタをアクティブにするショートカットを作成し、VR\_initial\_view という名前のビューポートを設定します。VR 用のビューポイントを設定する方法については、「*ビューポイント*」を参照してください。

def activateOpenVR():
    setDisplayMode(VR_DISPLAY_OPEN_VR)
    jumpViewPoint('VR_initial_view')

keyA = vrKey(Key_A)
keyA.connect(activateOpenVR)

ターミナルの Vive のアクティブ化

これで、[A]キーを押すといつでも VRED が OpenVR モードになり、ビューポイントがアクティブになります。

注:

[ターミナル]で実行されたスクリプトは、シーン ファイルに保存されません。このスクリプト化されたショートカットをシーンに保存して、後で使用できるようにするには、スクリプト エディタで Python コードを入力します。このスクリプトは、次にシーンを保存するときに vpb ファイルに保存されます。

現在の HMD の位置を特定する方法

トラッキングした HMD の、VRED シーンにおける現在の絶対的な位置を問い合わせる場合は、以下を使用します。

matrix = getActiveCameraNode().getWorldTransform()

位置は、次のようになります。

x=matrix[3], y=matrix[7], z=matrix[11]

getWorldTransform() 関数をアクティブ カメラ モードで使用した場合は、トラッキング トランスフォームが含まれます。

着座モード

次の Python 関数を使用して、着座モードを有効にできます(モード 0 は着座、モード 1 は直立/部屋スケール)。

setOpenVRTrackingOriginType(0)
注:

既定のモードは部屋スケールです。

着座のトラッキング原点タイプを有効にすると、トラッキング原点は再生領域の中心ではなくなり、プレーヤーのヘッドの位置になります。つまり、VRED カメラの位置は、VR シーン内のユーザのヘッドの位置と同じにする必要があります。

設定中にユーザが定義した特定のポーズが、既定のヘッド ポーズまたは着座ゼロ ポーズとして使用されます。トラッキング値は、このポーズに対して相対的な値となります。OpenVR が VRED 内で実行されている場合は、Python 関数 resetOpenVRHMDPose() を使用して着座ゼロ ポーズをリセットできます。

重要 OpenVR モードが有効になるたびに、VRED はゼロ ポーズをリセットします。

次に、OpenVR で着座モードを設定するための手順を示します。正しい順序は非常に重要です。

  1. OpenVR をアクティブにします。
  2. [ターミナル]を開き、setOpenVRTrackingOriginType(0) と入力して着座モードをアクティブにします。
  3. (オプション)着座ゼロ ポーズをリセットするには、[ターミナル]で resetOpenVRHMDPose() と入力します。着座ゼロ ポーズは OpenVR のアクティベーション時に既にリセットされていますが、ユーザがその時点で HMD を正しい位置で装着しなかった場合は、リセットする必要があります。
  4. たとえば、カメラ エディタで適切なビューポイントをアクティブにすることにより、シーンのカメラをユーザの頭の本来の位置に配置します。