初めての HoloLens Unreal アプリケーションの作成Creating your first HoloLens Unreal application

このガイドでは、Unreal Engine の HoloLens 上で初めての Mixed Reality アプリを実行する手順について説明します。This guide will walk you through getting your first Mixed Reality app running on the HoloLens in Unreal Engine. "Hello World" のように、画面にキューブを表示する簡単なアプリを作成します。In the tradition of "Hello World", you'll create a simple app that displays a cube on the screen. さらに便利にするために、最初のジェスチャも作成してキューブを回転させ、アプリケーションを終了します。To make it more useful, you'll also create your first gesture to rotate the cube and quit the application.

目標Objectives

  • HoloLens プロジェクトを開始するStart a HoloLens Project
  • 正しいプラグインを有効にするEnable the correct plugins
  • ARSessionConfig データ資産を使用するCreate an ARSessionConfig Data Asset
  • ジェスチャ入力を設定するSet up gesture inputs
  • 基本レベルを構築するBuild a basic level
  • ピンチ ジェスチャを実装するImplement a pinch gesture

新しいプロジェクトの作成Creating a new project

最初に必要なのは、作業するプロジェクトです。The first thing you need is a project to work with. Unreal で初めて開発する場合は、Epic Launcher からサポート ファイルをダウンロードする必要があります。If you're a first-time Unreal developer, you'll need to download supporting files from the Epic Launcher.

  1. Unreal Engine を起動します。Launch Unreal Engine
  2. [New Project Categories](新しいプロジェクトのカテゴリ) で、 [Games](ゲーム) を選択して [Next](次へ) をクリックします。In the New Project Categories, select Games and click Next:

[Games](ゲーム) が強調表示されている最近のプロジェクトのウィンドウ

  1. [Blank](空) テンプレートを選択して [Next](次へ) をクリックします。Select the Blank template and click Next:

空のテンプレートが強調表示されている Unreal プロジェクト ブラウザー ウィンドウ

  1. [Project Settings](プロジェクト設定) で、 [C++]、[Scalable 3D or 2D](スケーラブル 3D または 2D)、[Mobile/Tablet](モバイル/タブレット)[No Starter Content](スターター コンテンツを有効にしない) を設定し、保存場所を選択して、 [Create Project](プロジェクトの作成) をクリックしますIn the Project Settings, set C++, Scalable 3D or 2D, Mobile/Tablet, and No Starter Content, then choose a save location and click Create Project

注意

後で OpenXR プラグインを使用できるようにするため、ブループリント プロジェクトではなく C++ を使用しています。You're using a C++ rather than a Blueprint project in order to be ready to use the OpenXR plugin later. この QuickStart では、Unreal Engine に付属する既定の OpenXR プラグインを使用します。This QuickStart uses the default OpenXR plugin that comes with Unreal Engine. ただし、公式の Microsoft OpenXR プラグインをダウンロードして使用することをお勧めします。However, downloading and using the official Microsoft OpenXR plugin is recommended. それには、プロジェクトが C++ プロジェクトである必要があります。That requires the project to be a C++ project.

プロジェクト、パフォーマンス、ターゲット プラットフォーム、スターター コンテンツの選択が強調表示されているプロジェクト設定ウィンドウ

新しいプロジェクトが Unreal エディターで自動的に開かれます。つまり、次のセクションに進む準備はできています。Your new project should open up automatically in the Unreal editor, which means you're ready for the next section.

必要なプラグインの有効化Enabling required plugins

オブジェクトをシーンに追加する前に、2 つのプラグインを有効にする必要があります。You'll need to enable two plugins before you can start adding objects to the scene.

  1. [編集] > [プラグイン] を開き、組み込みオプション リストから [拡張現実] を選択します。Open Edit > Plugins and select Augmented Reality from the built-in options list.
  • HoloLens まで下にスクロールし、 [Enabled](有効) をオンにしますScroll down to HoloLens and check Enabled

拡張現実セクションが開き HoloLens が強調表示されているプラグイン ウィンドウ

  1. 右上の検索ボックスに「OpenXR」と入力し、OpenXR および OpenXRMsftHandInteraction プラグインを有効にします。Type OpenXR in the search box at the top right and enable the OpenXR and OpenXRMsftHandInteraction plugins:

OpenXR が有効になっているプラグイン ウィンドウ

OpenXRMsftHandInteraction が有効になっているプラグイン ウィンドウ

  1. エディターを再起動しますRestart your editor

注意

このチュートリアルでは OpenXR を使用しますが、上でインストールした 2 つのプラグインには、現在、HoloLens 開発用の完全な機能セットはありません。This tutorial uses OpenXR, but the two plugins you've installed above don't currently provide the full feature set for HoloLens development. 後で使用する "ピンチ" ジェスチャには HandInteraction プラグインで十分ですが、基本機能以外を使用するには、OpenXR プラグインをダウンロードする必要があります。The HandInteraction plugin will suffice for the "Pinch" gesture you'll use later, but if you want to go beyond the basics you'll need to download the OpenXR plugin.

プラグインを有効にすると、それにコンテンツを設定できます。With the plugins enabled, you can focus on filling it with content.

レベルの作成Creating a level

次のタスクは、参照とスケール用の開始点とキューブを使用してプレーヤーのセットアップを作成することです。Your next task is to create a player setup with a starting point and a cube for reference and scale.

  1. [ファイル] > [新しいレベル] を選択し、 [空のレベル] を選択します。Select File > New Level and choose Empty Level. この時点では、ビューポートの既定のシーンは空ですThe default scene in the viewport should now be empty
  2. [Modes](モード) タブから [Basic](基本) を選択し、PlayerStart をシーンにドラッグしますFrom the Modes tab, select Basic and drag PlayerStart into the scene
  • [Details](詳細) タブで、 [Location](位置)X = 0、Y = 0Z = 0 に設定して、アプリの起動時にユーザーをシーンの中心に設定しますIn the Details tab, set Location to X = 0, Y = 0, and Z = 0 to place the user at the center of the scene when the app starts

位置とプレーヤーのスタートが追加された Unreal エディター シーン

  1. [Basic](基本) タブから Cube をシーンにドラッグしますFrom the Basic tab, drag a Cube into the scene
  • キューブの [Location](位置)X = 50、Y = 0Z = 0 に設定して、開始時にプレーヤーから 50 cm 離れた位置にキューブを配置しますSet the cube's Location to X = 50, Y = 0, and Z = 0 to position the cube 50 cm away from the player at start
  • キューブの [Scale](スケール)X = 0.2、Y = 0.2Z = 0.2 に変更しますChange the cube's Scale to X = 0.2, Y = 0.2, and Z = 0.2

シーンにライトを追加しない限り、キューブを表示することはできません。これは、シーンをテストする前の最後のタスクです。You can't see the cube unless you add a light to your scene, which is your last task before testing the scene.

  1. [Modes](モード) パネルで [Lights](ライト) タブに切り替えて、Directional Light をシーンにドラッグしますIn the Modes panel, switch to the Lights tab and drag a Directional Light into the scene
  • ライトが見えるように、PlayerStart の上にそれを配置しますPosition the light above PlayerStart so you can see it

キューブと指向性ライトが追加された Unreal エディターのシーン

  1. [File](ファイル) > [Save Current](現在を保存) に移動し、レベルに Main という名前を付けて、 [Save](保存) を選択しますGo to File > Save Current, name your level Main, and select Save

シーンを設定したら、ツールバーの [再生] を押して、キューブの動作を確認します。With the scene set, press Play in the toolbar to see your cube in action! 作業内容を鑑賞したら、Esc を押してアプリケーションを停止します。When you're finished admiring your work, press Esc to stop the application.

画面の中央にキューブがあるプレイ モードのシーン

シーンをセットアップしたので、AR でいくつかの基本的な対話式操作を実行できるようにします。Now that the scene is set up, lets get it ready for some basic interactions in AR. 最初に、AR セッションを作成する必要があり、ブループリントを追加してハンド インタラクションを可能にできます。First, you need to create an AR Session and can add blueprints to enable hand interaction.

セッション アセットの追加Adding a session asset

Unreal の AR セッションは、それ自体では発生しません。AR sessions in Unreal don't happen by themselves. セッションを使用するには、ARSessionConfig データ資産を処理する必要があります。それが次のタスクです。To use a session, you need an ARSessionConfig data asset to work with, which is your next task:

  1. [Content Browser](コンテンツ ブラウザー) で、 [Add New](新規追加) > [Miscellaneous](その他) > [Data Asset](データ アセット) を選択し、ルート コンテンツ フォルダー レベルであることを確認しますIn the Content Browser, select Add New > Miscellaneous > Data Asset and make sure you're at the root Content folder level
  2. ARSessionConfig を選択し、 [Select](選択) をクリックして、アセットに ARSessionConfig という名前を付けます。Select ARSessionConfig, click Select, and name the asset ARSessionConfig:

AR セッション構成アセットが強調表示されている [Pick data asset class](データ資産クラス選択) ウィンドウ

  1. ARSessionConfig をダブルクリックして開き、既定の設定をすべてそのままにして [Save](保存) を選択し、メイン ウィンドウに戻ります。Double-click ARSessionConfig to open it, Save with all default settings, and return to the Main window:

AR セッション構成アセットの詳細ウィンドウ

それが完了したら、次のステップとして、レベルが読み込まれたら AR セッションが開始し、レベルが終了したら停止するようにします。With that done, your next step is to make sure the AR session starts and stops when the level loads and ends. さいわい、Unreal には、レベル ブループリント と呼ばれる特別なブループリントがあり、レベル全体のグローバル イベント グラフとして機能します。Luckily, Unreal has a special blueprint called a Level Blueprint that acts as a level-wide global event graph. レベル ブループリントで ARSessionConfig アセットを接続すると、ゲームの再生が開始されたときに AR セッションが正常に起動します。Connecting the ARSessionConfig asset in the Level Blueprint guarantees the AR session will fire right when the game starts playing.

  1. エディターのツール バーから、 [Blueprints](ブループリント) > [Open Level Blueprint](Level ブループリントを開く) をクリックします。From the editor toolbar, select Blueprints > Open Level Blueprint:

[Open Level Blueprint](Level ブループリントを開く) オプションが強調表示されているブループリント メニュー

  1. 実行ノード (左向き矢印アイコン) を Event BeginPlay からドラッグして離しますDrag the execution node (left-facing arrow icon) off Event BeginPlay and release
  • [Start AR Session](AR セッションの開始) ノードを検索し、Enter キーを押しますSearch for the Start AR Session node and hit enter
  • [Session Config](セッション構成) の下にある [Select Asset](アセットの選択) ドロップダウンをクリックし、ARSessionConfig アセットを選択しますClick the Select Asset dropdown under Session Config and choose the ARSessionConfig asset

プレイ開始イベントが AR セッション開始関数に接続されたブループリント グラフ

  1. EventGraph 内の任意の場所を右クリックし、新しい Event EndPlay ノードを作成します。Right-click anywhere in the EventGraph and create a new Event EndPlay node.
  • 実行ピンをドラッグして離してから、 [Stop AR Session](AR セッションの停止) ノードを検索して Enter キーを押しますDrag the execution pin and release, then search for a Stop AR Session node and hit enter
  • [Compile](コンパイル)[Save](保存) の順にクリックして、メイン ウィンドウに戻りますHit Compile, then Save and return to the Main window

重要

レベルが終了しても AR セッションがまだ実行されている場合、ヘッドセットへのストリーミング中にアプリを再起動すると、特定の機能が動作しなくなることがあります。If the AR session is still running when the level ends, certain features may stop working if you restart your app while streaming to a headset.

AR セッション停止関数に接続された EventEndPlay ノード

入力の設定Setting up inputs

  1. [Edit](編集) > [Project Settings](プロジェクトの設定) を編集し、 [Engine](エンジン) > [Input](入力) に移動しますSelect Edit > Project Settings and go to the Engine > Input
  2. [Action Mappings](アクション マッピング) の横にある [+] アイコンを選択して、RightPinch アクションと LeftPinch アクションを作成します。Select the + icon next to Action Mappings and create RightPinch and LeftPinch actions:

右と左のピンチ アクション マッピングが強調表示されているバインド入力設定

  1. RightPinch および LeftPinch アクションをそれぞれの OpenXR Msft ハンド インタラクション アクションにマップします。Map the RightPinch and LeftPinch actions the to the respective OpenXR Msft Hand Interaction actions:

OpenXR Msft ハンド インタラクション オプションが強調表示されたアクション マッピング

ジェスチャの設定Setting up gestures

入力を設定したので、わくわくする部分に進むことができます。ジェスチャの追加です。Now that we have setup the inputs, we can get to the exciting part: Adding gestures! 右ピンチでキューブを回転させ、左ピンチでアプリケーションを終了しましょう。Lets rotate the cube on the right pinch and quit the application on left pinch.

  1. [Level Blueprint](Level ブループリント) を開き、InputAction RightPinchInputAction LeftPinch を追加しますOpen the Level Blueprint and add an InputAction RightPinch and InputAction LeftPinch
  • ターゲットを Cube に設定し、 [Delta Rotation](デルタ回転)X = 0、Y = 0Z = 20 に設定して、右ピンチ イベントを AddActorLocalRotation に接続します。Connect the right pinch event to an AddActorLocalRotation with your Cube as the target and Delta Rotation set to X = 0, Y = 0, and Z = 20. これで、ピンチするたびにキューブが 20 度回転するようになりますThe cube will now rotate by 20 degrees every time you pinch
  • 左ピンチ イベントを Quit Game に接続しますConnect the left pinch event to Quit Game

右と左のピンチ イベントに対する入力アクションが設定された Level ブループリント

  1. キューブの [Transform](変換) の設定で、 [Mobility](モビリティ)[Movable](移動可能) に設定して、動的に移動できるようにします。In the cube's Transform settings, set Mobility to Movable so it can move dynamically:

モビリティ プロパティが強調表示されている変換設定

これで、アプリケーションをデプロイしてテストする準備ができました。At this point, you're ready to deploy and test the application!