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

Natural Software

KinectなどのDepthセンサーを中心に活動しています

HoloLens Spectator Viewを試してみた

HoloLens

HoloLensのアプリで装着している人以外がその映像を見るにはMixed Reality Captureを使いますが、遅延があったり無線接続が不安定だったりカメラ画像があまりきれいではなかったりします。

それらを解決する一つの方法として、Spectator Viewというものがリリースされました。

f:id:kaorun55:20170225144532p:plain

Spectator view

試してみて動くところまではできました。右側のカラー映像が結果です。

間違っているところなどあればフィードバックいただけると助かります。 

 

概要

Spectator ViewはHoloLensアプリに第三者視点を提供します。いままでもMixed Reality Captureでできましたが、よりきれいな映像にすることができます。

Spectator Viewの特長をまとめるとこのようになります。

  • カメラ映像はデジタル一眼レフカメラなど高性能なカメラを使用する
  • 表示されるホログラム(オブジェクト)はPCで描画する
  • Sharingアプリのみ対象となる(スタートメニューなどの表示はできない)
  • HoloLensの位置情報のみ実機から取り込む

制約としては下記が考えられます。

  • Sharingを前提とするためスタートメニューやバイナリのみのアプリには使えない。
  • HoloLensが2台以上必要

このことから、開発したアプリを公の場で発表する、プロモーションビデオの撮影という用途になると思います。

 


Microsoft HoloLens: Uses for Spectator View

 

事前準備

必要なソフトウェアやリグのための3Dモデルはこちらにあります。cloneするかHoloLensCompanionKit全体をダウンロードしてください。

github.com

 

必要な機材

f:id:kaorun55:20170225150902p:plain

Spectator Viewには写真の機材が必要です。

  • DSLR:Digital Single Lens Reflex:デジタル一眼レフカメラ
  • Tripod:三脚
  • Hotshoe Fastener:カメラの上につける雲台
  • 3D Printed Adapter:雲台とブラケットをつなげるアダプター
  • Aluminum HoloLens Bracket:アルミで作成されたHoloLensを固定するブラケット

3D Printed Adapter」および「Aluminum HoloLens Bracket」は自分で作る必要があります。

 このほかに下記機材が必要です

  • HDMIケーブル:カメラ映像をキャプチャするためのケーブル
  • HDMIキャプチャーツール:カメラのHDMI出力をPCに取り込むための機材

カメラとレンズは下記を推奨のようです。合わせて約50万円です。

Canon デジタル一眼レフカメラ EOS 5D Mark III ボディ EOS5DMK3

Canon デジタル一眼レフカメラ EOS 5D Mark III ボディ EOS5DMK3

 

 

Canon 単焦点広角レンズ EF14mm F2.8 L II USM フルサイズ対応

Canon 単焦点広角レンズ EF14mm F2.8 L II USM フルサイズ対応

 

Hotshoeはちょっと値段が高い(元のAmazon.comが$6(600円)くらい、Amazon.co.jpが6000円くらい)ので別で買った方がよさそうです。。。

HDMIキャプチャボードは下記のようです(PCIe接続)。約24,000円です。

Blackmagic Design intensity pro 4k ビデオキャプチャボード

Blackmagic Design intensity pro 4k ビデオキャプチャボード

 

 

今回使用した機材

カメラについてはHDMI出力できれば良さそう。キャプチャーボードは最初の写真を見る限りUSB接続でも良さそうということで、下記2つを購入して試しました。両方で約8万円です。

【国内正規品】 GoPro ウェアラブルカメラ HERO5 Black

【国内正規品】 GoPro ウェアラブルカメラ HERO5 Black

 

 

Blackmagic Design キャプチャーカード Intensity Shuttle for USB 3.0 000856

Blackmagic Design キャプチャーカード Intensity Shuttle for USB 3.0 000856

 

 

ソフトウェアのセットアップ

手順はこちらに詳しく書いてあります。

github.com

必要なソフトウェア

Desktop Video SDKが見つけづらかったので注意してください。下記画像の「Desktop Video 10.8.3 SDK」です。 

f:id:kaorun55:20170225154340p:plain

それぞれインストールを行います。OpenCVは展開してCドライブ直下においてください(「C:\opencv」となるように)。

Caribration

カメラとHoloLensのRGBカメラの位置を合わせるためにキャリブレーションを行います。

「HoloLensCompanionKit\HoloLensCompanionKit-master\SpectatorView\Calibration」にある「Calibration.sln」を開きます。

「dependencies.props」というファイルがあるので、下記2つのパスが通っていることを確認してください。

  • OpenCV:C:\OpenCV\build\x64\vc14
  • BlackMagic SDK:C:\BlackMagic\Blackmagic DeckLink SDK 10.8.3\Win\include

f:id:kaorun55:20170225154712p:plain

実行するとカメラの映像が表示されます。

f:id:kaorun55:20170225155024p:plain

つぎにHoloLensとカメラを配置します。今回はリグがないので、HoloLensの上にGoProをおいているだけです。

f:id:kaorun55:20170225155046p:plain

HoloLensとPCはUSBケーブルで接続します。

Calibrationプロジェクトの「stdafx.h」を開き、デバイスポータルのユーザー名とパスワードを設定します。事前にHoloLensのデバイスポータルをONにして、ユーザー名とパスワードを設定してください。

f:id:kaorun55:20170225182122p:plain

次に キャリブレーションを行います。GitHubにあるキャリブレーションパターンを印刷します。固めのボードに張るとよいと思います。

Caribrationアプリを起動し、キャリブレーションボードを動かします。途中Mixed Reality Captureが起動するので、HoloLensのカメラ撮影時のLEDが点滅します。

f:id:kaorun55:20170225175556p:plain

「C:\Users\<ユーザー名>\Documents\CalibrationFiles」にカメラ画像とHoloLensの画像および「CalibrationData.txt」が生成されます。

f:id:kaorun55:20170225182640p:plain

Compositorのビルド

必要かどうかわかりませんが「HoloLensCompanionKit\SpectatorView\Compositor」をビルドします。HoloLensの実機情報をやりとりする部分です。PC側のCompositorはx64、HoloLensに組み込む側はx86ですので両方のビルドを行い「CopyDLL.cmd」を実行します。

Unityサンプルを起動する

「HoloLensCompanionKit-master\SpectatorView\Samples\SharedHolograms」をUnityで起動します。Holograms-240をベースにSpectator Viewのアドインが入っています。

先ほどの「CalibrationData.txt」をProjectビューに追加します。

f:id:kaorun55:20170225183040p:plain

メニューに「Spectator View」が追加されます。「Compositor」を開くと新しいウィンドウが表示されます。これがSpectator Viewの画面になります。

f:id:kaorun55:20170225183043p:plain

f:id:kaorun55:20170225183041p:plain

「Spectator View」のアドインは「AddIns\HolographicCameraRig」になるようです。

f:id:kaorun55:20170225183044p:plain

ビルド設定から「Run In Backgorund」にチェックします。これで(Unityエディター側の動作だと思いますが)ウィンドウがバックグラウンド状態でも実行されます。

f:id:kaorun55:20170225183045p:plain

Sharingサービスを実行します。

f:id:kaorun55:20170225183046p:plain

ここで表示されるサーバーのIPアドレスを後で使用します。

場合によってはSchemaバージョンエラーが出る場合があります。その場合はオリジナルのHolograms-240やHoloToolkit-UnityにあるSharingServerを使用してください。f:id:kaorun55:20170225184125p:plain

Spectator View(HoloLens)とSharingサーバーのIPアドレスを設定します。

f:id:kaorun55:20170225183047p:plain

まずはエディター上で実行してSharingサーバーに接続できることを確認します。

f:id:kaorun55:20170225183048p:plain

続いてUWPを行い、HoloLensにデプロイします。

HoloLens上でこのアプリを実行し(デバイスポータルから起動すると楽です)、Sharingサーバーに接続されていることを確認します。次にUnityエディター上で実行し、サーバーおよびHoloLensに接続できると、PC上のカメラ位置がHoloLensに同期するようになります。

 

機材が複雑かつ3Dプリントで作成する必要がある、環境構築が煩雑、HoloLensが2台以上必要であることから、なかなか試しづらいですがアプリデモでは必要になってくるかと思います。

自分も3台のHoloLensでMixed Reality Captureを使った第三者視点はやったので。