見出し画像

⓶UE5 VRテンプレートのソースを追う VRPawn の EventGraph


注意

殴り書きです。シェアードポインタは省略してメモったりします。
私の環境は5.4でやっています。古い情報が多いので間違ってたりするかもしれないです。

SetTrackingOriginノード


Set Traking Origin

Originのプルダウンの役割

Set Tracking Originノードの"Origin"プルダウンは、VRシステムのトラッキング原点の種類を指定するために使用されます。各オプションの役割は以下の通りです:

  1. Stage:

    • ルームスケールVR体験用のデフォルト設定です。

    • 部屋の中心を原点とし、床面を基準とします。

    • プレイエリア全体を使用するVR体験に適しています。

  2. View:

    • HMDの現在の位置を原点とします。

    • 座位体験や、プレイヤーの初期位置が重要な場合に使用します。

  3. Local Floor:

    • 床面を基準とし、プレイヤーの足元を原点とします。

    • 立位体験や、床面との相対位置が重要な場合に適しています。

  4. Local:

    • デバイスの初期位置を原点とします。

    • 座位体験や、特定の位置を基準にしたい場合に使用します。

  5. Custom Open XR:

    • OpenXR固有のカスタム設定を使用します。

    • 特殊なトラッキング要件がある場合や、OpenXRの拡張機能を利用する場合に使用します。

これらのオプションを適切に選択することで、VR体験の空間的な基準点を設定し、プレイヤーの位置や向きを正確に追跡することができます。選択は、開発するVRアプリケーションの種類(座位、立位、ルームスケールなど)や、対象とするVRデバイスの特性に応じて行う必要があります。

Execute Console Command とは

Execute Console Comannd の上のコメント


The vr.PixelDensity cvar will under or over-sample the resolution for your Head Mounted Display.

More info: https://www.unrealengine.com/blog/significant-changes-coming-to-vr-resolution-settings-in-4-19

このリンクのページの更新日が2017年12月19日です。古すぎです。
↓以下翻訳と概要

「vr.PixelDensity コンソール変数は、ヘッドマウントディスプレイの解像度をアンダーサンプリングまたはオーバーサンプリングします。」この説明は、VR(仮想現実)環境での画質調整に関する重要な情報を提供しています。具体的には:

  1. vr.PixelDensity: これはUnreal Engineで使用されるコンソール変数(cvar)です。

  2. アンダーサンプリング: 設定値を1.0未満にすると、VRヘッドセットの本来の解像度よりも低い解像度でレンダリングします。これはパフォーマンスを向上させますが、画質は低下します。

  3. オーバーサンプリング: 設定値を1.0より大きくすると、VRヘッドセットの本来の解像度よりも高い解像度でレンダリングします。これにより画質が向上しますが、パフォーマンスに影響を与える可能性があります。

この設定を調整することで、VRアプリケーションの画質とパフォーマンスのバランスを取ることができます。開発者はこの変数を使用して、ターゲットデバイスや必要なパフォーマンス要件に応じて適切な解像度を設定できます。

Execute ConsoleCommandの定義

class UKismetSystemLibrary : public UBlueprintFunctionLibrary
{
...

	UFUNCTION(BlueprintCallable, Category="Development",meta=(WorldContext="WorldContextObject", CallableWithoutWorldContext))
	static ENGINE_API void ExecuteConsoleCommand(const UObject* WorldContextObject, const FString& Command, class APlayerController* SpecificPlayer = NULL );
...
}

UKismetSystemLibraryの定義されています。他のクラスに同じ名前のものが定義されていますがたぶんこれです。
この関数は、VRPawnのEventGraphで使用されている "Execute Console Command" ノードの基礎となっています。"vr.PixelDensity 1.0" コマンドを実行することで、VRシステムのピクセル密度を設定しています。

UKismetSystemLibrary について

UKismetSystemLibrary は UlueprintFunctionLibrary の派生クラスです
これは、ブループリントで使用可能な様々なユーティリティ関数を提供するためのクラスです。


Input関連

Input関連のノード

よく見るThirdPersonのEnhanced Input Lo9cal Player Subsystemを使っています。異なる点は二つAdd Mapping Contextノードがあることです。
二つ目のほうはMapping ContextにIMC_HandsとあるのでVRでの入力はこちらで実装していると予想できます。

Input

英語のコメント1

This is what tells Enhanced Input to use our Mapping Context. Setting "ActionSet" (OpenXR term) priority at Runtime is currently a work-in-progress, and as such, setting priority on these nodes may or may not have an effect, depending on if the runtime has implemented it. However, setting priority in the Player Mappable Input config works as intended.

「これは、Enhanced Inputに我々のマッピングコンテキストを使用するよう指示するものです。ランタイムでの"ActionSet"(OpenXRの用語)の優先度設定は現在開発中であり、そのため、これらのノードでの優先度設定は、ランタイムが実装しているかどうかによって効果があるかもしれませんし、ないかもしれません。しかし、Player Mappable Input設定での優先度設定は意図通りに機能します。」

このコメントは以下の点を説明しています:

  1. Enhanced Inputシステムの使用:

    • マッピングコンテキストを設定して、Enhanced Inputシステムを使用することを示しています。

  2. OpenXRとの関連:

    • "ActionSet"はOpenXRの用語であり、VR/AR開発に関連していることを示唆しています。

  3. ランタイムでの優先度設定:

    • 現在開発中の機能であり、完全には実装されていない可能性があります。

  4. ノードでの優先度設定の不確実性:

    • ランタイムの実装状況によって、ノードでの優先度設定が効果を持つかどうかが不確定です。

  5. Player Mappable Input設定:

    • この設定での優先度設定は正常に機能することを確認しています。

このコメントは、VR開発における入力システムの設定に関する重要な情報を提供しており、開発者に実装上の注意点を喚起しています。

英語のコメント2

Add the Input Mapping Context for Hands - This IMC is responsible for the Inputs that control the hand animations

「ハンド用の入力マッピングコンテキストを追加します - このIMC(Input Mapping Context)は、手のアニメーションを制御する入力を担当します」

このコメントの意味を詳しく説明すると:

  1. 入力マッピングコンテキスト(IMC)の追加:

    • VRシステムに新しい入力設定を追加していることを示しています。

  2. ハンド用の設定:

    • この特定のIMCは、VR環境での手(ハンド)の操作に関連しています。

  3. 手のアニメーション制御:

    • このIMCの主な目的は、VR空間内での手のアニメーションを制御することです。

  4. 入力と動作のマッピング:

    • ユーザーの入力(おそらくVRコントローラーからの入力)を、手のアニメーションや動きに変換するための設定を行っています。

このコメントは、VR環境での手の動きやジェスチャーを実装する上で重要な設定を説明しています。これにより、開発者はユーザーの入力に基づいて、VR空間内で自然な手の動きを再現することができます。

▼前の記事

▼次の記事

この記事が気に入ったらサポートをしてみませんか?