初めての HoloLens Unreal アプリケーションの作成
このガイドでは、Unreal Engine の HoloLens 上で初めての Mixed Reality アプリを実行する手順について説明します。 "Hello World" のように、画面にキューブを表示する簡単なアプリを作成します。 さらに便利にするために、最初のジェスチャも作成してキューブを回転させ、アプリケーションを終了します。
目標
- HoloLens プロジェクトを開始する
- 正しいプラグインを有効にする
- ARSessionConfig データ資産を使用する
- ジェスチャ入力を設定する
- 基本レベルを構築する
- ピンチ ジェスチャを実装する
新しいプロジェクトの作成
最初に必要なのは、作業するプロジェクトです。 Unreal で初めて開発する場合は、Epic Launcher からサポート ファイルをダウンロードする必要があります。
- Unreal Engine を起動します。
- [New Project Categories](新しいプロジェクトのカテゴリ) で、 [Games](ゲーム) を選択して [Next](次へ) をクリックします。
- [Blank](空) テンプレートを選択して [Next](次へ) をクリックします。
- [Project Settings](プロジェクト設定) で、 [C++]、[Scalable 3D or 2D](スケーラブル 3D または 2D)、[Mobile/Tablet](モバイル/タブレット) 、 [No Starter Content](スターター コンテンツを有効にしない) を設定し、保存場所を選択して、 [Create Project](プロジェクトの作成) をクリックします
Note
後で OpenXR プラグインを使用できるようにするため、ブループリント プロジェクトではなく C++ を使用しています。 この QuickStart では、Unreal Engine に付属する既定の OpenXR プラグインを使用します。 ただし、公式の Microsoft OpenXR プラグインをダウンロードして使用することをお勧めします。 それには、プロジェクトが C++ プロジェクトである必要があります。
新しいプロジェクトが Unreal エディターで自動的に開かれます。つまり、次のセクションに進む準備はできています。
必要なプラグインの有効化
オブジェクトをシーンに追加する前に、2 つのプラグインを有効にする必要があります。
- [編集] > [プラグイン] を開き、組み込みオプション リストから [拡張現実] を選択します。
- HoloLens まで下にスクロールし、 [Enabled](有効) をオンにします
- 右上の検索ボックスに「OpenXR」と入力し、OpenXR および OpenXRMsftHandInteraction プラグインを有効にします。
- エディターを再起動します
Note
このチュートリアルでは OpenXR を使用しますが、上でインストールした 2 つのプラグインには、現在、HoloLens 開発用の完全な機能セットはありません。 後で使用する "ピンチ" ジェスチャには HandInteraction プラグインで十分ですが、基本機能以外を使用するには、Microsoft OpenXR プラグインをダウンロードする必要があります。
プラグインを有効にすると、それにコンテンツを設定できます。
レベルの作成
次のタスクは、参照とスケール用の開始点とキューブを使用してプレーヤーのセットアップを作成することです。
- [ファイル] > [新しいレベル] を選択し、[空のレベル] を選択します。 この時点では、ビューポートの既定のシーンは空です
- [Modes](モード) タブから [Basic](基本) を選択し、PlayerStart をシーンにドラッグします
- [Details](詳細) タブで、 [Location](位置) を X = 0、Y = 0、Z = 0 に設定して、アプリの起動時にユーザーをシーンの中心に設定します
- [Basic](基本) タブから Cube をシーンにドラッグします
- キューブの [Location](位置) を X = 50、Y = 0、Z = 0 に設定して、開始時にプレーヤーから 50 cm 離れた位置にキューブを配置します
- キューブの [Scale](スケール) を X = 0.2、Y = 0.2、Z = 0.2 に変更します
シーンにライトを追加しない限り、キューブを表示することはできません。これは、シーンをテストする前の最後のタスクです。
- [Modes](モード) パネルで [Lights](ライト) タブに切り替えて、Directional Light をシーンにドラッグします
- ライトが見えるように、PlayerStart の上にそれを配置します
- [File](ファイル) > [Save Current](現在を保存) に移動し、レベルに Main という名前を付けて、[Save](保存) を選択します
シーンを設定したら、ツールバーの [再生] を押して、キューブの動作を確認します。 作業内容を鑑賞したら、Esc を押してアプリケーションを停止します。
シーンをセットアップしたので、AR でいくつかの基本的な対話式操作を実行できるようにします。 最初に、AR セッションを作成する必要があり、ブループリントを追加してハンド インタラクションを可能にできます。
セッション アセットの追加
Unreal の AR セッションは、それ自体では発生しません。 セッションを使用するには、ARSessionConfig データ資産を処理する必要があります。それが次のタスクです。
- [Content Browser](コンテンツ ブラウザー) で、[Add New](新規追加) > [Miscellaneous](その他) > [Data Asset](データ アセット) を選択し、ルート コンテンツ フォルダー レベルであることを確認します
- ARSessionConfig を選択し、 [Select](選択) をクリックして、アセットに ARSessionConfig という名前を付けます。
- ARSessionConfig をダブルクリックして開き、既定の設定をすべてそのままにして [Save](保存) を選択し、メイン ウィンドウに戻ります。
それが完了したら、次のステップとして、レベルが読み込まれたら AR セッションが開始し、レベルが終了したら停止するようにします。 さいわい、Unreal には、レベル ブループリントと呼ばれる特別なブループリントがあり、レベル全体のグローバル イベント グラフとして機能します。 レベル ブループリントで ARSessionConfig アセットを接続すると、ゲームの再生が開始されたときに AR セッションが正常に起動します。
- エディターのツール バーから、[Blueprints](ブループリント) > [Open Level Blueprint](Level ブループリントを開く) をクリックします。
- 実行ノード (左向き矢印アイコン) を Event BeginPlay からドラッグして離します
- [Start AR Session](AR セッションの開始) ノードを検索し、Enter キーを押します
- [Session Config](セッション構成) の下にある [Select Asset](アセットの選択) ドロップダウンをクリックし、ARSessionConfig アセットを選択します
- EventGraph 内の任意の場所を右クリックし、新しい Event EndPlay ノードを作成します。
- 実行ピンをドラッグして離してから、 [Stop AR Session](AR セッションの停止) ノードを検索して Enter キーを押します
- [Compile](コンパイル) 、 [Save](保存) の順にクリックして、メイン ウィンドウに戻ります
重要
レベルが終了しても AR セッションがまだ実行されている場合、ヘッドセットへのストリーミング中にアプリを再起動すると、特定の機能が動作しなくなることがあります。
入力の設定
- [Edit](編集) > [Project Settings](プロジェクトの設定) を編集し、[Engine](エンジン) > [Input](入力) に移動します
- [Action Mappings](アクション マッピング) の横にある [+] アイコンを選択して、RightPinch アクションと LeftPinch アクションを作成します。
- RightPinch および LeftPinch アクションをそれぞれの OpenXR Msft ハンド インタラクション アクションにマップします。
ジェスチャの設定
入力を設定したので、わくわくする部分に進むことができます。ジェスチャの追加です。 右ピンチでキューブを回転させ、左ピンチでアプリケーションを終了しましょう。
- [Level Blueprint](Level ブループリント) を開き、InputAction RightPinch と InputAction LeftPinch を追加します
- ターゲットを Cube に設定し、 [Delta Rotation](デルタ回転) を X = 0、Y = 0、Z = 20 に設定して、右ピンチ イベントを AddActorLocalRotation に接続します。 これで、ピンチするたびにキューブが 20 度回転するようになります
- 左ピンチ イベントを Quit Game に接続します
- キューブの [Transform](変換) の設定で、 [Mobility](モビリティ) を [Movable](移動可能) に設定して、動的に移動できるようにします。
これで、アプリケーションをデプロイしてテストする準備ができました。