ARPin ローカル ストレージ クイックスタート

Unreal Engine 内で仮想コンテンツをアタッチ可能な、実世界の固定位置を AR 内に設定する方法を学びます。

Windows
MacOS
Linux
参照

このクイックスタートガイドでは、Unreal で仮想コンテンツをアタッチ可能な、実世界の固定位置を AR 内に設定する方法を説明します。このガイドでは、HoloLens をプラットフォームとして使用します。

このガイドを読むと、次の方法がわかります。

*ARPin をローカル デバイスに保存する方法

  • ローカルの ARPin を削除する方法

*ローカルの ARPin をロードする方法

開始する前に、プロジェクトが AR 用に設定されていることを確認してください。先に進む前に「AR プロジェクトを設定する」を参照してください。

ARPin のローカル ストレージは特定のプラットフォームでのみ機能します。4.26 以降では、Windows Mixed Reality プラグインと Microsoft OpenXR プラグインなどの一部の OpenXR 拡張プラグインがサポートされています。プラットフォームのサポートに関する詳細については、「ARPin」のドキュメントを参照してください。

ステップ 1 - ARPin の追加と保存

次の手順に従って、3D 空間に仮想オブジェクトをスポーンし、そのデータを ARPin で保存します。それには、まず SpawnActor 関数 を設定してから、それを Pin Component に接続して、オブジェクトを特定の場所に固定する必要があります。

このガイドでは、HoloLens プラットフォームによって提供されるユーザーの手の位置をスポーン位置として使用します。HoloLens のモーションコントローラー情報にアクセスできるようにするには、次の手順を実行します。

  1. ブループリント エディタの ARPawn に Motion Controller コンポーネントを追加します。

    add motion controller component

  2. [Details (詳細)] パネルで、ピンを配置している手と一致するように、[Motion Source (モーションソース)][Right (右)] に設定します。

    motion controller details

スポーンアクタ関数を設定する

次の手順に従って、スポーンアクタ関数を設定します。このセクションでは、仮想コンテンツに ピン オブジェクト と呼ばれるカスタム ブループリントアクタ を使用します。

  1. プロジェクトのポーン をダブルクリックして、それを ブループリント エディタ で開きます。

  2. ブループリント エディタの [Event Graph (イベント グラフ)] タブを右クリックして、次の名前で関数を検索して追加します。

    • Is ARPin Local Store Supported

    • Is ARPin Local Store Ready

      searching for AR Pin nodes

  3. AND 論理ノードへの入力として、2 つの関数からのブールの戻り値を使用します。AND ノードの結果を Branch ノードに接続します。この設定では、ARPin 関数を実行する前に、両方のシナリオが真であることを確認します。

    adding boolean and branch to blueprint

  4. Branch ノードから、SpawnActor from Class 関数を追加します。次に、ノードの Class パラメータを Pin Object に設定します。

  5. Make Transform 関数を追加して、スポーン位置を基準にしてオブジェクトがスポーンされるローカルトランスフォームを指定します。ワールドトランスフォームは後ほど指定されるため、ローカル空間はデフォルト値のままにしておきます。

    adding make transform function

    プロジェクトに入力アクションを追加する方法の詳細については、一般的な入力アクションについては「Input (入力)」を参照してください。

Pin Component を追加する

次の手順に従って、前のセクションでスポーンされたオブジェクトを固定します。SpawnActor from Class 関数は、 オブジェクト を返します。ただし、Pin Component 関数は シーン コンポーネント を想定しています。オブジェクトを固定するために、オブジェクトのトランスフォームを定義するシーン コンポーネントであるオブジェクトの RootComponentRootComponent を取得してください。

  1. Pin Component 関数を追加します。

  2. SpawnActor ノードの Return Value (戻り値) ピンから、Get Root Component を選択します。

    adding get root component

  3. イベント グラフを右クリックして、オブジェクトを固定する場所を保持する変数を検索します。そして、HoloLens の手の位置をスポーンするには、Get Motion Controller を検索します。その後、それをグラフに追加します。

  4. 変数を Target として関数 GetWorldTransform に渡します。次に、関数の Return ValuePin Component ノードの Pin to World Transform 入力に渡します。 ワールド トランスフォームは、コンポーネントが固定されるワールド空間の場所を定義します。

    adding world transform and pin componenets to blueprint

  5. 関数 Save ARPin to Local Store を追加し、ARPin Object Reference を渡します。これは、Pin Component によって Save ARPin to Local Store ノードの In Pin 入力に返されます。この際、各ピンの保存名が一意になっていることを確認してください。次に、ワールド トランスフォームを String に変換して、保存名を設定します。

    adding save AR pin to local store function

  6. AR デバイスでアプリを実行します。選択 (R) アクションを実行すると、ピン オブジェクトが表示され、ARPin Local Store が ARPin のエントリを追加します。

    example of adding and removing objects in AR

 [REGION:tip]
  HoloLens の場合、Windows デベロッパー ポータルでローカルに保存されているすべてのピンを表示できます。

![saved pins in Windows Developer Portal](image_11.png)(w:624 h:378 convert:false)
 [/REGION]

ステップ 2 - ARPin を削除する

以下の手順に従って、ローカル ストレージから ARPin を削除し、それらに関連付けられている仮想コンテンツを破棄します。

  1. Get All Pins を呼び出し、 For Each Loop ノードを追加して、返された ARPin の配列を反復処理します。

    add a for each loop node to blueprint

  2. ピン留めされたコンポーネントの更新を停止するには、Remove Pin 関数を追加します。

    add remove pin function

  3. 関数 Destroy Actor を追加して、仮想ピン オブジェクトを削除します。そして、Get Pinned ComponentGet Owner を呼び出して、ARPin とその固定されたシーン コンポーネントからアクタを取得します。

    adding destroy actor

  4. すべての ARPin を反復処理し、固定されたコンポーネントを破棄した後、Remove All ARPins from Local Store 関数を追加して、保存されているすべてのピンをローカル ストアから削除します。

    adding remove all AR pins from local store function

  5. AR デバイスでアプリを実行します。AR デバイスでアプリを実行します。選択 (L) アクションを実行すると、ピン オブジェクトが消え、ARPin ローカル ストアが ARPin のエントリを削除します。

    adding objects to the AR environment

ステップ 3 - ARPin をロードする

次の手順に従って、アプリの前のセッションでデバイスに保存されたすべての ARPin をロードし、ARPin の仮想コンテンツを再度スポーンします。

  1. Load ARPins from Local Store を呼び出して、デバイスにローカルに保存されているすべての ARPin にアクセスします。

    add local AR pins from local store node

  2. Load ARPins from Local Store は、ARPin 名のマップを返します。マップ内のアイテムを反復処理するには、Values 関数を使用してマップを配列に変換します。配列内のすべてのアイテムにアクセスするには、For Each Loop ノードを追加します。

    adding for each loop node

  3. Loop Body で、デフォルトの Make Transform 関数を使用して SpawnActor from Class を呼び出します。スポーンされる場所からオブジェクトをオフセットする場合以外は、トランスフォームのデフォルト値を使用してください。

    adding spawn actor from class node

  4. Get Root Component で返されたオブジェクトを シーン コンポーネント に変換し、Pin Component to ARPin に渡します。

    adding pin component to AR pin

  5. AR デバイスでアプリを実行し、いくつかの ARPin を作成します。そして、アプリを再起動すると、アプリの起動時に以前に作成したすべてのピンが同じ場所に表示されます。

    current pins in AR environment loaded pins in AR environment

    ロードされたピンを新しく作成されたピンと区別するために、オブジェクトに異なるマテリアルを使用しています。

4 - 応用編

このガイドでは、デバイスにローカル保存される ARPin を作成しました。Azure などのクラウド コンピューティング サービスを使用して保存され、複数のデバイスやプラットフォーム間で共有できるピンを作成するには、「Unreal Engine の Azure Spatial Anchors」に関する Microsoft のドキュメントを参照してください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる