前回に引き続き、空間マッピングを利用したプログラムの作成方法について解説します。
Project Settingsの設定
第3回でも解説したように、「Virtual Reality Supported」にチェックを入れて「Windows Holographic」を表示してください。今回はその手順に加えて一番下までスクロールし、「Capabilities」という項目の「SpatialPerception」をチェックしてください。
SpatialMappingの設定
前回は「Gesture」の設定を行いましたが、今回は不要です。続いて行うのが「SpatialMapping」ですが、Unityメニューから「GameObject→Create Empty」と選択し、Hierarchy内に空のGameObjectを作成します。Projectの「HoloToolkit→SpatialMapping→Scripts」と選択して、「SpatialMappingManager.cs」をGameObjectにドラッグ&ドロップしてください。
その後、HierarchyのGameObjectを選択して、Inspectorを表示します。続いて、「Spatial Mapping Manager(Script)」内の「Surface Material」の右端隅にある○アイコン(下図参照)をクリックします。「Select Material」の画面が表示されるので「Wireframe」を選択してください。加えて「Draw Visual Meshes」もチェックします。
スクリプトの作成
いよいよ、「Heart Purple」を上から下に落とすスクリプトの記述です。
このスクリプトは「Main Camera」に記述します。HierarchyのMain Cameraを選択して、InspectorのAdd Componentから「New Script」を選び、「Name」に「SpaceMappingScript」を、Languageに「C Sharp」を選択して「Create and Add」をクリックします。すると、Main CameraのInspectorに「Space Mapping Script(Script)」が追加されます。Scriptの「SpaceMappingScript」をダブルクリックすると、Visual Studio 2015が起動します。
Visual Studio 2015の起動
Visual Studio 2015が起動したら、リスト1のコードを記述します。
リスト1「カメラの1.5m手前から1秒おきにハートのオブジェクトが落ちてくる処理」
using UnityEngine;
using System.Collections;
public class SpaceMappingScript : MonoBehaviour
{
public Transform myHeart;
void Start()
{
StartCoroutine(CreateHeart());
}
private IEnumerator CreateHeart()
{
while (true)
{
float distance = 1.5f;
var x = distance * Mathf.Sin(transform.rotation.eulerAngles.y * Mathf.Deg2Rad);
var z = distance * Mathf.Cos(transform.rotation.eulerAngles.y * Mathf.Deg2Rad);
Instantiate(myHeart,new Vector3(x, 1, z), Quaternion.Euler(0, transform.rotation.eulerAngles.y, z));
yield return new WaitForSeconds(1);
}
}
}
参照URL
HoloLensの環境マッピング(Spatial Mapping)の使い方
Unity キャラの正面をとらえるカメラ
Transform型でpublicなmyHear変数を宣言します。publicで宣言しておくと、ビルドした後、Main CameraのInspectorの「Space Mapping Script(Script)」に「My Heart」という項目が追加されます。
続いて、Startメソッド内でStartCoroutineを使用し、CreateHeartコルーチンを実行します。コルーチンは、実行を停止してUnityへ制御を戻す一方、続行する際には停止したところから次のフレームで実行を継続できる関数のことです。
コルーチンの作成にはIEnumeratorを利用して、CreateHeartコルーチンを作成します。カメラと落ちてくるハートの間の距離は1.5メートルとして、ハートがカメラの正面に落ちるように下記の処理で定義しました。
var x = distance * Mathf.Sin(transform.rotation.eulerAngles.y * Mathf.Deg2Rad);
var z = distance * Mathf.Cos(transform.rotation.eulerAngles.y * Mathf.Deg2Rad);
Instantiateを使って、「Heart Purple」のプレハブをインスタンス化し、カメラの正面に落ちてくるよう設定します。
yield return new WaitForSeconds(1);
上記の定義で、1秒ごとに「Heart Purple」がインスタンス化されて落ちてきます。
以上の作業が終わりましたら、Visual Studio 2015をビルドして終了してください。Unityの画面に戻ると、「Space Mapping Script(Script)」が下記のように表示されているとおもいます。
ここで「None(Transform)」の位置に、Assetフォルダにある「Heart Purple.prefab」をドラッグ&ドロップしてください。
Build Settingsの設定
「Build Settings」の設定については第4回と同じ手順ですが、「Add Open Scenes」の指定だけは忘れないでください。書き出しが成功すると、作成したHoloLensのフォルダが選択されて表示されます。
HoloLensのフォルダ内を見ると、「SpaceMapping.sln」というファイルが作成されています。HoloLensをPCと接続して起動した後、このファイルをダブルクリックしてVisual Studio 2015を起動してください。
HoloLensへのデプロイ
ここまで来たら、Visual Studio 2015内でコードを触ることは一切なく、HoloLensへのデプロイ(配置)を行うだけです。
Visual Studio 2015の上のバーの「Debug」と表示されている箇所に「Release」、「ARM」と表示されている所に「x86」、「ローカルコンピューター」と表示されている所に、HoloLensとPCをUSBケーブルで接続している場合は「Device」を指定します。「Device」の左横にある右向きの△アイコンをクリックすると、デプロイ(配置)が開始されます。
デプロイに成功して表示された画面から「デバッグの続行」をクリックしてください。Unityのタイトルが表示された後、「Heart Purple」が降って来るようになります。最初こそ床をすり抜けますが、しばらくすると部屋のスキャンが始まり、障害物の上にハートが積み重なっていくはずです。
この2回に渡って解説した処理の半分は、Air Tapの第3回、第4回と同じ処理です。繰り返しの作業にはなりますが、身体に覚え込ませることでHoloLensアプリ開発が容易になりますので、頑張ってください。
次回は、「視線移動(Gaze)によるプログラミング」について解説します。
関連リンク
ダウンロードBOXに入れる
記事をダウンロードBOXに追加します。よろしいですか?
ブックマーク
記事をブックマークに追加します。よろしいですか?
会員ログイン
人気ランキング
-
Web申し込みで1回線基本料1日10円~
KDDIとソラコムのIoT向け回線サービス -
【連載】VRコンテンツの作り方 [1]
VRの基本(1) VR HMDが盛り上がる理由 -
【連載】山口健太のモバイルNEXT [16]
KDDIに聞くHP Elite x3(ネットワーク編) -
4
転換点を迎えるHadoop技術、調査で見えたSanDisk InfiniFlashという最適解 [PR]
-
5
【連載】AzureとOffice 365のセキュリティ、MS ゆりか先生が教えます [1]
-
6
【連載】HoloLensアプリ開発入門 [6]
空間マッピングの実装 (2) -
7
なりすましメール撃退の有効策
「DMARC」とは? -
8
低迷する日本の社員エンゲージメント、
調査で解明されたキーワードとは? -
9
【連載】「こ、こんばんは... 私、誰だかわかる?」の文章からわかる書体の"機能"
-
10
活用度NO.1を目指すERP製品
「Biz∫ (ビズインテグラル)」とは [PR]
-
2016年11月2日(水) 19:30~20:30
HTML5 Experts.jp 編集長 白石俊平が解説! 次世代Web技術がもたらすインパクト -
2016年11月9日(水) 19:30~20:30
商業施設「PARCO」のオムニチャネル戦略と最新デジタル・IoT活用 -
2016年11月16日(水) 19:30~21:00
今さら聞けない SEO対策セミナー -実践編- -
2016年11月22日(火) 13:00~17:20
~最新の事件も紹介! 新たな攻撃手法と対策方法とは~ 標的型攻撃対策セミナー -
2016年12月7日(水) 10:00~17:00
マイナビニュースフォーラム2016 Winter for データ活用 ~IoT時代の機先を制す~
今注目のIT用語の意味を事典でチェック!