オブジェクトの配置 (実験的)
シーンの動作について
Snapdragon Spaces SDK 1.0.1において、このサンプルは正常に動作しないことが確認されました。
Snapdragon Spaces SDK 1.0.1で正常に動作するように更新されるまで、お待ちください。
Snapdragon Spaces SDK 0.23.2では、正常に動作することを確認済みです。
概要
WARNING
空間アンカーの仕様により、オブジェクトを配置する際に意図しない配置がされてしまう問題を抱えているため、このサンプルは実験的とされています。
このサンプルは、空間アンカー機能を用いて、オブジェクト(例として家具)を最適な位置に配置されるよう調整します。
詳細
Unityプロジェクトのセットアップ
1. Snapdragon Spaces SDKのインポート
-
まだ、Snapdragon Spaces SDKをインポートしていない場合はインポートします。
- 基本パッケージ
- ハンドトラッキングのパッケージ (※ハンドトラッキングのUIを使用しているため必要です)
-
以下のサンプルのパッケージもインポートする必要があります。
- 基本サンプル
- ハンドトラッキングのサンプル (※ハンドトラッキングのUIを使用しているため必要です)
2. 機能の有効化
この機能を使用するには、以下のOpenXRのプロジェクト設定でSpatial Anchorsにチェックする必要があります。
Project Settings > XR Plug-in Management > OpenXR (Androidタブ)
3. QONOQサンプルのインポート
-
以下のUnityパッケージをダウンロードします。
-
ダウンロードしたUnityパッケージをUnityEditorの
Project
タブにドラッグ&ドロップします。 -
サンプルが、Unityプロジェクトにインポートされます。
4. シーンのセットアップ
- Projectの
Assets/Samples/QONOQ/Scenes/Object Placement/Object Placement
シーンを選択します。 - Big Furniture Pack等の任意の3Dモデルを用意します。
- シーン内の
Sample Assets/Object Placement Controller
オブジェクトを選択します。 - Object Placement ControllerコンポーネントのPlace Objectに、任意の3Dモデルのプレハブを登録します。
- シーンをビルドします。
アプリの使用方法
- スマートフォンのタッチパッドに触れて、オブジェクトを出現させます。
- タッチパッドに触れたまま指を左右に動かすことで、オブジェクトを回転させます。
- タッチパッドに触れたまま指を上下に動かすことで、オブジェクトを拡大させます。
- タッチパッドから指を離すと、オブジェクトはその位置に固定されます。
サンプルの仕組み
オブジェクトの位置決め方法
- ARオブジェクトの位置決めには、「Place anchor on surfaces(平面にアンカーを配置)」を有効にした空間アンカー機能を利用しています。
- この機能を利用することで、現実の床にARオブジェクトがめり込まずに、整合性を持った位置に配置出来ます。
オブジェクトの回転方法
ObjectPlacementController.cs
スクリプト内では、以下のようにタッチパッドに触れる座標を元にオブジェクトを回転させています。
InputActionReference TouchpadInputAction;
var rotY = TouchpadInputAction.action.ReadValue<Vector2>().x;