こんにちは、ナレコム前川です!
今回は、MixedRealityToolkit の SpatialMappingComponent をご紹介します。
MixedRealityToolkit の導入方法について コチラ で説明しているので、導入をしていない方は参照してください。
SpatialMappingComponent
SpatialMappingComponent では、SpatialMappingRenderer と SpatialMappingCollider という
Unity のコンポーネントに備わっている SpatialMapping を用いて衝突判定を行い、
仮想のオブジェクトを現実世界に配置する方法を示しています。
SpatialMapping は、メッシュを生成し、周辺の平面や凹凸などを判別します。
それによってオブジェクトを床に配置することなどが可能になります。
それでは、進めていきましょう。
まず、[Project] パネルから [HoloToolkit-Example] -> [SpatialMappingComponent] の順に選択し、
[SpatialMappingExample] をクリックしてください。
次に、[Hierarchy] パネルから [Main Camera] を選択してください。
このオブジェクトは、HoloLens のカメラを管理するものです。
[Inspector] パネルに [SpatialMappingCollider]、[SpatialMappingRenderer]、[Drop Cube] が
あるのを確認してください。
3つのスクリプトについて説明していきます。
① [SpatialMappingCollider] スクリプトは、SpatialMapping により得られる空間メッシュと
オブジェクトとの物理衝突を判定する際に用います。
ここでは、スクリプトをメインカメラと関連付けています。
② [SpatialMappingRenderer] スクリプトは、SpatialMapping の空間メッシュをレンダリングします。
③ [Drop Cube] スクリプトは、キューブを落とすスクリプトです。
ここでは、タップで小さなキューブを作り、キューブが生成されるサイズや位置を決めて
重力をつけることで床に落ちるように設定しています。
続いて、[Hierarchy] パネルから [StaticPlaySpaceLocation] を選択してください。
[Inspector] パネルに [SpatialMappingCollider] スクリプトがあることを確認できると思います。
ここでは、キューブである StaticPlaySpaceLocation にスクリプトを関連付けし、
キューブと空間メッシュの衝突判定を行っています。
それでは、実行していきましょう。
配置とビルド
いつも通り配置とビルドを行います。
配置とビルドに関しては、HOLOLENS 5つのビルド方法を参照してください。
実行してみると、視線の先に大きな白いキューブが現れます。
部屋を見渡していると、白いキューブはいつのまにか消えていました。
空間をタップしてみると、ピンクのキューブが生成され、
床の上にきちんとキューブが落ちることを確認できると思います。
これは、SpatialMapping で床面のメッシュが生成できているためです。
実行動画はコチラです。
以上です。お疲れ様でした。