Slide 1

Slide 1 text

今更ながらHoloGiraffe のクローンアプリ作成に チャレンジしてみた 札幌HoloLens ミートアップ Vol.2 ~夏編~ 2018/07/21 ZuQ9Nn(ずきゅ~ん)

Slide 2

Slide 2 text

自己紹介 ● ZuQ9Nn(ずきゅ~ん) ● Objective-CでiOSのツール系アプリ開発→2018/08か らUnityエンジニアに ● 今のところHoloLensとUnityは趣味開発 ● HoloLens参考書読書会で登壇したりしてました。 ● Unity認定技術者試験合格

Slide 3

Slide 3 text

HoloGiraffeのPV

Slide 4

Slide 4 text

HoloGiraffeとは ● Windows Storeにリリース済みのHoloLens専用アプリ (https://www.microsoft.com/ja-jp/p/hologiraffe/9n1n2gd n1cl6) ● HoloLensを使って、どこでもキリンを召喚できるアプリ (http://vird.co.jp/product/hologiraffe/)

Slide 5

Slide 5 text

HoloGiraffeの仕様 ● Spatial Mappingで部屋のスキャン後、床のみAir Tapできる ● 床にAir Tapでキリン召喚 ● 召喚中はAir Tapしてもなにも起きない ● キリンが天井にぶつかると天井を破壊し穴をあける ● 召喚完了後も、床のみAir Tapできる ● 召喚後のAir Tapで、すでに召喚済みのキリンが徐々にきえ て新たなキリンが召喚される

Slide 6

Slide 6 text

かなりなんちゃってですが再現してみたのでと りあえず、見てください

Slide 7

Slide 7 text

オリジナルとの違い ● キリンじゃなくユニティーちゃんを利用 ● ワープのアニメーションはMixedRealityToolkitのシェー ダーとスクリプトを利用 ● 天井の穴はCubeとQuadの組み合わせで自作

Slide 8

Slide 8 text

今回の開発環境 ● Visual Studio 2017(15.7.5) ● Unity 2018.1.1.6f1 ● MixedRealtyToolkit-Unity 2017.4.0.0(HoloToolkit-Unity-2017.4.0.0.unitypackage)

Slide 9

Slide 9 text

作るときのポイント1 (実際にこの作りかは不 明ですが、僕なりの再現方法) ● SurfaceMeshesToPlanes.cs(HoloToolkit > SpatialMapping > Scripts > SpatialProcessing)を利用し て壁、床、天井を生成 (SurfaceMeshesToPlanes.Instance.MakePlanes) ● UpdateメソッドでRayを投げてSurfacePlaneの PlaneTypesで床を判断

Slide 10

Slide 10 text

作るときのポイント2 (実際にこの作りかは不 明ですが、作成者本人の資料から推測) ● 召喚するキリンは、生成済みで描画のみを制御? ● つまりInstantiateではなくclipのアニメーション制御のみ? ● https://www.slideshare.net/noshipu/unityhololens

Slide 11

Slide 11 text

ワープアニメーションについて ● 今回はMixedRealityToolkit/Standardシェーダー (HoloToolkit > common > Shaders)と ClipPlanes.cs(HoloToolkit > Common > Scripts)を利用

Slide 12

Slide 12 text

ワープアニメーションについて ● Planeの子供にユニティ ちゃんのモデル ● ユニティちゃんのモデ ルの子供にClipPlaneと いう名のEmpty Object ● ClipPlaneのY座標を移 動させることでアニメー ション実行

Slide 13

Slide 13 text

ワープアニメーションについて ● ユニティちゃんのマテリ アルのShaderを MixedRealityToolkit/Sta ndardに ● Cull ModeをOffに ● Clipping Planeにチェック

Slide 14

Slide 14 text

ワープアニメーションについて ● ClipPlaneのEmpty ObjectにはClipPlane.cs をアタッチ ● Renderにユニティちゃん の全てのマテリアルのつ いたオブジェクトを指定

Slide 15

Slide 15 text

Colliderに注意 ● ユニティちゃ全体にRigidbodyとBox Colliderをつけて、 そのColliderと天井がぶつかった時に判定してしまう と、表示のアニメーションが終わる前に、天井にあっ たって穴が開いてしまう。 ● 今回はユニティちゃんの子供にClipPlaneという名の EmptyObjectを作り、そちらに、RigidbodyとBox Colliderを追加しています。

Slide 16

Slide 16 text

天井の穴について ● 凹みTips 2017/02/18 HoloLensで向こう側が見える窓 を動的に追加してみる (http://tips.hecomi.com/entry/2017/02/18/190949) ● hecomi/HoloLensPlaygroundの v0.0.2(https://github.com/hecomi/HoloLensPlaygrou nd/releases/tag/v0.0.2)にあるSkyboxのモデル、 HoloLens/MaskedSky、HoloLens/Windowシェーダー を利用

Slide 17

Slide 17 text

作ってみて感想、まとめ ● クオリティはいまいなところも多いがうごくところまで出来てよかった ● マネやパクリはネガティヴに捉えられがちですが守破離という技術のレベルアッ プの一環として行う ● アプリのテストと撮影を行うにはそれなりの広い場所が必要 ● 豆腐を落とすのはクリアした人には、課題としてオススメ ● MixedRealityToolkitの機能や無料のアセットでも再現可能 ● 完璧に再現できなくても出来たところでOKは気楽 ● 最悪完成すらしなくてもバットノウハウを共有しよう