Unrealのサンプル
更新日時: 2024/09/04
これらのUnrealサンプルは、基本的なVRコンセプトとMeta Quest機能をアプリに実装する方法を示しています。
Unreal-HandSample GitHubリポジトリには、Unreal EngineでのMeta Questのジェスチャーコントロール機能を示す2つのサンプルが含まれています。
このアプリは、Touchコントローラーでトラッキングする2つの球体と、VRコンポジターレイヤーとしてレンダリングされる2つのUMGウィジェットを表示します。この例では、1つをクワッドレイヤーとして、もう1つをシリンダーレイヤーとしてレンダリングします。
Actor_Blueprint
は、ウィジェットをステレオレイヤーにレンダリングする方法を示します。この例では、最初にウィジェットをマテリアルにレンダリングし、次にマテリアルからSlateUI
テクスチャーをステレオレイヤーに引き出します。つまり、このサンプルは、UMGウィジェットをクワッドレイヤーとシリンダーレイヤーにレンダリングします。
MenuBlueprint
を開いて、
UMGエディターでUMGウィジェットを開きます。
NewGameMode
とVRCharacter
は、シーンを初期化したり適切な高さで表示したりするために使用されます。
以下は、さまざまなロコモーションのタイプとそれに関連するプレイヤーコントロールの詳細を示すリストです。
- ポイントとテレポート: いずれかのコントローラー上でサムスティックをニュートラル位置から動かし、移動先の位置を指します。地面には円弧とインジケータが表示され、テレポート先と方向が示されます。スティックを回転させると、ターゲットの向きが変わります。スティックがニュートラル位置に戻ると、目的地にテレポートします。
- ポイントとテレポート(第三者のアバターを使用): ポイントとテレポートと同じですが、第三者のアバターが目的地まで歩いて移動します。
- ステップによる移動と回転: 左スティックを前後に押すと、インクリメント単位でジャンプします。右スティックを左右に押すと、35度単位で回転します。
- つかんでドラッグする: アクションボタンまたはトリガーを長押ししてコントローラーを地面の上で移動させ、ある方向に這って進みます。
- 腕を振る: アクションボタンまたはトリガーを長押しして腕を振ると、コントローラーが指している方向に前進します。
- デュアルスティック歩行: 標準的な一人称視点の非VRゲームの場合のように、左スティックで移動を制御し、右スティックで回転を制御します。このタイプの動きはVRでは不快に感じられることがあるため、慣れるまでは短時間試すだけにするか、ヘッドセットで視界全体をカバーしないようにすることをおすすめします。
ロコモーションのこれらの方式は、MotionControllerPawn
Blueprintの中で実装されています。
このサンプルアプリは、両手によるオブジェクト操作に焦点を当てたものです。両手の操作は難しい場合があります。それで、この例で提供されるインタラクティブなオブジェクトを使って操作を試してみることができます。
- 青い立方体: いずれかのコントローラーのグラブボタンを使って、持ち上げたり投げたりすることができます。このインタラクションは、
BP_PickupCube
Blueprintに実装されています。 - 銃: 片手でつかんで持ち上げます。もう一方の手を銃身近くに置いてつかむことにより、狙いを定めます。銃火器は、両手の間の距離に応じて伸び縮みします。このインタラクションは、
BP_PickupCube
Blueprintに実装されています。 - 青い棒: 片手でつかんで持ち上げます。その手で棒の位置と向きを制御します。もう一方の手で棒をつかむと、両手モードが有効になります。棒を両手の間でまっすぐに保つと、最初の手がその位置を維持します。このインタラクションは、
BP_PickupTwoHandedCylinder
Blueprintに実装されています。 - 弓: 片手でつかんで持ち上げます。もう一方の手でつかんで、矢を引きます。その手を放すと矢が発射します。このインタラクションは、
BP_Bow
Blueprintに実装されています。
すべてのインタラクションはPickupActorInterface
Blueprintで動作し、BP_MotionController
とMotionControllerPawn
のBlueprintにより調整されます。
提供されている各マップの情報を以下に示します。詳しくは、サンプルのREADMEをご覧ください。
サンプルの実行中、Touchコントローラーのトリガーを使用して、マップ内のスライダーをドラッグします。光源コントロールに添付されているBlueprintにより、その回転が制御されます。
このマップは、ルックアップテーブル(LUT)を使用してシーンの外観を調整する方法を示します。
このマップは、
距離フィールドシャドウを示しています。距離フィールドシャドウを機能させるには、光源タイプを静止モードに設定し、以下のようにプロジェクト設定の
[Engine] >
[Rendering(レンダリング)] >
[Mobile Shader Permutation Reduction(モバイルシェーダーパーミュテーションの削減)] >
[Support Pre-baked Distance Field Shadows(プリベイクされた距離フィールドシャドウをサポートする)]を有効にしてください。
このマップは、VRでポータルをレンダリングする2種類の方法を示します。
1つ目の方法では、使用するポータルの場所でキャプチャされた静的視差補正キューブマップを利用します。このマップはプリベイクすることが可能で、パフォーマンス的には比較的低コストですが、歪んで表示されるなどの問題が発生する可能性があります。
2つ目の方法ではステレオレンダリングターゲットを使用し、片目ずつの視点からのシーンと、ポータルで表示されるものをレンダリングします。リアルなエフェクトを実現できますが、パフォーマンスコストは高くなります。この例では、PortalCaptureActorBP
Blueprint、MF_ScreenAlignedUV_VR
マテリアル関数、PortalSampleMaterial
マテリアルの間で機能を分割します。PortalCaptureActor
クラスには、いくつかのヘルパーC++メソッドも含まれています。
このマップは、テキストなどの高コントラストのテクスチャーと組み合わせた、さまざまなテクスチャーフィルタリング設定の効果を示しています。また、VRステレオレイヤーを使用して高品質のテキストやテクスチャーをレンダリングする方法も示しています。
このサンプルは、プラットフォームSDKの初期化、エンタイトルメントチェックの実行、さまざまなプラットフォーム機能の実装の例を示します。プラットフォームSDKをダウンロードしていなければ
ダウンロードし、解凍してください。このサンプルは、SDKを解凍したディレクトリ内の
\Samples\UnrealSample\
の中にあります。
次のサンプルはUnreal Engine 4.27専用です。
このサンプルは、次を行う方法を示します。
- MetaガーディアンシステムにアクセスするBlueprintを作成する
- プレイエリアに対してオブジェクトの配置、拡大縮小、回転を行う
- ヘッドセットまたはコントローラーがガーディアン境界線をいつ越えたかを判定する
このサンプルは、Oculus RiftやMeta Questなどの6DOF (自由度6)のヘッドセットでのみ動作します。このサンプルは、Meta統合Unreal Engineインストールパス内の\Samples\Oculus\BoundarySample
の下にあります。
クラウドストレージとダウンロードコンテンツ(DLC) このサンプルは、次のものの使用方法を示します。
このサンプルは、Meta統合Unreal Engineインストールパス内の\Samples\Oculus\CloudSaveDLC
の下にあります。サンプルの設定手順と詳細については、サンプルのREADMEファイルをご覧ください。
これらの機能の実装方法を確認するには、\Samples\Oculus\CloudSaveDLC\Source\CloudSaveDLC\Private\
内のDLCWidget.cpp
とCloudSaveWidget.cpp
を開いてください。
このTouchサンプルは、トラッキング、サムスティックの制御、
PlayHapticEffect()
関数と
PlayHapticSoundWave()
関数を使った
ハプティクス制御を示しています。
このサンプルは、Oculus-VR Fork Unreal Engineインストールパス内の\Samples\Oculus\BoundarySample
の下にあります。サンプルの実行時には、2つの球体がTouchコントローラーでトラッキングされます。右のコントローラーのサムスティックを使用して、ライトグレーのボックスの位置を制御できます。Touchキャパシタンスセンサーは、右手の親指がタッチ位置または近接タッチ位置にあるかを検出し、それによりボックスの高さを制御します。ハプティクスクリップを再生するには、左のTouchグリップボタンを長押しします。ハプティクスの値を直接設定してハプティクスエフェクトを生じさせるには、左のTouch Xボタンを長押しします。以下の画像に例を示します。
TouchサンプルレベルのBlueprintには、ハプティクスとサムスティックコントロールのBlueprintが含まれています。NewGameModeとVRCharacterは、シーンを初期化したり、シーンを適切な高さで表示したりします。