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

catalinaの備忘録

ソフトウェアやハードウェアの備忘録。後で逆引きできるように。

Hololensが届いた

DirectX11 C++ UWP hololens

やっとhololensが届いたので開封の儀式です。かたりぃなです。

 

開封

f:id:Catalina1344:20170131202531j:plain

 とりあえず開封した直後の写真です。この写真中央部の奥にマニュアルが入っていました。

どうせマニュアル全部英語だろと決めつけて冊子を半分読んだところで、残り半分が日本語マニュアルという事実。ショックです。

 

初期化

マニュアルに従って装着して電源オン。

音声ガイドに従って初期設定していきます。音声ガイドは英語です。KIAIで解読しましょう。画面表示内容みれば何言ってるか推測はつきます。

まずキャリブレーションから。表示されるカーソル位置に指をあわせてキャリブレーションしていきます。

指紋認証か何かかと勝手に深読みしてしまいましたが、そんなことはなかった。

 

操作方法ガイドを一通り試す

キャリブレーションが終わると操作方法のガイダンスがはじまります。

指をすぼめて上に向けた状態から開くのがブルーム。

人差し指を立てた状態から倒すエアタップ。

長押しするとスクロールバーとかつまめるよみたいなのも。

クリッカーの設定もここでやります。クリッカー側のペアリングボタンは細いものがないと押せないので、事前に準備しておいたほうがいいです。とりあえず手元に転がってたボールペンの先端で押しました。

 

アカウント設定

ガイダンスを終えるとアカウント設定です。

ここから先はHololens Emulaterと同じ手順です。

ちなみにこの時点ではBlueToothキーボードは未設定(設定するタイミングが無い)なので、クリッカーと視線で頑張って入力します。(使えるキーボードがまだ手元にないから、どっちみち使えないのですが。)hololensの視線入力はこういう細かい操作には向きませんね。慣れの問題かもしれませんが。

 

とりあえず起動

アカウント設定が終わばあとは好きな事ができます。

3Dオブジェクトを好きな位置に配置したり、適当なゲームを試したりと。

部屋の壁に穴が開いて、虫が湧いてくるのを退治するゲームを試してみましたが結構面白いです。

ただ、視野角が狭いので視線だけで対象を追おうとするとホログラフィックが消失してしまいます。視野角については今後の改善に期待ですね。まあ暫く使っていけば「こんなもんだろ」と慣れてくると思いますが。

 

アプリを書き込む

早速アプリを書き込みたいところですが、まだ何も作っていません。

でもせっかくだから何か書き込みたいですよね。というわけでDirectXのUWP(holographic)のサンプルコードを投入しましょう。

ビルドしてターゲットデバイスとUSB接続。デバッグ開始を押すと始まります。

ただし初めての書き込み時はPINコードの設定をしろと言われるのでこのあたりを参考に設定します。設定のセキュリティのとこにあります。

表示されるコードをVisualStudioに入力すればOKです。

初めてのHoloLens開発(2D/Holographicアプリ)[環境準備~実行、HoloToolkit-Unity活用] - Build Insider

 

とりあず動きました。スクリーンショットの撮り方がわからないのでまた別の機会に。

 

今後の展望

もうすでに何かやってる人いないかなと思って色々と調べましたが、UnityとVuforiaの人が多かった印象です。手軽に作って試すにはよさそうです。

イノベーションを起こすならフットワークの軽さは重要だと思います。

ただ、そうして先端を走り続けるには限界があると思っている(どこかでフレームワークの限界が来る)ので、マイペースでいきます。下から攻めたほうが有利というか、人の上を行くなら下から行けみたいな格言もありますし。

本質的な部分を押さえておけばHololensが普及しなくても応用が利きます。まあ結局ライブラリ叩くんですけどね。

というわけで今年一年くらいのペースでやりたいことを技術要素に落とし込んだものをリストアップしてみました。

  1. ソフトウェアで映像入力を受ける(Microsoft MediaFoundation)
  2. 映像を処理して、ある共通する特徴を持った物体(カードとか)の特定物体認識を行う(OpenCV-imgproc etc.)
  3. 特定物体認識で検出した物体をトラッキングする(OpenCV-opticalflow etc.)
  4. 検出した物体の詳細を(カードの絵柄とか文字列とかを使って)分類する(chainer - machine learning)
  5. 検出結果をもとにWebから追加情報を拾ってくる(UWP-HTTPClient)
  6. 3Dオブジェクトのレンダリングを行う(Microsoft DirectX11)

なんとなくですが2と4が一番ネックになりそうな気がしています。

だいたい以前やったことのブラッシュアップなので、結構なんとかなる気がしていますし、ブラッシュアップの段階でHololensの機能を借りれば色々と良くなりそうです。

例えば

ARの原理実験 - catalinaの備忘録

Chainerでcifar-10画像分類を試してみる - catalinaの備忘録

Windowsストアアプリを作ってみる - catalinaの備忘録

openGLでMMDモデルを表示する - catalinaの備忘録

だけでも最低限のプロトタイプくらいはできそうです。

あとは機械学習をどう活用するか考えながら色々実験していきたいですね。

Hololensのスペック的にDNNを載せるのはきつそうなので、そこも工夫が必要そうかなと思います。

 

あ、DirectX版のレンダリングの記事書いていないのに気づきました。

UWP版を作るときに整理します。とりあえず今回は写真だけ。適当なパーサ落としてきてDirectX11でレンダリングしてみたところです。

色合いがおかしいのは適当に書いたHLSLシェーダーのせいです。確かMMD本家はトゥーンですよね。。。

f:id:Catalina1344:20170129221225p:plain

UWP版への移植はこれからですが、とりあえず表示まで行ってるので、あとはなんとかなる気がしています(というかMMDはライセンス面倒だから他のフォーマットがいいな。。。)。

では今回はこれくらいで。