まず、externalcamera.cfgってなんだという方、下記を先にご覧ください。
http://naomo.co.jp/2017/09/htc-vive%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9Fmixedreality/
さて、MixedRealityをやる際に重要なexternalcamera.cfgですが、中身は単なるテキストファイル。
x=0.01062283
y=0.01919141
z=-0.1200893
rx=289.3507
ry=82.38242
rz=96.94111
fov=61.78545
near=0.1
far=1000
こんな内容です。これは、リアルの世界を撮影するカメラの
1、位置(x,y,z)
2、角度(rx,ry,rz)
3、画角(fov)
4、表示できる距離(near,far)
4の距離はあまり意味がなく、0.1と1000固定でもいいと思います。
問題は123です。これを試行錯誤で割り出すのは大変なので、そのためのツールがいくつかあります。
今回はそれらを比較してみようと思います。
動画を合わせて見るとわかりやすいです。
1、MixedRealityTwoControllerのcameraalign
How to Create Mixed Reality Videos for the Vive – with Two Controllers
という記事があります。この記事は、2つのコントローラーだけでMixedRealityを実現するときに、VirtualControllerを作って3つめのコントローラーを作る、という記事なのですが、この中で
MixedRealityTwoController-0-0-3.zipがダウンロードできます。
この中にcameraAlign.exeというUnityで作られたアプリがあり、これでexternalcamera.cfgを作ることができます。
簡単に作れるのですが、微調整が出来ないので、実際にはそのまま使えないと思います。微調整は自分でなんとかするしかないかと。
2、Steamで販売されているvivr
とても簡単に作ることができます。
カメラの位置を指定して、4隅でコントローラーをタップするだけです。
オプションとしてカメラの遅延秒数も測れます。
ちなみにこれで作成すると、
sceneResolutionScale=0.5
frameSkip=0
frameLatency=0
という他のでは作成されない項目が作成されます。これは使われてるんでしょうか?
3、MixedRealityConfigurator
http://tribalinstincts.com/mixedrealityconfigurator/
動画 https://youtu.be/OlwqAYKR_nc
このアプリはとても丁寧に微調整できます。
グリーンバックの部屋にマーカーを貼り、そのマーカーの位置を微調整することでかなり正確なexternalcamera.cfgを作れます。
ただし、私にはちょっとめんどくさい作業でした。
というのもカメラには私はトラッカーを載せているのですが、
このアプリはトラッカーに対応していません。
そこでトラッカーをコントローラーに偽装します。
https://liv.tv/htc-vive-tracker-mixed-reality
このVIVE Tracker Role Changer 0.8.exeは、ViveのコントロールボックスをPCから外し(私は電源を抜きました)、トラッカーを有線接続したうえで実行します。
そしてSteamVRを再起動してください。
この後、トラッカーだけ電源を入れ、あとは上記の動画のように設定できます。
終わったらViveの接続を外し、再度実行してトラッカーの認識に戻しておきましょう。
便利なんですけど、面倒は面倒です・・・
あと、この微調整の前の認識も大変です。
MRに使うカメラの映像がうまく出ないことがあります。(XSPlit推奨はそのせい?)
2/5の場面で、トラッカーのほうに仮想MRカメラがくっつくはずが、手元のコントローラーにくっつくことが何回かありました。
とにかくうまくいくまでに10回は試行錯誤したと思います。
おすすめは
私は2のvivrです。有料ですが安いですしとにかくノートラブルです。
HMDをかぶる必要もありません。
オプションの遅延測定も便利です(こっちはたまにおかしくなりましたが)
さぁexternalcamera.cfgさえ作ればあとは動画を撮るだけ。。。なんですが、これもちょっと一手間あります。
これはまた別の記事でご紹介しますね。