今回は、空間マッピングを利用したプログラムの作成方法について解説します。

空間マッピングは、HoloLensが室内環境をスキャンし、室内の状況を認識する機能です。今回のサンプルでは、ハート型のオブジェクトを上から落とします。最初は、ハートが部屋の床をすり抜けていきますが、しばらくすると「空間マッピング」が機能し、ハートが積み重なるように溜まっていきます。例えば机のような障害物があれば、その上部にもハートが積み重なっていきます。

第3回で触れた「HoloToolkit-Unity」を利用しますので、今回も用意してください。

プロジェクトの作成

Unityを起動して新しいプロジェクトを作成します。今回は「SpaceMapping」という名前にしました。Unityの画面のレイアウトは、第3回で設定した「2 by 3」の表示になっていると思います。このレイアウトのままで進めます。

Asset Storeの使い方

初めに「Asset Store」の使い方を解説します。今回使用するAssetは「Mobile Power Ups Free Vol.1(無料)」です。Unityメニューの「Window→Asset Store」と選択すると、Unity内に「Asset Store」が表示されます。

Unity内に「Asset Store」が表示された

初めて「Asset Store」に入った場合は、Sign Inを求められるかもしれません。その時は、作成しておいたアカウントのメールアドレスとパスワードでSin Inしてください。

初期の表示では、UnityのScene画面のなかに「Asset Store」が表示されて全体が見渡しづらいため、全画面で表示させてみましょう。「Asset Store」というタブ上で右クリックをすると、下図のようなメニューが表示されるので、「Maximize」を選択します。

Asset Storeタブ上でマウスの右クリックをして表示されるメニューから「Maximize」を選択する

Asset Storeが全画面で表示された。表示を戻したい場合は、「Maximize」についているチェックを外せばもとに戻る

「Mobile Power Ups Free Vol.1」を探すには検索機能を利用するのが便利です。検索欄に「Mobile Power」と入力して「虫眼鏡」アイコンをクリックしてください。「Mobile Power」に該当するAssetsの一覧が表示されます。

「Mobile Power」に関するAssetsの一覧が表示された

Import作業

赤で囲った「Mobile Power Ups Free Vol.1」を選択すると、Import画面が表示されます。初めてこのAssetsを使用する場合は、「Import」ではなく「Download」と表示されます。一度Downloadすると、次回からはImportと表示されるようになります。筆者は既にDownloadは終わっているため、Importと表示されています。

Import画面が表示された

Importボタンをクリックすると、少し経ってから「Import Unity Package」の画面が表示されます。

Import Unity Package画面が表示された。Importをクリックする

UnityのPackageのImportにも少々時間がかかります。Importが完了したら、「Asset Store」の画面の全画面を解除して元の画面に戻し、Scene画面を表示してください。Projectの中にフォルダが作成され、必要なファイルが入っています。

Projectの中に「Asset Store」からImportしたファイルが追加されている

Assetの配置

第3回でも紹介したように、「HoloToolkit-Unity」のAssetフォルダ内にあるフォルダとファイルを全選択し、Unityの「Project」のAssetの上にドラッグ&ドロップしてください。一連のImport作業にはかなりの時間がかかりますので、気長に作業を進めてください。最終的には、下図のようなフォルダ構成となります。

Project内に「HoloToolKit-Unity」と「Mobile Power Ups Free Vol.1」が取り込まれた

オブジェクトの色変更

第3回と同様に、いったんHierarchy内の「Main Camera」を削除して、再度「Main Camera」を設定します。「Project」の下にある「Create」の右横にある検索欄に「Camera」と入力すると、新しい「Main Camera」がAssetの中に表示されますので、Hierarchy内にドラッグ&ドロップしてください。

次に、Projectの「Assets→PowerUps Vol 1 Free→Prefabs」と選択して、「Heart Purple.prefab」をScene上にドラッグ&ドロップしてください。ハートが小さく表示されますが、マウスホールで拡大してください。拡大しすぎると画面から外れるため、その場合は右クリックしたままScene画面上をドラッグしながら位置を調整してください。「Heart Purple」には3本の矢印が表示されていますので、この矢印でGame画面を見ながら位置を調整してください。「Main Camera」は配置されている位置から絶対に動かさないようにしましょう。

「Heart Purple」は紫色が設定されているため、赤に変えてみましょう。Materialsというフォルダがありますので、その中から「Medipack Red.mat」を選択し、Scene上の「Heart Purple」上にドラッグ&ドロップしてください。また、Hierarchyから「Heart Purple」を選択して、Inspector内のTransformのScaleの「X、Y、Z」に「0.5」と指定して、少しサイズを小さくしておいてください。

Heartの色をMedipack.Red.matに指定し、サイズも0.5にした

「Heart Purple」が「赤いハート」に変わりますが、名前は最初のHeart Purpleのままで進めます。

Prefabの作成

Prefabは、再利用可能なゲームオブジェクトで、プロジェクトのAssetフォルダにドラッグ&ドロップするだけで、Prefab化されます。Prefabは1つのシーンに複数追加できるほか、複数のシーンにも設定できます。Hierarchy内の「Heart Purple」をProjectのAssetフォルダにドラッグ&ドロップすると、下図のように「Heart Purple.prefab」がAssetフォルダ内に作成されます。

Heart Purple.prefabが作成された

RigidbodyとBox Colliderの追加

作成された「Heart Purple.prefab」を選択して、Inspectorを表示します。Add Componentから「Physics→Rigidbody」と選択してRigidbodyをInspector内に追加しておきます。これは重力を表すもので、Rigidbodyを追加しておかないと、「Heart Purple」が上から下に落ちません。

同様に「Physics→Box Collider」も追加しますが、こちらは「Heart Purple」が床をすり抜けないようにするものです。両方ともコンポーネントを追加するだけで、設定は必要ありません。

ここまで来たら、作業を保存しておきましょう。Unityメニューの「File→Save Scene as」で保存できます。Hierarchy内の「Heart Purple」についてはPrefab化したため不要です。右クリックメニューから削除してください。

次回は、スクリプトの設定やアプリケーションのデプロイについて解説します。