SnowballToss:メッシングとオクルージョン
ARDKのメッシング機能を使って現実世界の環境のメッシュをリアルタイムに生成する方法を実演します。シーンはその後、ARDKメッシュを利用した仮想オブジェクトの配置、衝突の検知、オクルージョン機能を紹介します。
概要
説明の後でアプリがデバイスのカメラを起動し、プレイヤーは周囲をスキャンするよう促されます。これによってアプリは周囲の環境の3Dメッシュを作成できるようになります。デバイスにLiDARが搭載されていると、できあがるメッシュの品質が上がります。スキャンを視覚化するために環境ジオメトリの特徴点も表示されます。
充分なメッシュが見つかると、環境内の開けたエリアに雪に覆われた氷のリングが出現し、環境ジオメトリに影を落とします。画面最下部付近に雪玉のついたボタンが表示され、これを押すと雪玉が前方に投げられます。この雪玉は雪のリングおよび/または環境ジオメトリに衝突し/跳ね返り/破裂し、溶けていく雪の粒子またはその場に残る雪玉の残骸を残します。
メッシュのスキャンはゲーム中も継続し、既存の雪のリングとぶつかる新たなメッシュが見つかるとそのリングはなくなります。
画面上部に45秒のゲームタイマーとプレイヤーの累積スコアが表示されます。スコアは投げた雪玉がリングをくぐるたびに100点加算されます。
使用中のARDK機能
ARSceneManager
ARMeshManager
- AR環境メッシュの検知を管理します。これには検知されたメッシュと合致するMeshCollliderChunkジオメトリオブジェクトのインスタンス化と破壊も含まれますMeshColliderChunks
- 他の仮想アセットにオクルージョンを適用しますが、透明なカスタム素材を使用します注意:他のシーンでは
ARDepthManager
を用いてオクルージョンが適用されます
追加のヘルパー
ARFeaturePointHelper
- メッシュのスキャンプロセスを視覚化ARMeshFloorFallback
- フォールバックメッシュ フロアプレーンSnowballTossDebugManager
- シーンのデバッグ機能を管理
ステート
StateInstructions
インストラクションを表示するUI
StateWarning
ARの使用に関する警告を表示するUIです。アプリの実行につき1回だけ、ユーザーが初めてARSessionに入る前に表示されます。
StateScanning
デバイスのカメラが起動し、プレイヤーは周囲をスキャンするよう促されます。これによってアプリは周囲の環境の3Dメッシュを作成できるようになります。デバイスにLiDARが搭載されていると、できあがるメッシュの品質が上がります。スキャンを視覚化するために環境ジオメトリの特徴点も表示されます。
StateCountdown
投げるゲームの開始前にアニメーション付きの3秒間のカウントダウンが表示されます。
StateTossing
雪玉を投げて雪のリングに入れる45秒間のゲーム。雪のリングは同時に3つまで出現し、リングは15秒後には自動的に効力を失います。Snowringクラスでは SearchVectorForValidRingPlacement
メソッドが環境をセクターに分割し、プレイヤーの周囲の何もない空間に雪のリングを分配しようとします。この時、プレイヤーに近い正面側の空間が優先され、 Physics.OverlapSphereNonAlloc
を使用して何もないエリアのテストが行われます。性能を維持するため、時間が経つと環境サーチが実行されます。
StateGameOver
UIがプレイヤーの最終スコアとリスタートの選択肢、またはマップへ戻る選択肢を表示します。
エディター専用のモックサポート
ARDKアプリケーションをエディターで開発する際、デバイスへのビルドが常に求められることを避けるため、Unityエディター内で機能するARアセットのモックバージョンを使用すると便利です。各シーンのモックオブジェクトはシーンのMockScene GameObjectにアタッチされます。このオブジェクトにはMockSceneConfigurationコンポーネントがあり、Unityエディター外ではこれによってそのオブジェクトは破壊されます。
このシーンのMockSceneオブジェクトに含まれるもの:
モック環境メッシュ