クワマイでもできる

クワマイでもわかる

ZED miniでAR動画を撮影する

f:id:kuwamai:20190307144753p:plain

ステレオカメラのZED miniを使ってAR動画を撮影する手順をメモ。バーチャルな映像とリアルの映像を混ぜつつリアルの寝室にボールをぶちまける映像が撮れた。

ZED miniについて

Stereolabsが販売しているステレオカメラ。HMDに取り付ければStereo pass-through機能で現実世界が立体視できる。
他にも現実世界を3DスキャンするSpatial mapping機能や、映像からカメラ位置姿勢を推定するInside-out tracking機能、深度推定によるOcclusion機能とか色々ある。とりあえず公式動画。

VR機器2台も用いて卓球とはなんとも贅沢である。

できた映像

こんな感じ。

動作環境

  • Windows 10
  • Unity 2017.3.1f
  • ZED SDK 2.5
  • ZEDUnityPlugin v2.5
  • HTC VIVE

追記(2020/5/10)

下記環境でも同様の設定で動きました。微妙にパラメータの名称が記事中のスクショと異なりますが見ればすぐわかる程度の違いでほぼ変わりないです。

  • Unity 2018.4.20f1
  • ZED SDK v3.1.2
  • ZED Plugin v3.1.0

ZED miniの3Dモデル

今回の記事では使わなくてもいいけど、ZED miniを何かしらに取り付けたいときはここに公開されてる3Dモデルが役に立つ。例えばトラッカーやコントローラに固定するマウンタを作ってみたり、ロボットに載せてみたり。なぜかQ&Aコーナーにしか載ってないので少し不便。

作成手順

セットアップ

下記のサイトからZED SDKをインストールする。

Unity向けのPluginは下記のサイトに公開されているのでパッケージをインポート。

HMDを使う際はOculus Rift CV1とHTC VIVEに対応しているのでそれぞれのPluginをAsset storeからインポートしておく。

HMDへのZED miniの取り付け方は下記のサイトで説明されている。付属のガイドに合わせてカメラホルダーを粘着テープで貼り付ける方式。
テープが強力でHMDとカメラホルダーの付け外しがしんどいので、僕は貼り付け前に頑張って剥がして違うテープにした。ZED miniを使わないときもカメラホルダーが邪魔に感じない人は付属のテープで問題ないと思う。

Camera prefabの追加

Asset/ZED/PrefabsZED_Rig_StereoZED_Rig_Monoがある。HMDによる立体視(Stereo pass-through)をする際はStereoの方を、そうでない場合はMonoをHierarchieに追加する。
今回はZED_Rig_Stereoを追加した。もうこれだけで実行するとカメラが起動してカメラ映像が見れるし、Occlusionもされる。親切。

f:id:kuwamai:20190228191408p:plain

  • 公式ドキュメント

カメラ設定

ZED_Rig_StereoZED Managerがアタッチされており、カメラ映像に関する設定がいろいろできる。

f:id:kuwamai:20190228220456p:plain

さらに下にあるOpen Camera Controlをクリックするとウィンドウが開き、ホワイトバランスや彩度等が設定できる。

カメラ位置の設定

ZED miniは単体でもPosition trackingができるけど、OculusやVIVEデバイスとの位置関係は分かっていない。例えばTrackerの位置に3Dオブジェクトを表示させても、ZED miniの映像と3Dオブジェクトの位置がずれてしまう。 そのためControllerやTrackerにZED miniを固定し、どのデバイスに固定したのか設定する必要がある。今回はHMDに取り付ける設定をする。

ZED_Rig_StereoZED Controller Trackerをアタッチし、Device To Trackの項目にHMDを設定する。 また、Latency Compensationによって、映像とデバイス位置の遅延を調整することができる。

f:id:kuwamai:20190228221507p:plain

ZED_Rig_Stereoの子オブジェクトであるCamera_eyesZED Offset Controllerをアタッチする。これでZED miniのPosition trackingとHMDのPosition trackingが一致するようになる。

f:id:kuwamai:20190228222627p:plain

  • 公式ドキュメント

  • 追記(2020/5/10)
    厳密にどのバージョン以降か確認できてませんが、ZED Plugin v3.1.0ではこの方法が使えなかったので上記のドキュメントを見てください。

Controller, Trackerの設定

ControllerやTrackerの位置に合わせたオブジェクトを表示したい場合はカメラと同様、オブジェクトにZED Controller Trackerをアタッチする。

f:id:kuwamai:20190228233551p:plain

  • 公式ドキュメント

Spatial mapping

Spatial mapping機能を用いて現実の床や壁、家具などのオブジェクトとバーチャルなオブジェクトの衝突判定を行うことができる。ZED_Rig_Stereoの子オブジェクトにAssets/ZED/Examples/SpatialMapping/PrefabsZED_Spatial_Mappingを追加する。

f:id:kuwamai:20190228233931p:plain

実行時にZED Spatial Mapping ManagerStart Spatial Mappingボタンを押すことでSpatial mappingが始まり、Stop Spatial Mappingを押してSpatial mappingを終了することができる。

f:id:kuwamai:20190228234350p:plain

  • 公式ドキュメント