初級チュートリアル: 基本の配置
このチュートリアルではARDKの既製のマネージャーを用いてシンプルな例を作成し、床や壁にオブジェクトを設置していきます。
ARDKには各種機能の起動および構成を行える複数のマネージャーが用意されています。この例では配置マネージャーといくつかのヘルパーを使用します。
これを行うにはARDK使用例パッケージ(少なくとも一般セクション)のインポートが必要です。
注釈
動画で使用しているモッキングシステムはARDK 1.3で更新されています。モックモードの変更点の詳細については、その他の モックモードの動画 をご参照ください。
準備
このチュートリアルは、ARDKとARDK使用例のパッケージをインポートし、デバイス上でプロジェクトを実行するように設定された、動作中のUnityシーンがあることを前提としています。まだパッケージをインポートしていない場合は、プロジェクトビューで次の操作を行います。
アセットフォルダを右クリック > Import Package(パッケージのインポート) > Custom Package(カスタムパッケージ) > ダウンロードしたARDKパッケージを選択 > Import All(すべてインポート) の順に選択
アセットフォルダを右クリック > Import Package(パッケージのインポート) > Custom Package(カスタムパッケージ) > ダウンロードしたARDK使用例パッケージを選択 > Import All(すべてインポート) の順に選択
AndroidまたはiOSをビルドするためのビルドとプレイヤーの設定を更新します。
詳細については、 ARDKを使い始める ページをご参照ください。
手順
新しいシーンを作成する。
プロジェクトビューのシーンセクションで、フォルダを作成(右クリックして、Create(作成) > Folder(フォルダ) の順に移動)し、「placement」と名前を付けます。
そのフォルダに新しいシーンを作成(右クリックして、Create(作成) > Scene(シーン) の順に選択)し、「PlacementTutorial」と名前を付けます。
カメラをセットアップする。
ARCameraPositionHelper コンポーネントをカメラに追加します。
カメラに ARRenderingManager を追加します。
追加したコンポーネントで カメラ 変数を メインカメラ に設定します。
カメラの背景を無色にして黒に設定します。
すべての位置ヘルパーおよびレンダリングマネージャーにカメラが設定されていることを確認してください。
セッションマネージャーを追加する。 セッションマネージャーがARセッションのセットアップを処理します。
シーンに空のゲームオブジェクトを追加してセッションマネージャーを呼び出します。
セッションマネージャーのスクリプトコンポーネントをセッションマネージャーに追加します。 Add Component(コンポーネントを追加) をクリックして「ARSessionManager」を探してください。
注釈
セッションマネージャーがシーンのカメラの親に設定されていることが頻繁にあります。この関係は必須ではなく、シーン階層は自由に設定可能です。
オブジェクトを設置するためにプレーンマネージャーを追加する。
ARプレーンのスクリプトコンポーネントをセッションマネージャーに追加します。 Add Component(コンポーネントを追加) をクリックして「ARPlaneManager」を探してください。このマネージャーには、シーン内のARオブジェクトを保存およびトラッキングするために必要なすべてのロジックが含まれています。
このマネージャーにより、プレーンに基づく配置が可能になります。
AR空間に配置したアイテムの位置を保存しておくディクショナリーがこれに含まれています。
これがアンカーに配置/更新されたイベント用のフックを追加し、アイテム配置の管理と更新を行ってアイテムをワールドに固定します。つまり、すべての配置イベントを捕らえ、ワールドの更新に合わせてオブジェクトの変化を更新することで物の位置を一定に保ちます。
ARDKに慣れてきたら ARPlaneManager の仕組みを詳しく確認してみるのもよいですが、ひとまずはそのまま使用しましょう。
Androidのカメラ権限のセットアップ。
Android向けに開発する場合、セッションマネージャーにAndroid承認ヘルパーを追加しましょう。 サイズ を1に設定し、ドロップダウンに カメラ があることを確認してください。これにより、実行時にアプリがユーザーに対してカメラ使用の許可を求めるようにできます。
ARカーソルレンダラースクリプトをコンポーネントとしてセッションマネージャーオブジェクトに追加する。
Add Component(コンポーネントを追加) をクリックしてARカーソルレンダラーを探してください。このコンポーネントはARDK使用例パッケージの中にあります。 このコンポーネントは小さなキューブを地面に追加して更新していき、これはカメラからの直線上に位置します。そのために ARSession のスタートアップに接続して FrameUpdated イベントにコールバックを追加します。そしてカメラの前方ベクターから投影されたラインを使用し、ARFrameに対するヒットテストを毎フレーム実行します。ヒットを検知すると、その場所まで小さなキューブを動かします。
ARカーソルレンダラーのカメラフィールドがシーンカメラに設定されていることを確認してください
3dカーソルにするオブジェクトを選択します。 カーソルオブジェクト をクリックし、 アセット タブを選択して小さなキューブを探してください。
注釈
コンポーネント/スクリプトが見つからない場合はスクリプトを手動でオブジェクトにドラッグするか、使用例パッケージをインポートした際に検索データベースの更新が行われていない可能性があるため、保存してからUnityの再起動をお試しください。
ARヒットテストをコンポーネントとしてセッションマネージャーオブジェクトに追加する。
このスクリプトはユーザーのスクリーンタッチを処理してプレーン上のその場所にプレハブを設置します。これは SessionInitialized イベントに接続され、 ARSession にリファレンスを保存します。その更新ループ内でタッチイベントの確認が行われます。この際、その2d地点でヒットテストが行われ、現在のARフレームとの交わりがあるかを確認します。交差がある場合、シーンのその場所にプレハブを配置します。プレハブは好きなものを使用できます。このチュートリアルではキューブを使用しましたが、キャラクターなどの配置も可能です。
カメラフィールドがシーンカメラに設定されていることを確認してください。
注釈
配置コードはユニットキューブを想定しているため、オブジェクトが浮遊する場合があります。ARDKにもっと慣れてきたら、改めてコードのこの部分をカーソルレンダラースクリプトでのヒットテスト用コードに入れ替えることも可能です。
Unityエディターで実行する。
この段階でエディター内でプロジェクトを実行しても、スカイドームしかない状態になっています。次のステップではモッキングシステムをセットアップし、携帯電話上でのビルドおよび実行の前にテストを行うためのエディタージオメトリを用意します。
モッキングシステムをセットアップする。
ARDKのダウンロードページ からARDKのモック環境パッケージをダウンロードし、ダウンロードしたパッケージをUnityプロジェクトにインポートします。
Lightship > ARDK > バーチャルスタジオ ウィンドウの順に移動してMockタブを開き、 Mock Scene(モックシーン) のドロップダウンから、「LivingRoom」プレハブを選択します。Unityエディターで実行すると、このプレハブは自動的にシーンにインスタンス化されます。
モックシーンを使ってUnityエディターで実行する。 これでシーンのプレーンにオーバーレイエフェクトが適用され、オブジェクトを配置できるようになりました。いずれかの表面をクリックすれば、ゲームオブジェクトがそこに配置されます。
デバイス上で実行する。
iOSの場合:
File(ファイル) > Build & Run(ビルドと実行) 。これでビルドが行われ、UnityアプリのiOSプロジェクトを用いてXCodeが起動します。
XCodeではデバイス上でビルドおよび実行してください。
iOSでのビルドと実行に関する詳細は : iOS向けのビルド をご参照ください。
Androidの場合:
File(ファイル) > Build & Run(ビルドと実行) 。これにより、接続されたAndroidデバイス上でアプリが起動します。
画面に何も表示されない場合、いくつかの携帯電話のBlit TypeをAutoに設定する必要があります。File(ファイル)> Build Settings(ビルド設定) から**Player Settings(プレイヤー設定)** をクリックし、 Resolution and Presentation(解像度と表示)にある Blit TypeをAutoに設定してください。
Androidでのビルドと実行に関する詳細は : Android向けのビルド をご参照ください。
ブラックスクリーンや他の問題のトラブルシューティング
基本セットアップガイドに正しく従っていることを確認してください。これで問題の原因である可能性が高いアプリケーション署名および承認に対処できます。
アプリケーションがクラッシュする、または正しく機能しない(カメラ出力がない)場合は、ゲームオブジェクトの
Camera
やPrefab
といった変数がすべて設定されていることを確認してください。このチュートリアルは ARDK使用例 パッケージのコンポーネントの一部を使用するため、そちらのインポートも必ず行ってください。