HoloLensのアプリで装着している人以外がその映像を見るにはMixed Reality Captureを使いますが、遅延があったり無線接続が不安定だったりカメラ画像があまりきれいではなかったりします。
それらを解決する一つの方法として、Spectator Viewというものがリリースされました。
試してみて動くところまではできました。右側のカラー映像が結果です。
なんとなく動いた pic.twitter.com/MVE4Gtj7ps
— 中村 薫 (@kaorun55) 2017年2月14日
間違っているところなどあればフィードバックいただけると助かります。
概要
Spectator ViewはHoloLensアプリに第三者視点を提供します。いままでもMixed Reality Captureでできましたが、よりきれいな映像にすることができます。
Spectator Viewの特長をまとめるとこのようになります。
- カメラ映像はデジタル一眼レフカメラなど高性能なカメラを使用する
- 表示されるホログラム(オブジェクト)はPCで描画する
- Sharingアプリのみ対象となる(スタートメニューなどの表示はできない)
- HoloLensの位置情報のみ実機から取り込む
制約としては下記が考えられます。
- Sharingを前提とするためスタートメニューやバイナリのみのアプリには使えない。
- HoloLensが2台以上必要
このことから、開発したアプリを公の場で発表する、プロモーションビデオの撮影という用途になると思います。
Microsoft HoloLens: Uses for Spectator View
事前準備
必要なソフトウェアやリグのための3Dモデルはこちらにあります。cloneするかHoloLensCompanionKit全体をダウンロードしてください。
必要な機材
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
- 出版社/メーカー: キヤノン
- 発売日: 2012/03/22
- メディア: Camera
- クリック: 15回
- この商品を含むブログ (21件) を見る
Canon 単焦点広角レンズ EF14mm F2.8 L II USM フルサイズ対応
- 出版社/メーカー: キヤノン
- 発売日: 2007/09/30
- メディア: Camera
- クリック: 6回
- この商品を含むブログ (1件) を見る
Hotshoeはちょっと値段が高い(元のAmazon.comが$6(600円)くらい、Amazon.co.jpが6000円くらい)ので別で買った方がよさそうです。。。
HDMIキャプチャボードは下記のようです(PCIe接続)。約24,000円です。
Blackmagic Design intensity pro 4k ビデオキャプチャボード
- 出版社/メーカー: Blackmagic Design
- メディア: エレクトロニクス
- この商品を含むブログを見る
今回使用した機材
カメラについてはHDMI出力できれば良さそう。キャプチャーボードは最初の写真を見る限りUSB接続でも良さそうということで、下記2つを購入して試しました。両方で約8万円です。
Blackmagic Design キャプチャーカード Intensity Shuttle for USB 3.0 000856
- 出版社/メーカー: ブラックマジックデザイン
- 発売日: 2012/06/04
- メディア: Camera
- クリック: 1回
- この商品を含むブログ (1件) を見る
ソフトウェアのセットアップ
手順はこちらに詳しく書いてあります。
必要なソフトウェア
Desktop Video SDKが見つけづらかったので注意してください。下記画像の「Desktop Video 10.8.3 SDK」です。
それぞれインストールを行います。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
実行するとカメラの映像が表示されます。
つぎにHoloLensとカメラを配置します。今回はリグがないので、HoloLensの上にGoProをおいているだけです。
HoloLensとPCはUSBケーブルで接続します。
Calibrationプロジェクトの「stdafx.h」を開き、デバイスポータルのユーザー名とパスワードを設定します。事前にHoloLensのデバイスポータルをONにして、ユーザー名とパスワードを設定してください。
次に キャリブレーションを行います。GitHubにあるキャリブレーションパターンを印刷します。固めのボードに張るとよいと思います。
Caribrationアプリを起動し、キャリブレーションボードを動かします。途中Mixed Reality Captureが起動するので、HoloLensのカメラ撮影時のLEDが点滅します。
「C:\Users\<ユーザー名>\Documents\CalibrationFiles」にカメラ画像とHoloLensの画像および「CalibrationData.txt」が生成されます。
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ビューに追加します。
メニューに「Spectator View」が追加されます。「Compositor」を開くと新しいウィンドウが表示されます。これがSpectator Viewの画面になります。
「Spectator View」のアドインは「AddIns\HolographicCameraRig」になるようです。
ビルド設定から「Run In Backgorund」にチェックします。これで(Unityエディター側の動作だと思いますが)ウィンドウがバックグラウンド状態でも実行されます。
Sharingサービスを実行します。
ここで表示されるサーバーのIPアドレスを後で使用します。
場合によってはSchemaバージョンエラーが出る場合があります。その場合はオリジナルのHolograms-240やHoloToolkit-UnityにあるSharingServerを使用してください。
Spectator View(HoloLens)とSharingサーバーのIPアドレスを設定します。
まずはエディター上で実行してSharingサーバーに接続できることを確認します。
続いてUWPを行い、HoloLensにデプロイします。
HoloLens上でこのアプリを実行し(デバイスポータルから起動すると楽です)、Sharingサーバーに接続されていることを確認します。次にUnityエディター上で実行し、サーバーおよびHoloLensに接続できると、PC上のカメラ位置がHoloLensに同期するようになります。
なんとなく動いた pic.twitter.com/MVE4Gtj7ps
— 中村 薫 (@kaorun55) 2017年2月14日
機材が複雑かつ3Dプリントで作成する必要がある、環境構築が煩雑、HoloLensが2台以上必要であることから、なかなか試しづらいですがアプリデモでは必要になってくるかと思います。
自分も3台のHoloLensでMixed Reality Captureを使った第三者視点はやったので。