読者です 読者をやめる 読者になる 読者になる

ウラデブ

AR、MR、プログラミングとかとか・・・

壁とか天井とか床とか欲しいな〜空間認識

HoloLens

ども、ウラさんです。
HoloLensなんだから壁や床を利用したいよね?
って事で、空間認識ってか部屋認識をやってみましょ。

f:id:urasansan:20170321162750j:plain

 前回と同じでHoloToolkitを使って空間メッシュが表示されるまで作ります。
んで、空のゲームオブジェクトを追加。

自前のスクリプトとして
「MakePlanes.cs」
を作成&アタッチ。

HoloToolkitから
「SurfaceMeshesToPlanes.cs」
「RemoveSurfaceVertices.cs」
をアタッチ。 

f:id:urasansan:20170321163601p:plain

 

んで、MakePlanes.csを編集。

sing System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HoloToolkit.Unity.SpatialMapping;
using HoloToolkit.Unity.InputModule;

public class MakePlanes : MonoBehaviour, IInputClickHandler {

	// Use this for initialization
	void Start () {
		//	エアタップ頂戴	
		InputManager.Instance.PushFallbackInputHandler(gameObject);

		//	壁とか作り終わったら教えて
		SurfaceMeshesToPlanes.Instance.MakePlanesComplete += SurfaceMeshesToPlanes_MakePlanesComplete;
	}
	
	// Update is called once per frame
	void Update () {
		
	}

	public void OnInputClicked(InputClickedEventData eventData)
	{
		//	エアタップされたらメッシュ作るの止めて、壁とか作る
		SpatialMappingManager.Instance.StopObserver();
		SurfaceMeshesToPlanes.Instance.MakePlanes();
	}

	//	壁とか出来たら呼ばれる	
	private void SurfaceMeshesToPlanes_MakePlanesComplete(object source, System.EventArgs args)
	{
		//	平面に内包されてる頂点を削除して軽くするみたい
		RemoveSurfaceVertices.Instance.RemoveSurfaceVerticesWithinBounds(SurfaceMeshesToPlanes.Instance.
	}
}

こんな感じ。
極力シンプルにしたのでNULLチェックとかしてないよ。

最初に気が済むまで空間をスキャンして、エアタップされたら「MakePlanes」を呼んでる。
これだけで壁、天井、床、テーブル、その他を認識してくれる。

ただ、白い壁しか無いので分かりづらいのでもうちょい手を入れてみる。

f:id:urasansan:20170321165456p:plain

「SurfacePlane」Prefabで板を作ってるのでマテリアルをデフォルトから変更してあげる。
すげー分かりやすいマテリアル作ったった!

f:id:urasansan:20170321165854p:plain

んで、「SurfaceMeshesToPlanes.cs」にセット。


実行すると

f:id:urasansan:20170321170059p:plain

こんな感じで、分かりやすく壁と天井と床にポリゴン貼られる。



メッシュが邪魔なので

	//	壁とか出来たら呼ばれる	
	private void SurfaceMeshesToPlanes_MakePlanesComplete(object source, System.EventArgs args)
	{
		//	平面に内包されてる頂点を削除して軽くするみたい
		RemoveSurfaceVertices.Instance.RemoveSurfaceVerticesWithinBounds(SurfaceMeshesToPlanes.Instance.ActivePlanes);

		//	メッシュが邪魔なので消しちゃう
		SpatialMappingManager.Instance.DrawVisualMeshes = false;
	}

こんな感じで消しちゃう。

 

f:id:urasansan:20170321170702p:plain

綺麗になったっ!


って事で、動いてるのはこんな感じ。



天井にハリがあるので変な所をテーブルとして認識してたり、テーブルが床の下にあったりするようですが、まぁこんなもんですか?
今回も、HoloToolkitで簡単に空間認識が出来ました。

こーなると次は壁とか天井に何か置かないとですな。
さて、どうやって窓付けたりするのかしら?
調べましょ、調べましょ・・・


では、またっ!

 

初めてのHoloLens開発 〜 樽から猫にゃん

HoloLens

ども、ウラさんです。
んでは、HoloLens開発をやってみよーっ!

完成品はこちら。

f:id:urasansan:20170301133037j:plain

樽からネコにゃんを出します。(なぜ?)

 

 んでは、環境構築から。
HoloLens開発の情報は結構あるので助かります。
ただ、バージョンが違ったりで既に古くなっている情報も多々あるので軽く書いときます。
ここの情報も直ぐに古くなっちゃう可能性も大ですがね・・・

 

ちなみに、「Windows10 Home」でやってます。
HomeだとHoloLensエミュが動かないのですが実機があるので問題なしです。

 

先ずは、「Visual Studio 2015 」をさくっと入れましょう。
VSが入ったら一度HoloLensで動く物を作るのが良いでしょう。
この段階で躓いてるとこの後のUnity入れてとかでどこが悪いのか分からなくなっちゃうので・・・

VSを起動して、新規プロジェクト作成で「空白のアプリ (ユニバーサル Windows)」を選択。
C++でもC#でもなんでもOK
出来たらビルドして、HoloLensで動かして完成ですっ!
コードなんて一切書かなくて良いです。
マウスでポチポチやれば良いです。
HoloLensはUWPアプリ(ストアアプリ)がそのまま動くので、HoloLens用に何もしなくて良いのです。
VSとHoloLensのペアリングだけすれば良いだけ。

この段階でうまく行かない場合は、VSのインストールオプションが間違ってるとかだと思うよ。(適当)

 

HoloLensでUWPアプリ動かしてもしゃーないので、ちゃんとHoloLensアプリ作りましょ。
って事で「Unity」入れます。
現時点で最新の「Unity 5.5.1f1」を入れました。
インストール途中なぜかエラーがでました・・・
UWPビルド関連のインストールに失敗してるみたい。(署名無しかな?)

とりあえず、続行してUnityのインストールを完了させて。
UnitySetup-Metro-Support-for-Editor-5.5.1f1.exe」を後から入れました。
なんだろ、他の人は平気なのかしら・・・?
無事にUnityが入ったら、「HoloToolkit-Unity」をここからダウンロードして解凍しときましょ。


Unityで新規プロジェクト作成して、HoloToolkit-Unityの「Assets」の中身をぶち込みます。

f:id:urasansan:20170301140313j:plain
「HoloToolkit-Examples」はいらないよ。



HoloToolkit-Unityがガンガン更新されてるようで、ここからの手順は色々と情報があったのですが、2016年3月1日の段階では以下方法で良いみたい。

f:id:urasansan:20170301141113j:plain

まず、HoloLens用の設定をしちゃいます。
「HoloToolkit」→「Configure」→「Apply Hololens Project Settings」
を開いて、「Apply」をポチっと。
Unityを再起動するぜーって聞いてくるので、再起動。

再起動したら。
「HoloToolkit」→「Configure」→「Apply Hololens Scene Settings」
を開いて、「Apply」をポチっと。

これで、設定は完了するみたい、かなり楽。

 


ゴリゴリ作る前にちゃんと動く環境か確認。
最初からシーンにある、「Main Camera」と「Directional Light」を削除。

f:id:urasansan:20170301142057j:plain

HoloToolkitの「HoloLensCamera」プレハブをシーンへ追加。

 

f:id:urasansan:20170301142158j:plain

HoloToolkitの「SpatiaMapping」プレハブをシーンへ追加。

 

「HoloToolkit」→「Build Windows」を開いて。
「Build Visual Studio SLN」をポチ。

f:id:urasansan:20170301142557j:plain

 

ビルドが終わったら、Visual Studioで開いてUWPアプリと同じように実機で実行。
メッシュが現れれば環境構築は成功って事で。
HoloToolkitですげー簡単に作れるっ!

 

無事動く事が分かったので、イベント取得しましょ。
エアタップが取れないと何も始まらないのでね。

f:id:urasansan:20170301144332j:plain
HoloToolkitの「InputManager」プレハブをシーンへ追加。

 

f:id:urasansan:20170301144402j:plain
HoloToolkitの「Cursor」プレハブをシーンへ追加。

スクリプトを書くので、「AirTap.cs」を作成。

using HoloToolkit.Unity.InputModule;
using追加して。

IInputClickHandler
ハンドラー追加して。

public void OnInputClicked(InputClickedEventData eventData)
こいつが、エアタップされたら呼ばれる。

 
gameObject.AddComponent<Rigidbody>();
こんなのをOnInputClickedに書けば、エアタップでオブジェクトに重力が適用される。

f:id:urasansan:20170301150907j:plain
アセットストアで拾ってきた無料の樽にスクリプト追加。


f:id:urasansan:20170301150943j:plain
メッシュが出来てから、樽をエアタップすれば地面にボコンって落ちてきますよ。


メッシュが邪魔なので

f:id:urasansan:20170301151148j:plain「Draw Visual Meshes」を切っとく。

イベント取得出来たのであとはUnityの知識ですな・・・
エアタップで樽からネコちゃんが飛び出すスクリプトをがんばって書けば良いだけです。
結構苦労したけど・・・

 


って事で、動いてるのはこんな感じ。

 

 

あら、かわいいっ!
HoloToolkitのおかげでかなり簡単に作れました。
すでにUnityゴリゴリな方なら大した苦労も無くHoloLensアプリは作れるでしょう。

ちなみに、「Hlographic Remoting」が便利なのでぜひっ!

f:id:urasansan:20170301154937j:plain
使い方はググる先生が教えてくれます・・・

 

さーて、Unityをちゃんとやるかなぁーっ!
では、またっ!

 

HoloLens初体験

HoloLens

ども、ウラさんです。
無事HoloLensが届いたので触って見るのです。
まずは、どんなデバイスなのか単純に体験してみましたー。

f:id:urasansan:20170223115445j:plain

開封の儀。
綺麗に収まってる、箱もしっかりと高級感ある・・・(まぁ、お高いので当然ですか?)

あまり予備知識を仕入れてなかったのですが、HoloLnes単品で完結してるのにまず驚いたっ!
Windowsが入っていて、PCに接続とか必要なく単品で機能してる。
なるほど、変な形のWindowsPCなのか・・・

初期設定をして深く考えずに遊んでみます。

 

f:id:urasansan:20170223115826j:plain

こんな感じで、みなれたアイコンが並んだメインウインドウを呼び出せる。
Windowsのスタートボタン的な扱いですな。
WindowsストアにはHoloLens用のアプリがあるので適当に入れてみます。

 

 

f:id:urasansan:20170223115937j:plain

机の上に、地図を置いてみたり。

 

 

f:id:urasansan:20170223120006j:plain

グッと地図に近づいてみたり。

 

 

f:id:urasansan:20170223120037j:plain

心臓むき出しの人を床に置いてみたり。

 

 

f:id:urasansan:20170223120216g:plain

ドラゴンと戯れてみたり。

 

 

f:id:urasansan:20170223120342j:plain

YouTubeで「恋ダンス」を踊ってみたり。

 

 

f:id:urasansan:20170223120424g:plain

バレリーナを卑猥な角度から眺めてみたり。

 

 

f:id:urasansan:20170223120543j:plain

バレリーナと一緒に「恋ダンス」を踊ってみたり。

 

あら、楽しいっ!!!

 

なにこれ、すげーっ!
初期設定さえ終われば、とくに面倒な事なく楽しめるっ!
変な形のストレージ容量64G(使えるのは54G)のWindowsマシンだこれっ!

まだ、日本語対応してないので日本語入力出来ないとか、コルタナさんが日本語理解してくれないのでネイティブな発音じゃないと全然認識してくれないとか、EXEは実行出来ないとかあるけど、たのしーっ!


楽しいのでメンバーにも体験してもらおうっ!

 

f:id:urasansan:20170223121311j:plain

f:id:urasansan:20170223121332j:plain

f:id:urasansan:20170223121341j:plain

f:id:urasansan:20170223121349j:plain

うわ、人がやってるの見ると変だ・・・
たっつんとか「ネコが上に、ネコが上に・・・」とかゆーてるし、怖い・・・

みんなご満悦っ!
おっくんは「いいなぁー、ほしいなぁ・・・」ゆーてるし。
VRだと直ぐに酔ってしまったスタッフも余裕で楽しんでる。

MRすげーぞ、HoloLensすげーぞっ!

電脳コイルの世界がこんなに早く実現するとはっ!
MSやるなぁ・・・

ちなみに、キャリブレーション時にコルタナさんの指示では5フィート(約1.5m)でやれと言われるけど、1mぐらいで調整した方が良い感じになるかと。
5フィートでやると視線マーカーが上に行き過ぎるので首が疲れます。

とりあえず、なんも考えずにHoloLensで遊んでみました。
めちゃくちゃ可能性の詰まったデバイスだこれ。

オラ、ワクワクしてきたぞっ!!!

バイスの特性も使い方も分かったので、開発してみよーっ!

 

って事で、ではまたっ!

 

HoloLensで遊ぼう

HoloLens

ども、ウラさんです。
本ブログではMicrosoftのHoloLensで色々と遊んで行きたいとおもっとります。
まだ、実機は届いていなのですがそろそろ届くでしょう・・・(多分)

 

既に色々と情報は出回っているので助かりますっ!

www.webprofessional.jp

 

qiita.com

docs.com

 

待ってる間にここを参考に環境構築だけしときます。
Visual Studioは既に入っているので、Unity入れて、Vuforia入れて・・・

HoloLens EmulatorはWindows10のHomeだと入らないのね。
Hyper-VがHomeには無いのか・・・
まぁ、実機が来ればエミュは必要無いんじゃないかと思うので入れなくていいやぁ!
必要になったらOSを上げましょう。

って事で、早く来ないかなぁ、HoloLens。

では、またっ!