Spectator Viewやった

この前仕事でHoloLensのSpectator Viewやりました。 今更か……という感じもしますが、調べてみると結構やってみた系の記事なかった気がするので、自分のハマりポイント書くついでにつらつら書いていこうと思います。

参考元

SpectatorViewの公式リポジトリ github.com

中村 薫@かおるん さんの記事。Spectator Viewの基本的な部分を全編日本語で書いてくださっている。必見。 www.naturalsoftware.jp

ANDREASJAKL.COM の記事。キャリビュレーションがうまくいかなかったときに参考にした。 www.andreasjakl.com

使えるキャプチャボードが実質限られている

これはハマりポイントというかSpectator View試すのが遅くなった理由なんですが、今日現在

github.com

Software

ということで、BlackMagicとElgato製のキャプチャボード以外使えません。 多分自分でSDK引っ張ってきて手持ちのキャプチャボード使えるようにプログラム書けばいけると思うのですが、そのあたり全く触ったことないうえ、たまたま会社に合ったキャプチャーボードのSDKがこれまた使いづらく、全然自分でやれる気配がなかったのであきらめました。

Blackmagic Intensity Shuttle USB 3.0の相性問題

正確に言えば相性問題ではなく、PCに搭載されているUSB3.0ボードの信号帯域の問題らしいのですが、要は家電量販店で買ってきたPCそのままでは動かない可能性が高い、ということらしいです。 弊社のPCは運良くというか、必要な信号帯域の確保がされていたらしく、セットアップしたら普通に使えました。 もしかしたら最新のPC(USBポート全部3.0になってるようなやつ。弊社PCはこれでした)なら問題なく使えるのかもしれません。

相性問題…?

BlackMagic使っていて、個人的に最大の問題だったのはBlackMagicの相性問題そのものではなく、BlackMagicが問題をしっかり克服して使えているのか偶然起動しただけなのかがわかってないせいで、後々キャリビュレーションなどの工程に入ったときそれが設定のミスなのか、プログラムのバグなのか、BlackMagicの相性問題なのか分からなかったところです。

具体的にはCalibration.slnをビルドして実行したとき、ウィンドウにパステルブルーっぽい画面が表示されるばっかりで、どうもキャリビュレーションが始まらない。 これは結局下記ぺー時で参照できるような

www.andreasjakl.com

BlackmagicのOutputの解像度とプログラム上で受け取ろうとしている解像度が一致しないことによる問題だった(私の環境では両方と1080p30に合わせることで成功している)のですが、前述のとおりBlackmagicの相性問題を疑ってしまい全然作業が進まなくなりました。

Blackmagicには専用のキャプチャアプリがあるのでこちらで動作を先に確認しておきましょう。 こちらで一度映ったのが確認できれば相性問題の心配はほぼいらないと思います。

そして何より、機械の声(Debugログ)をちゃんと聞こう。

キャリビュレーションAppは動いているが、HoloLens側の写真が排出されない

いざいろいろと難関を乗り越えキャリビュレーションAppが動いても、HoloLensサイドの画像(xx_holo.jpg)が排出されないことがあるかもしれません。 これはおそらく

  • HoloLensのデバイスポータルが無効になっている
  • バイスポータルのログインID・PASSが間違っている
  • HoloLensがスリープ状態、もしくは電源が切れている。

上記三点を確認すれば直ると思います。 一応キャリビュレーションは最初からやり直した方が良いです。

キャリビュレーションが終わらない?

キャリビュレーションAppは自動で終了したり、終了時に自動でCalibrationData.txtを生成したりはしません。 ある程度写真が取れて(10-20枚程度?)そろそろ良いだろうというときにはキャリビュレーションAppのウィンドウをアクティブにして、自分でEnterキーを押すことで処理を完結させる必要があります。 そうすろと30-60秒程したした後にCalibrationData.txtが生成されるので、あとは普通にプログラムを終了してOK

HoloLensの映像、切り替わりませんが…。

これは私の勘違い話なのですが、Spectator ViewはHoloLensのカメラを接続したカメラの映像で置き換えるというようなものではありません。 ので、DevicePortalなどから見るMixed Reality Captureはいつも通りのHoloLensのカメラを通してみた世界の映像になっています。 中村薫さんが紹介されいるようにサンプルプロジェクトをUnityで起動するとUnityEditorを通してSpectatorViewの世界を楽しめる(録画や撮影も可)ので、現在はそちらから、ということらしいです。

最後、これから

ここまでで私の躓きポイントを紹介しましたが、これがこれからSpectator Viewを始めようという皆さんの助けになれば幸いです。

個人的な今後最大の課題は実際に客前や出張でSpectator Viewを使うときサーバーになるPCはどうしようかな、とかそういうところですが、ほかにも現実映像とVirtual映像の合成処理を担当しているのはPCなのかHoloLensなのかとか、もし処理自体はPCでやっているのだとしたらMSの最初のプレゼンの時に見たような解像度高めのバーチャル映像をMixedにできるのかなとか、いろいろ考えています。

何より、SpectatorViewをうまく使ったアプリケーションの開発が一番大事ですね。