2018年12月9日日曜日

[HoloLens Advent Calendar 2018] 9日目 Mixed Realty Tookit Unity vNext2018を利用し、Air TapでCubeを落とすHoloLensアプリを作ってみた

お疲れ様です。ZuQ9->Nnです。
この記事は、HoloLens Advent Calendar 2018、9日目
2018/12/09 の内容です。

Mixed Realty Tookit Unity vNext2018
日本語でも何人か記事をだされていますが、
2018/12/09現在では、ようやくAlphaを出てBataになったばかり
まだまだ、開発真っ最中といった印象です。

今回は、Mixed Reality Toolkit 2018.9.0 (vNext Beta) を利用し、
HoloLensアプリの最初の第一歩ともいえる、CubeをAir Tapで落とすアプリを作成していきます。

なお、Mixed Reality Toolkit 2018.9.0 (vNext Beta) を利用するには
Unity 2018.1以降、.NET 4.xが必須となります。

今回、僕はUnity 2018.2.10f1 (64-bit)を利用して作成しました。

まずは、GitHubのreleaseページより
MixedRealityToolkit-Unity-2018.9.0-Beta.unitypackageをダウンロードします。

Unityで新規でプロジェクトを作成し、
MixedRealityToolkit-Unity-2018.9.0-Beta.unitypackageをインポートします。
ちなみに.NET 4.xの設定は、unitypackageをインポートすると自動で設定されます。
インポートができたら、 UnityのメニューにMixedRealityToolkitのメニューが表示されます。

 MixedRealityToolkitのメニューからConfguerをクリックすると
Hieraichyに、MixedRealityToolkit、MixedRealityPlayspaceが自動追加されます。

MixedRealityPlayspaceを展開しMainCameraを選択すると、
InspectorにGaze ProviderのScriptが既にアタッチされています。
これは、Gazeつまり視線を扱うためのスクリプトです。

Main Camera、Gaze ProviderのCusor Prefabのプロパティに
MixedRealityToolkit-SDK > Features > UX > Prefabs > Cursorsの
DefaultCursorをアタッチメント

さらにGaze ProviderのGaze TransformプロパティにMainCameraをアタッチメント


HieraichyのCreate > 3D Object > Cubeを選択しCubeを作成

 Cubeを見えやすい位置に配置してください。(僕は、x : 0,  y : 0,  z : 3)に配置
 DefaultCursorの色が白だったので、白いCubeに白いGazeが当たっても認識しずらかったので
僕は、適当な色(R : 0, G : 201, B 255)のMaterialを作ってCubeにアタッチしましたが、
この作業は、必須ではありません。

CubeのInspectorからAdd ComponetでRigdbodyを追加します。

RigdbodyのIs KinematicのチェックをONにします。

CubeにMixedRealityToolkit-SDK > Features > Input > Handlersの
PointerClickHandlerのScriptをアタッチメントします

次にProject ViewのCreateからC# Scriptを選択し、新規のScriptを作成します。

名前は何でもよいですが、ここではAirTapEventとしました。

AirTapEventの内容は下記です。
AirTapEventをCubeのInspectorにアタッチメントします。

CubeのInspectorから、PointerClickHandlerスクリプトの
On Pointer Clicked Action Eventを展開し
Action InputをSelectにします。

さらに、+ボタンを押して、Unity Eventを表示ます。

Unity EvenにHieraichyのCubeをドラッグ&ドロップでアタッチメント

Unity EventのNo founctionのドロップダウンを開いて
AirTapEventのFallDown()メソッドを選択します。

操作は以上で、これでBuildしHoloLensにアプリをDeployすれば
今までのToolkit同様にAir TapでCube を落とすことができます。

残念ながら、いままでのToolkitで出来ていた
Unity Editor上でShiftボタンを押しながらクリックすると
Air Tapが確認できる機能は、現在のところvNextでは提供されておらず、
実機での確認が必須となっています。

実機で動かすとこんな感じになります。

現在見ている限りでは、Mixed Reality Toolkit Unity vNext 2018.8.0.0 Alpha 2の時点で存在していた
Spatial Mapping、Spatial UnderstandingやSpatial SoundのためのSpatialフォルダ、
そしてsharingのためのsharingフォルダが削除されたのが気にかかったのですが、
元々vNext 2018.8.0.0 Alpha 2でも、それらのフォルダにはREADMEしか存在しませんでした。
また、HoloLens用のExampleもほとんど存在せず、使い方を模索しなくてはなりません。
おそらく、これらの機能は、今後追加で提供されると思います。

一応、.unitypackageだけではなくsorce code版もダウンロードして確認しましたがやはり、ありませんでした。
vNext2018は、かなり以前のToolkitからの変更も大きく 対応は大変になるかと思います。
どうせやるなら早いうちにと思ったのですが、やっぱり早すぎたのかもしれません。

最後に、今後のHoloLens開発をやるうえで、かならず、
Toolkitのバージョン情報を確認して検索しないと、
情報が古くて役に立たなくなることが多くなるかとおもいます。
どうぞ、HololLens Developerの皆さんは、お気を付けください。


2018年7月23日月曜日

札幌HoloLensミートアップ vol.2 ~夏編~ に参加

お疲れ様です。ZuQ9->Nnです。
 2018/07/21(土)札幌HoloLensミートアップ vol.2 ~夏編~ に参加してきました。

札幌HoloLens ミートアップ vol.2 ~夏編~ (2018/07/21 14:00〜)

開催概要 ## HoloLens・VRアプリ開発秘話 自分がその場にいながらバーチャルな空間と融合した世界を体験できるMicrosoftのホログラフィックコンピューティング「HoloLens」のSapporo HoloLensミートアップ第2回目を実施することになりました!xR(VR,AR,MR)の開発を未経験でも、熱い興味がある方など誰でも参加いただけます。ビジ ...
確か4月に開催された Tokyo HoloLensミートアップ Vol.8の時に
札幌の主催者 @jojomonvr さんにお会いして、
お声がけいただいたのがきっかで今回の参加にいたりました。

折角、わざわざ札幌にまで行くので、単に参加するのではもったいない
なのでLTも。。とか、勝手に参加のハードルを高くしてしまった。(;^_^A

かなり、前から準備し、飛行機の予約も完了。あとは当日に行くだけ。
しかも当日は、きちんと6時起きなど、スムーズに進んでいました。

_人人人人人人人人人人人人_
> しかし事件は起こった <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

事前に家から成田まで1時間半と記憶しており、10時25分発の飛行機なら
8時に家を出れば間に合うはずと、吞気に家を出てしまったのが失敗の始まり。。

9時ごろに北千住に到着し、改めて時刻表を確認すると。。
なんと、到着予定が10時28分。。この時点で間に合わないことが決定!!

なんてこった。何が起きた?!!一瞬時空が歪んだのかとさえ錯覚してしまった。。
成田駅までの乗り換えアクセスが休日ではかなり悪いらしい。
途中駅で10分以上待たされる羽目に。。

なんとか11時前に搭乗予定のバニラエアのロビーに到着。
そこから一番早くつけそうな12時20発、14時10分到着の便を予約できた。
ここで一安心。。なんとか行けると思っていた。。

_人人人人人人人人人人人人_
> またも事件は起こった <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄

なんと、空港の交通事情で大幅に出発が遅れてしまい。
13時20分発となった。なんとか東京をはなれ15時くらいに新千歳空港に到着。
よし。なんとかなるかも。。と思っていた日が僕にもありました。。

_人人人人人人人人人人_
> ここで痛恨のミス <
 ̄Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄


本来はJRを使えば40分ほどで札幌に到着予定が。
間違えてバスに乗ってしまい。結局、現地に到着したのが
17時ごろと、LTの時間ギリギリになってしまいました。
ここでもかなり時間が溶けましたね。ほんとに時空が歪みを感じましたw

そんなこんなで、なんとかLTだけを行う形になってしまいました。
LTの内容は前々から作ってみたかったHoloGiraffeのアプリを真似てみました。

発表に関しては。。あまりにも、5分間の時間を気にしすぎて
早口になりすぎ、しかも、まとめ部分の最初で時間終了となりました。
またもや、なにやってんだよ。。って感じでした。

参考のために動画を2本いれたのが焦りの原因なんでしょうかね。
ただ、言葉では伝えきれないと思ったので
欲張らずに自分のアプリの動画のみを最初に流せばと反省しきりです。

発表内容のスライドはこちらです。
作成したサンプルアプリはこんな感じです。

一番メイン内容は、最新のMixedRealityToolkit-Unityに入っている
MixedRealityToolkit/StandardシェーダーとClipPlane.csの使い方ですね。

HoloToolkit-Examples > StandardShader の中に
MaterialGallery.unity というサンプルのシーンも参考になりました。

やはり、こういった期限がないと形にしておわらさないですよねw。
なんとか見せれる形に終えられて本当に良かったです。

懇親会も、なんか一人でポツンとしていたシチュエーションも多かったかな。
なんとか、自分から話に行けた、福岡から参加の @KzoNag(ながみね)  さんに
じゃあ、今度は福岡の勉強会に参加しますねぇ。。なんて
かなりノリで宣言してしまいましたw、まぁ勢いって大事ですよねぇ。

なんだかXR業界の人のフットワークの軽さを見ていると
僕もじっとしているのってもったいないかなと
今回の件も含めて、決めてしまって進んだほうが断然に楽しかった。
その体感だけでも自分にはプラスにできるんじゃないかなぁとか。。
そんな感じで、次もチャレンジしていきたいです。。

北海道、札幌が堪能できたか?はイマイチな部分も残りましたが
次は、心からおもいきり楽しんで参加したいです。

最後に、札幌行に背中を押してくださった@jojomonvrさん
どうもありがとうございました。



2018年3月10日土曜日

第五回 HoloLens参考書 読書会で発表しました。

お疲れ様です。ZuQ9->Nnです。
2018/03/09(金) 第五回 HoloLens 参考書 読書会 で発表を担当させてもらいました。

第5回 HoloLens参考書読書会@アカツキ (2018/03/09 18:30〜)

HoloLensアプリってどうやって作ればいいの? HoloLensアプリケーションってどうやって作ればいいんだろう。Microsoftが提供するチュートリアル「Academy」を一通りやってみたけど、次はど うすればいいんだろう。 そんなお悩みを持っている方たちに向けて参考書の読み会を開催します! 現在出版されている参考書は洋書だけなので少しハードルが高いですが、みんなで挑めば怖くない! 本イベントで取り扱う書籍の内容は以下の通りです。 ch.1 OverView & 環境構築 ch.2 はじめてのHoloアプリ(豆腐みたいなもん) ch.3 Holoの入力(Gaz...
HoloLensに関連する何かに携わっていないと、絶対に触らずにダメになっていく
そんな不安や焦りの気持ちからこちらの読書会にスタッフとして参加させてもらっていました。

こちらの「HoloLens Beginner's Guide

の書籍に添いながら各Chapterごとにスタッフが発表を受け持っています
そして、いよいよ、僕の担当の番となったわけです
内容は、Chapter6 のSpatial Mappingについて、発表資料はこちらです。

こちらの資料の中のコードApplicationManagerについはて、こちらです。

完成したアプリを実機で動かしたときは、こんな感じになります。

発表は、自分でも、早口になっているなと思いながらも ついつい焦りからか、
止められない感じになってしまいました。

今まで5分くらいのLTはやっていたのですが、
1時間以上の枠をもらったのは、
今回初めてで時間配分、どっからどこまでをダラダラせず、
わかりやすくまとめるか、とても課題が残りました。

発表後は、参加者にお声もかけていただき。
具体的な質問等もいただき、まだまだ、きっちりと
理解していない部分がほとんどだと痛感しました。

Spatial Mappingの一番のポイントは、HoloLensがセンサーをつかって
周りの空間の情報をスキャンし貯めている部分です。

質問者さんから言われて、僕も勘違いしていた部分があります。
SpatialMappingObserver.csにStartObserving があるので
てっきり、アプリを起動したときに
周囲をスキャンを開始するのかと思っていたのですが
アプリを起動しなくてもHoloLensそのものを起動したときに
既に自動的にセンサーを使って周りの空間をスキャンし
空間情報を貯めて更新していますね。
アプリ内では、あらかじめスキャンした空間の情報も利用しているようです。

途中でヘルプいただいた @dy_karous はじめ、スタッフの皆さんありがとうございました。
発表そのものは終わりましたが、読書会自体はつづきますので
最後まで、できる範囲内でお手伝いさせてもらいます。