VRED バージョン 2020.1 以降用の新しい Python スクリプトを記述する場合は、代わりに VR 用 Python API v2 を使用してください。
HTC Vive には、表示モードのオプションが 1 つのみあります(OpenVR HMD)。
直立モードまたは部屋スケール モードでは、床の高さはカメラの Z 移動値で定義されます。つまり、シーン内の Z 値はトラッキング空間内の物理的な床に対応します。
VRED でカメラを設定する方法は HTC Vive の方法と同じであるため(シーン内の仮想的な床と実際の床が一致するように設定する場合など)、「*カメラの移動を変更して床の高さを設定する方法*」を参照してください。
シーン内の床が Z = 0 の位置にない場合は、Python 関数 setOpenVRTrackingOrigin(Pnt3f(x,y,z))
を使用してトラッキング値を調整することもできます。
次の図では、setOpenVRTrackingOrigin
Python 関数を使用してトラッキング値が変更されています。
Python 関数を使用して床の高さを設定する場合の例を、次に示します。
setOpenVRTrackingOrigin(Pnt3f(0.0, 337.0, 0.0))
と入力します、Python 関数 setOpenVRTrackingOrigin
はオフセット ベクトルを指定します。この値が、OpenVR の位置トラッキングの値から差し引かれます。この関数は、OpenVR がアクティブになる前、または OpenVR の実行中に実行できます。この関数では、位置が専用の座標系で表されることにご注意ください。
VRED シーン内のトラッキング原点が pos = (x\_scene, y\_scene, z_scene)
の位置にある場合は、Python 関数 setOpenVRTrackingOrigin(Pnt3f(-x\_scene, -z\_scene, y_scene))
を呼び出します。
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)
これで、[A]キーを押すといつでも VRED が OpenVR モードになり、ビューポイントがアクティブになります。
[ターミナル]で実行されたスクリプトは、シーン ファイルに保存されません。このスクリプト化されたショートカットをシーンに保存して、後で使用できるようにするには、スクリプト エディタで Python コードを入力します。このスクリプトは、次にシーンを保存するときに vpb ファイルに保存されます。
トラッキングした 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 で着座モードを設定するための手順を示します。正しい順序は非常に重要です。
setOpenVRTrackingOriginType(0)
と入力して着座モードをアクティブにします。resetOpenVRHMDPose()
と入力します。着座ゼロ ポーズは OpenVR のアクティベーション時に既にリセットされていますが、ユーザがその時点で HMD を正しい位置で装着しなかった場合は、リセットする必要があります。