HoloLensメモ


全ての始まり

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">流れでHoloLensをねだったら買ってもらえるというミラクルが発生した</p>&mdash; わかめ@TypeScript味 (@vvakame) <a href="https://twitter.com/vvakame/status/824086798053810177">2017年1月25日</a></blockquote>

新しい物好きのお客さんが来社した時に社長に流れでHoloLensねだってみたら1分後くらいに会社の経費でHoloLensを買ってもらえました。
[株式会社トップゲート](https://www.topgate.co.jp/recruit)です！

<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">届いた！わずか2日だ！うひょーーーあけちゃうぞ <a href="https://t.co/wgNb5AyB3k">https://t.co/wgNb5AyB3k</a></p>&mdash; わかめ@TypeScript味 (@vvakame) <a href="https://twitter.com/vvakame/status/824815606952112128">2017年1月27日</a></blockquote>

欲しい人は今すぐ注文しましょう。2営業日後くらいには遊べます。

## この文章と筆者について

HoloLens周りについて調べた事とか忘れそうな事をメモしておくためのものです。
わかめのHoloLens関係はてブは[こちら](http://b.hatena.ne.jp/vvakame/HoloLens)

筆者の[vvakame](https://twitter.com/vvakame)は主にWebアプリ用のサーバ側コードを書いたりしています。
TypeScriptやJavaScriptもそれなりに得意です。
Unityとか3D関係はほとんどやったことがありません([ギリギリ2週間くらいやってみたことがある](https://github.com/vvakame/til/tree/master/unity)程度)。

ARはGoogle Glassを使ってた程度。Google GlassがARかというと怪しい。
VR周りはユーザとしてちょいちょい触れた事があって、Oculus DK1, DK2, CV1, Oculus Touch, PSVRが家にある程度。
MRは[OKULARION](https://www.kickstarter.com/projects/529725519/okularion-the-first-wireless-mixed-reality-headset)のBackerになってみたらCanceledになった程度。

## どういうデバイスなの？

現実の空間を頑張ってハードが分析してホログラム映像をその上に被せるマシーン。
いわゆる[Mixed Reality](https://ja.wikipedia.org/wiki/%E8%A4%87%E5%90%88%E7%8F%BE%E5%AE%9F)。
現時点で最も[みんなの理想のPokemon Go](https://www.youtube.com/watch?v=lKUwVYUKii4)に近いデバイス。
光の物理的な仕様上、黒は生成できずに背景が透ける点に注意。

## ハードウェア所感

仕様は[こちら](https://www.microsoft.com/microsoft-hololens/ja-jp/development-edition)

* 筐体の出来は最高に良い
	* 眼鏡もOK
	* 頭がデカい人も超余裕
* 無線！単独で動作する！
	* 最高だ 大正義だ
	* 頭に何か被ってる状態で移動しようとするとOculusの癖でケーブルに配慮しながら動いてしまう…
		* 無線なのになー…
* 本体重量がちょっと重い
	* 579g
	* 主要なメカニクスが前部に集中しているので重心がちょっと…
	* 良い具合に頭に据えるのがそれなりに難しい やりこみでなんとかなりそう
* 視野角が狭いという話
	* 視界の中でホログラフィックな画が見える範囲が期待よりだいぶ狭い の意
	* 実際狭い
	* 世界がそうなっている！ と勘違いできるほどには広くない
	* Google Glassに比べると大幅にマシ
* 目のピントの話
	* Google Glassの問題として、画が透けても景色と映像の距離が違いすぎて景色と映像と同時に焦点をあわせる事ができなかった
	* HoloLensもその問題は依然として解決されていないが、Google Glassよりかなり上手に処理している
	* 焦点が生まれる距離がGoogle Glassに比べてかなり遠い
		* 左右の目で別々の映像を見えているので立体視になる
		* 体感80cmくらいにある映像を見ている感じ
		* まぁGoogle GlassはARデバイスであってMRデバイスじゃないし…(震え声
	* 総じて、違和感を探せば違和感を感じるなぁ程度
		* そもそも人間は複数のものを同時に注視できないしね
* 画の追従性
	* ほぼ問題なし
	* Oculus Rift + GTX 1080 とかと比べるとやっぱりちょっと劣る
	* RoboRideとかで敵がたくさん出てきたりするとちょっと処理落ちしたりする
* 3Dサラウンドが強い
	* 耳に触れないオープンなスピーカーなんだけどちゃんと3Dになってて音源の方向向くと発生源がちゃんとあってすごい
* UIは辛い
	* 人間の仕様上入力系がめっちゃ辛い…
	* Oculus Touchとめっちゃ組み合わせたいけど場所の制約生まれるのはそれはそれで辛い

人間にはどう見えているかがよくわかる動画。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr">HoloLens の右目部分からスマホカメラで撮るとこんな感じ。 実際の目で見ると上下左右に更に現実景色が広がって見えている訳で。 惜しいねぇ、このネコがもっと可愛ければ…。(そこ？) <a href="https://t.co/Vc42A6lmY5">pic.twitter.com/Vc42A6lmY5</a></p>&mdash; AKT (@afxw) <a href="https://twitter.com/afxw/status/825016500750737410">2017年1月27日</a></blockquote>

頭頂部にかけるほそっこいバンドの取り付け方がわからなかったけど教えてもらった。
<blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a href="https://twitter.com/vvakame">@vvakame</a> バンドは裏表逆ですね。反対に反ってて紛らわしいです。あれは</p>&mdash; ゆーじ (@yuujii) <a href="https://twitter.com/yuujii/status/824870921156464642">2017年1月27日</a></blockquote>

## 使い始め

* 最初にオフィスで使うか個人の持ち物か聞かれる
	* 差がわからんけどオフィスだとスリープからの復帰時にパスワード求められてめんどい
	* 最終的に個人の持ち物としてセットアップを終えた
* Office365アカウントとMicrosoftアカウントは別物で後者じゃないとStoreからアプリ落とせない
	* 最初会社のOffice365アカウントらしきものを使ったらダメで初期化した
* 被ってる人が何を見てるかわからないと案内しようがないのでGoogle Glassの時の[Android Screen Monitor](http://www.adakoda.com/adakoda/android/asm/)相当の何かが必要
	* [Windows Device Portal](https://developer.microsoft.com/en-us/windows/holographic/using_the_windows_device_portal)がそのために使える
	* HoloLens側の設定が必要
	* USBケーブルで接続する場合、PC側に開発環境の準備が必要っぽい？
		* [このへん](https://developer.microsoft.com/en-us/windows/holographic/install_the_tools)
		* Visual Studio 2015 Update 3
		* HoloLens Emulator
		* Unity 5.5
		* Vuforia はまだ入れてない(けど動いてる
	* Wi-Fiだと普通にMacとかスマホからも見えるのでおすすめ

## デモ用のメモ

* いつでもDevice Portalに接続できるようスマホのテザリングに接続する設定作っとくといいかも
* 今見えているものは Device Portalの VIEWS > Mixed Reality Capture で `Live preview` を使えばわかる
* Device Portalの SYSTEM > App から `Learn Gestures` 起動すると最初のチュートリアル的なのが起動できる
	* BloomするとHomeに戻ってきちゃってチュートリアルには戻れないので注意
* キーボード入力がめんどかったらDevice PortalからVirtual Inputがある
	* 何故か打てなくなったらリロード(空文字列を送ると裏でJSエラーになるぽい
* Device Portalの VIEWS > 3D View で Spatial mapping のUpdate押すとデバイスがどういう空間だと思ってるか見えて面白い
* 事前準備として室内にHologramsでいくつかオブジェクトを設置しておく
	* 設置した事がないモデルはネットワークに繋いでDL可能な状態じゃないとだめ
	* ネットワークがない環境でやりたかったら使いたいモデルを事前に一回使っておくと良さそう
* IPDの調整とかはあんまりやらなくても違和感なく使いまわせそうな気がする
	* やるならBloomして+押してCalibrationでよさそう
* まず最初は[RoboRaid](https://www.microsoft.com/microsoft-hololens/en-us/apps/roboraid)やってもらうとよさそう
	* HoloLensが出来る事がわかりやすい
	* Clickerは絶対使わせる(Air Tapは多分慣れないと難しい
* 壁をSelectするとワイヤーフレーム的なのがｼｭﾊﾟﾊﾟｰと表示されてクソかっこいい
* 1人1分で終われるわかりやすくて感動が大きいデモ案なんかないかな

## 音声系

[この辺](https://support.microsoft.com/ja-jp/help/12630/hololens-cortana-on-hololens)

* `Hey, Coltana. my IP address` っていうとグローバルIPアドレス示してくるの惜しい…。`my local IP address`っていうとBingで調べてくれる。

## Unityでコード書く

https://developer.microsoft.com/en-us/windows/holographic/academy
やっていく

### Holograms 100: Getting started with Unity

https://developer.microsoft.com/en-us/windows/holographic/holograms_100

まとめ

* カメラは 0, 0, 0 固定でOK
* 背景はSkyboxじゃなくてSolid Colorで黒を指定
* Nearclipは0.85mを推奨
* 適当に白いCubeを出す
* なんか知らんけど起動した後は空間の中を好きに移動できる
	* Main Cameraの位置からスタートして自由に動ける？MainCameraが動く？謎だ
* UnityでBuildしてVisual StudioでBuildして転送
* HoloLensへのアプリ転送はWi-Fi経由も可能
	* デバイス側 For developer的なとこの設定でPINを登録する必要あり
	* PC側 Remote Computerを選ぶ
	* ビルドして転送してアプリ起動まで結構かかる…
* アプリ転送はUSB経由でも
	* たぶんPIN設定いらない
	* PC側 Deviceを選ぶ
	* Wi-Fi経由でやるのと起動までの速度変わらないかも
* HoloLensエミュレータ
	* 起動遅い…
	* OS毎立ち上げてるので遅そう
	* 初期のAndroid思い出すわ…
* 真っ白な四角を出すと赤と青にブレてて視差がズレてる事がわかった…
	* 要するにキャリブレーションしたほうがよさそう
	* これ、原理的にはわりと赤青フィルムの3D眼鏡と変わんないのか…？

### Holograms 101: Introduction with Device

https://developer.microsoft.com/en-us/windows/holographic/holograms_101

まとめ

* 1時間くらいでかなり楽しめる
	* Prefabがかなり用意してあって、適当にグリグリ配置してScriptコピペして動かすだけ
* とりあえずなんか出す
* Gazeの対応
	* ほぼUnityやんけ！
* Gesturesの対応
	* Selectの動作を取る
	* [この辺](https://docs.unity3d.com/ScriptReference/VR.WSA.Input.GestureRecognizer.html)
	* Unityやんけ！
* Voiceコマンドの対応
	* Unity…かなぁ？ `UnityEngine.Windows.Speech`
* Spatial sound (空間的音響 みたいな)
	* Unityの機能なのかHoloLens用の拡張なのかわからなくなってきた
	* まぁUnityだ
* Spatial mapping (空間マッピング的な)
	* 空間検出とか配置とかがめっちゃ簡単…！
	* まぁPrefabで下駄履かせてもらってるおかげだ
* Holographic fun (お楽しみだ！)
	* ちょちょいとするだけでかなりのお楽しみが得られた
	* Unityの柔軟さスゲー…

これは是非一回やってみるべきですわ。

## まだやってない

Shared holographic experiences
一台だとできないのがなんとも
https://developer.microsoft.com/ja-jp/windows/holographic/shared_holographic_experiences

Academyの200番台
https://developer.microsoft.com/en-us/windows/holographic/academy

## 終わりに

このドキュメントはしばらくの間随時更新されます。
この文章に出てこないけどおすすめのコンテンツや操作方法やTipsがあったら、コメントか[Twitter](https://twitter.com/vvakame)で教えてもらえると嬉しいです！