ハンドヘルド AR テンプレートは、UE 4.27 以降を使用する Unreal Engine プロジェクトで使用できます。このテンプレートでは、Android および iOS デバイスをターゲットとする AR プロジェクト用の単純なベースが提供され、ユーザーはプロジェクトでのニーズに合わせてそれを変更することができます。
このガイドでは、AR テンプレートに備わっている機能、モバイル デバイスでそれを起動および操作する方法、Unreal Editor で対象機能がある場所について説明します。これにより独自のハンドヘルド AR アプリケーションの作成を開始できます。
1. ユーザー ジャーニーおよび機能の概要
AR テンプレートは、以下の手順に従うユーザー ジャーニーを備えた単純なハンドヘルド AR アプリケーションです。
-
ユーザーがアプリケーションを開く。
-
環境のスキャンを開始するプロンプトをアプリケーションが表示する。続行するにはユーザーがカメラ アクセス許可を提供する必要がある。
-
ユーザーがプロンプトに応答すると、アプリケーションがユーザーのカメラを使用して環境をスキャンし、環境にプレーンを追加することによってバーチャル シーンを定義する。
-
アプリケーションが、操作対象のプレーンをユーザーが選択するためのプロンプトを表示する。
-
ユーザーがプレーンを選択すると、そのプレーン上に仮想オブジェクトを配置できる。
-
仮想オブジェクトが配置されると、ユーザーはさまざまな変換ツールを使用して仮想オブジェクトを操作できる。HUD によって、コンフィギュレーション オプション、AR シーンのスナップショットを撮る機能、およびプレーンの選択に戻るオプションが提供される。
このテンプレートでは以下の機能が示されます。
-
単純なステート マシンで制御されるアプリケーション フロー。
-
環境をスキャンして、次のことのためにデータを収集する。
-
バーチャル シーン内でインタラクティブ プレーンを定義する
-
ライティングおよびシーン深度に関する情報。
-
-
UMG ウィジェットを使用して、カメラでキャプチャされた環境を表示する。
-
バーチャル シーンでのタッチスクリーンベースのインタラクション。
-
仮想オブジェクトを操作する。
-
ユーザーの環境によって定義されているプレーンを選択する。
-
-
さまざまなタイプのインタラクションに対するジェスチャーベースのタッチ入力の使用。
-
さまざまなタイプのアプリケーションをターゲットとするさまざまなスタイル用のオプションを備えた基本的な UI。
-
完全合成された AR シーンから画像をキャプチャし、その画像をカメラ ロールに保存する。
2. 互換性
ハンドヘルド AR テンプレートは、以下の要有効である件を満たすデバイスで機能します。
-
デバイスが Unreal Engine でサポートされている。
-
デバイスで ARKit (iOS) または ARCore (Android) がサポートされている。
現行バージョンの Unreal Engine でサポートされているデバイスの一覧については、「iOS デバイスの互換性」ページおよび「Android デバイスの互換性」ページを参照してください。
ARKit をサポートしている iOS デバイスの一覧については、「Apple Developer ARKit documentation」を参照してください。
ARCore をサポートしている Android デバイスの一覧については、「Google Developer AR documentation」を参照してください。
3. テンプレートを設定する
AR テンプレートを使用するには、そのテンプレートをベースとして使用してプロジェクトを作成してから、対象とするモバイル デバイスでパッケージ化されるようにプロジェクトを設定する必要があります。このセクションでは、そのために必要となる手順について説明します。
- Unreal Editor を開きます。[Select or Create New Project (プロジェクトを選択または新規作成)] メニューで、[New Project Categories (新規プロジェクトのカテゴリ)] まで下にスクロールし、[Games (ゲーム)] を選択してから、[Next (次へ)] をクリックします。
AR テンプレートは、[Architecture, Engineering, and Construction (建築、土木、建設)] カテゴリおよび [Automotive, Manufacturing, and Product Design (自動車、プロダクト デザイン、製造)] カテゴリを使用する場合でも使用できます。
- [Select Template (テンプレートを選択)] メニューで、[Handheld AR (ハンドヘルド AR)] テンプレートを選択します。プロジェクトの [Name (名前)] と [Location (場所)] を選択します。この例では、プロジェクト名は「ARTemplateGame」です。設定が終了したら、[Create Project (プロジェクトを作成する)] をクリックします。
ここまでの手順を終了すると、Unreal Editor でプロジェクトが開かれて、HandheldARBlankMap がデフォルト マップになっています。
4. デバイスでパッケージ化およびデプロイする
プロジェクトの設定を完了するには、モバイル デバイスでパッケージ化されるようにプロジェクトを準備する必要があります。Android と iOS では、プロジェクト設定で必要となる設定手順が異なります。
Android 用の設定
ハンドヘルド AR プロジェクトを Android 用に準備するには、以下の手順に従います。
-
必要とされるバージョンの Android Studio をコンピュータにインストールします。
-
「Engine」フォルダにある AndroidSetup スクリプトを実行して、必要な SDK と NDK のコンポーネントがコンピュータにインストールされていることを確認します。オペレーティング システムによっては、変更内容を反映するためにコンピュータを再起動する必要があります。
-
[Project Settings (プロジェクト設定)] で、Android の設定を見つけ、[APK Packaging (APK のパッケージ化)] にある [Configure Now (今すぐ設定)] ボタンをクリックして、プロジェクトを Android プラットフォーム用に設定します。Android SDK のライセンスにまだ同意していない場合は、[Accept SDK License (SDK ライセンスに同意する)] ボタンもクリックします。
-
デバイスが [Developer Mode (デベロッパー モード)] に設定されていることを確認し、コンピュータとの USB 接続を受け入れるようにセットアップします。
上記の手順の詳細については、「Android Setup」セクションを参照してください。
iOS 用の設定
ハンドヘルド AR プロジェクトを iOS 用に準備するには、以下の手順に従います。
-
最新バージョンの Xcode を Mac にインストールします。
-
プロジェクト用の プロビジョニング プロファイル と 署名証明書 を Apple Developer Portal から取得します。
- プロビジョニング プロファイルには、ターゲットとなるデバイスのカメラを使用するためのアクセス許可が付与されている必要があります。
-
[Project Settings (プロジェクト設定)] を開いて、プロビジョニング プロファイルと署名証明書をインポートします。
上記の手順の詳細については、「iOS セットアップ」セクションを参照してください。
パッケージ化と起動
使用するモバイル デバイスをサポートするために必要な設定を行ったら、[File (ファイル)] > [Package Project (プロジェクトをパッケージ化)] をクリックし、該当するデバイス用のパッケージ化オプションを選択することで、プロジェクトをパッケージ化することができます。そうすると、後でデバイスにデプロイできる、パッケージ化されたビルドが作成されます。
デバイス上でメイン ツールバーにある [Launch (起動)] ドロップダウンをクリックし、表示されるデバイスの一覧からデバイスを選択することで、直接起動することもできます。デバイスが接続されていることを確認するには、[Device Manager (デバイス マネージャー)] メニューでデバイスのステータスをチェックします。次に、エンジンはプロジェクトを自動的にパッケージ化し、起動する前にデバイスにプッシュします。
5. アプリケーションの操作
このセクションでは、ハンドヘルド AR テンプレートのすぐに使えるコンフィギュレーションのユーザー ジャーニーについて順を追って説明します。
スキャンおよびオブジェクト配置
ハンドヘルド AR テンプレートが起動すると、ユーザーのデバイスのカメラを使用して周囲の環境を表示します。環境をスキャンするためのプロンプトがユーザーに表示されます。
[Begin Scan (スキャンを開始する)] ボタンをクリックすると、スキャンが開始されます。そうすると、仮想オブジェクトの 3D シーンを構築するために必要なデータが収集されます。
アプリケーションは、写真を撮り、ビデオを録画するためのアクセス許可を許可するようにユーザーに求めます。これらのアクセス許可は、カメラが環境をスキャンして表示するために必要です。
モバイル デバイスでスキャンが完了すると、アプリケーションはいくつかの プレーン を表示し、画面上でタップしていずれかのプレーンを選択するようにユーザーに求めます。プレーンは、ディスプレイ面に色付きの波状曲線で表示されます。アプリケーションは、ビジュアル ノイズを軽減するために、一度に 1 つのプレーンだけを表示し、最も近くにあるプレーンのみを可視に設定します。
ユーザーがプレーンを選択すると、下部にツールバー UI が表示されるので、ユーザーは仮想オブジェクトを配置できます。
テンプレートでは、一度に 1 つの仮想オブジェクトを配置できますが、このオブジェクトを配置するワークフローを使用して、独自のアプリケーションにある他のオブジェクトを配置することもできます。
オブジェクトを操作する
ハンドヘルド AR テンプレートでは、ユーザーがタッチスクリーンを使用して仮想オブジェクトを 移動、スケーリング、または 回転 することができます。
オブジェクトを移動するには、オブジェクトをタップし、配置する位置の地面に沿ってドラッグします。1 本の指でタッチすると、移動の HUD が表示されます。オブジェクトは、配置されているプレーンの境界内に限定されています。オブジェクトを移動し始めると、HUD に境界が表示されます。
オブジェクトをスケーリングするには、親指と人さし指でオブジェクトをつまむかまたは広げます。テンプレートでは、画面の向きを基準として主に縦方向のピンチが認識されます。スケーリングすると、オブジェクトの新しいサイズ (センチメートル単位) が UI に表示されます。
オブジェクトを回転するには、画面上に 2 本の指を置き、左または右にスワイプします。回転すると、画面の向きを基準として主に横方向のスワイプおよびドラッグが認識されます。そうすると、オブジェクトのベースを中心とする円と、ワールドでの現在の回転 (度単位) が回転の HUD に表示されます。
UI およびメニューを操作する
デフォルトでは、ハンドヘルド AR テンプレートの UI は画面の下部に表示されています。ツールバーおよび左下隅にフロート表示の [Info (情報)] ボタンがあります。
スナップショット
[Snapshot] ボタンをタップすると、画面に表示されている仮想オブジェクトの写真が撮られて、カメラ ロールに保存されます。[Snapshot Saved (スナップショットが保存されました)] とプロンプトが表示されるので、正常にスナップショットが撮られたことを確認できます。
4.27 以降のハンドヘルド AR テンプレートでは、Android ではスナップショットがカメラ ロールに保存されますが、iOS では保存されません。
リセット
[Reset (リセット)] ボタンをタップすると、仮想オブジェクトが除去されて、プレーン選択のプロンプトに戻ります。
オプション メニュー
[Options (オプション)] ボタンをタップすると、コンフィギュレーション オプションのメニューが開きます。
[Snapping (スナップ)] をタップするとスナップのオン/オフが切り替わり、オンであれば、移動またはスケーリングの操作時には、仮想オブジェクトが 1cm 刻みでスナップされ、回転の操作時には、5 度刻みの角度でスナップされます。
[Interact HUD (インタラクト HUD)] をタップすると HUD のオン/オフが切り替わり、オフであれば、画面を操作するまで HUD がオフになります。これにより、アプリ内からきれいなスクリーンショットを撮ることができます。
[UI Style (UI スタイル)] セレクタは 3 つの UI スタイルを切り替えます。[Light (ライト)] および [Dark ()] のスタイルでは、画面の下部にデフォルトの UI とツールバーが表示されます。[Game (ゲーム)] スタイルでは、すべてのツールが横並びではなく円形に並んで、より定型化された HUD が表示されます。[Game] スタイルでは、[Light] および [Dark] のスタイルと同じ機能とフローがすべてサポートされていますが、それらを使用するためのレイアウトが異なっています。
Info メニュー
[Info] メニューをタップすると、仮想オブジェクトを操作するためのジェスチャーの簡単なビジュアル ガイドが表示されます。
6. テンプレートのクイック リファレンス
ハンドヘルド AR テンプレートのすべてのアセットは、コンテンツブラウザの「Handheld AR」フォルダに置かれています。Handheld AR テンプレートでは主に以下のアセットが使用されます。
アセット名 | パス | 要約 |
---|---|---|
BP_ARGameMode | HandheldAR/Blueprints/GameFramework/BP_ARGameMode | ハンドヘルド AR テンプレートで使用されているゲーム モード。AR ポーンを初期化します。 |
BP_ARPawn | HandheldAR/Blueprints/GameFramework/BP_ARPawn | ハンドヘルド AR テンプレートの Pawn クラス。HUD を初期化し、バーチャル シーンのセットアップおよびユーザーからの入力を処理します。 |
BP_MainMenu | HandheldAR/Blueprints/UI/BP_MainMenu | ハンドヘルド AR テンプレートのメイン UI。他のメニューを制御し、カメラからの AR シーンを初期化します。 |
BP_Plane | HandheldAR/Blueprints/Placeable/BP_Plane | 配置可能なオブジェクトを配置できるプレーン。これらは、環境がスキャンされた後に、AR ポーンによって設定されます。 |
BP_Placeable | HandheldAR/Blueprints/Placeable/BP_Placeable | ユーザーが操作できる配置可能なオブジェクトの基本ブループリント クラス。 |
これらのアクタの詳細、および主要な機能がどこに記載されているかについては、「ハンドヘルド AR テンプレート リファレンス」ページを参照してください。
7. 応用編
ここまでで、ハンドヘルド AR テンプレートをセットアップしたので、モバイル デバイス上でテンプレートを調べることができ、独自のハンドヘルド AR アプリケーションを開発するための出発点として使用し始めることができます。このテンプレートで使用されているクラス、およびそれらのクラスをどのように変更できるかについては、「ハンドヘルド AR テンプレート リファレンス」ページを参照してください。