Kinect をモーキャプの撮影と編集、Vicon MX との比較レビュー (キャリブレーション、撮影編)

従来の Motion Capture は、撮影機材を揃えるまでに数百万円や数千万円といった膨大な金額が掛かってしまいます。

しかし、Kinect の登場によって低予算で簡単にモーションキャプチャーができるようになりました。今回は、その Kinect を用いて、Kinect モーションキャプチャーの代表的なソフト「iPi Desktop Motion Capture™」 と、従来のモーションキャプチャー技術との比較を添えて紹介していきたいと思います。

目次

1. 概要

2. 従来のモーションキャプチャーとの違い

3. 撮影

   3-1. Kinect をPCに接続

   3-2. カメラ角度の微調整、保存先の設定

   3-3. キャリブレーションシーンを撮影

   3-4. キャリブレーションシーンファイルの作成。

   3-5. Vicon との比較 (キャリブレーション編)

   3-6. Kinect による問題 (キャリブレーション編)

   3-7. モーションを撮影

   3-8. Vicon との比較 (撮影編)

   3-9. Kinect による問題 (撮影編)

1. 概要

iPi Desktop Motion Capture™」 は、省スペースかつ低予算でモーションキャプチャー撮影をすることができ、マーカーや磁器などは使用せず、複数のPlayStation Eye カメラ、または Kinect センサーといったゲームデバイスのカメラを用いて撮影するのを特徴としたソフトです。

このレビューでは、 Kinect センサーを用いての撮影・編集の仕方、また従来のモーションキャプチャーとどういった違いがあるか、モーションキャプチャーの最高水準である 「Vicon」 との比較を添えてご紹介したいと思います。

1

 

2. Kinect 従来のモーションキャプチャーとの違い

まず、従来の モーションキャプチャーシステムは、いくつかのキャプチャー技術が存在します。その中で代表的なものは、光学式、機械式、磁気式、ビデオ式の4つあります。

しかし、Kinectはそれらの技術に相当しておらず、赤外線深度センサーを用いて赤外線の奥行きを計算し、人体の動きを認識しています。そのため、モーキャプ撮影で使用する特殊なスーツやマーカー、トラッカーが必要とせず、被写体を映すだけで人から Kinect までの距離を図り、その人の大きさや骨格のさまざまな動きを検出し、そしてゲームや映像コンテンツのキャラクターの動きを合成して操作する形となっています。そのため使用する設備が少なく、低コストで済む大きな利点があります。

3. 撮影

ここでは、iPi Recorder Kinect を用いてモーションを撮影する方法をご紹介していきます。

主なワークフローは以下のようになります。

  ① KinectPCに接続

  ② カメラ角度の微調整、保存先の設定

  ③ キャリブレーションシーンを撮影  Kinect 2台で撮影した時のみ

  ④ キャリブレーションシーンファイルの作成  Kinect 2台で撮影した時のみ

  ⑤ モーションを撮影

手順

KinectPCに接続

  iPi Desktop Motion Capture は、ソフトのバージョンによって異なりますが最大 2台のKinectで撮影することができます。 まず、Kinect PCUSB 端子の接続部繋ぎます。この時、USB/電源ケーブルに電源がささっているかを確認してください。

② カメラ角度の微調整、保存先の設定

モーキャプ撮影用ソフト 「iPi Recorder」 を開きます。すると、使用するカメラを選択する画面が表示されます。

まず、使用したい Kinect センサーにチェックを入れます。1台であれば1つのみ、2台であれば2つチェックを入れます。その後、”OK” ボタンを押します。

  すると、下の画像のように Kinect が認識している深度センサーの映像が表示されます。

 Kinect 1

Kinect 2

次に、被写体の上下左右を微調整していきます。

まず、アクターに深度センサーの手前の緑の位置に立ってTポーズをしてもらいます。その後、被写体にアクターが真ん中なるように Kinect センサーを直接動かして左右の角度を調整します。

そして、上下はウィンドウ上にあるスライダーで調整します。 この時も、アクターが真ん中になるように調節します。

Kinect 1

Kinect 2

  ウィンドウの下よりモーションのビデオファイルの保存先を指定します。

キャリブレーションシーンを撮影

Kinect2台で撮影した際のみ、これを行う

Kinect 2台で撮影する際、Kinect を左斜め前と右斜め前に置いて撮影する方法と、Kinect をアクターの前後に置いて撮影する方法2つのタイプがあります。 まず、最初に Kinect を置いてある位置がどのようになっているか確認しましょう。

今回は、Kinect を左斜め前と右斜め前に置いた状態のもので撮影します。

キャリブレーションするために、長方形もしくは正方形かつ深度センサーが認識できるようなボードを用意します。深度センサーは、黒い色をしたものや透明色、金属のような反射する色は認識できず、深度センサーの映像より黄色のノイズとなってしまうので、注意しましょう。

大きさは、最低で縦が肩から腰の高さで、横が左右の肩幅程度の物が好ましいです。

次にキャリブレーションを行います。

まず、撮影をしている際、最初の1秒はアクターを移さない状態で背景を撮影します。

その後、アクターがボードを持った状態で被写体の真ん中に入り、2台のKinectの間にボードを向けます。その状態で、約2秒間静止し、つぎに約5秒間左右にそれぞれ15° 程度ボードの向きを変えていきます。時間が経ちましたら、正面を向いて撮影を終了します。

  撮影を始める時は、ウィンドウの下の  “Start Video Recording” と書かれたボタンを押します。

  撮影を終了したいときは、“Stop Video Recording” と書かれたボタンを押します。

  すると、保存先に AVI ファイルとしてキャリブレーション用のビデオファイルが保存されます。

キャリブレーションシーンファイルの作成

Kinect2台で撮影した際のみ、これを行う

iPi Desktop Motion Capture を開きます。

ウィンドウ左上の ”Open” より、Kinect で撮影したキャリブレーション用のムービーファイルを開きます。

次にビデオレイアウトを選択します。この時、Kinect で撮影したデータは、 ”Depth video from MS Kinect、”Depth video with RGB from MS Kinect2つを選択することができます。

Depth video from MS Kinectは、Kinect が認識した赤外線照射の奥行きの映像のみを表示し、一方の”Depth video with RGB from MS Kinectは、Kinect が認識した赤外線照射の奥行きの映像とRGB映像の2つが表示されます。

今回は、”Depth video from MS Kinectを用いて編集を行いたいと思います。

  開くと下のようなウィンドウが表示され、バックグラウンドの非表示処理が行われます。

次に、キャリブレーション用のボードがTポーズの位置に立って静止する場面に、ウィンドウの下にある “Region of Interest” と “Take 1” の開始フレームをその場面のフレームに合わせます。

Region of Interest” と “Take 1” の範囲を開始フレームから約5~10秒間で設定します。 (30フレーム/s)

次に、右のウィンドウから “Calibration" を選択し、 “Depth Sensors Arrangement” よりアクターを軸にKinectを設置した角度を指定します。

今回は、アクターから見て右斜め前と左斜め前にKinect を設置したので、“Angle between sensors is 30 – 90 degrees” を選択します。その後 ”Calibrate Based on 3D Plane” と書かれたボタンを押します。

すると、2つのカメラに表示されているボードがに完全に重なるように処理されます。

処理が完了後、Kinect 2つカメラが重なっているか確認するためにウィンドウ左上の ”View” より “Hide Bankground” と “Show Depth From All Sensors” を選択します。

すると、背景が非表示となり、2つの Kinect で認識した赤外線の映像が重なって表示されます。

この時、ボードの角と真ん中の付いている緑のマーカーが、2つ映像と重なって合計で5個になっていれば、キャリブレーション完了となります。

しかし、下の画像ではマーカーが10個あるため、キャリブレーション失敗となります。

  キャリブレーションが完了したら、ウィンドウ右より “Scene” を選択し、”Save scene…” ボタンを押して、キャリブレーションしたシーン情報を保存します。

キャリブレーション Vicon と比較

・カメラアングルの調整について

Vicon のカメラの上下左右のアングルは、三脚などに取り付け、手動で調整を行います。そのため、複数人で1人がPCの画面を見て、他はカメラアングルの調整するという作業になってしまいます。しかし、Vicon のカメラは、カメラ自体を斜めにしたり上下を逆さにするなど、自由なアングル調整をすることができます。

Kinect の場合は、取り付けと左右のアングル調整を手動で行いますが、上下の調整はチルトモーターを用いてPCで遠隔操作を行います。その分、カメラ調整が1人で簡単にできます。しかし、Kinect を取り付ける際、地面と垂直に設置しなくてはならないため、Vicon に比べアングル調整の自由度がありません。

・フレームレート数と画素数による問題

1秒間のフレームレート数(fps) と画素数が多ければ多いほど、カメラのノイズも少なく、位置情報の計算もより正確に行われます。弊社で管理してます「mocapdata.com」では、Vicon カメラ「MX-T40 S 」を使用しており、fps は最大で2000fpsで、画素数は約400万画素。

それに比べ、Kinect の場合、fpsは最大で30fps、画素数が約30万画素であり、 Vicon カメラと比較すると fps素数ともに非常に少ないです。そのため、Kinect でより正確なモーションキャプチャーを行うには、とても難しいです。

キャリブレーションで使う備品について

Vicon では、システム専用のマーカーが付いたワンドとフレームを用いてキャリブレーションを行います。しかし、Kinect の場合、キャリブレーション用の小道具特に決まっておらず、今回のソフトのように四角のボードを用いたり、Kinect が認識した人体そのものを利用してキャリブレーションを行うことができるので、コストがほとんど掛かりません。

しかし、個々カメラにワンドを映して11つのフレームから細かな位置情報を計算するような処理ができないため、撮影スペースに確実に焦点を合わせることが困難であり、また、より確実にクオリティの高いモーションを撮影するのが非常に難しいです。

Vicon NEXUS でのキャリブレーション

Kinect による問題(キャリブレーション編)

・撮影している物体の色による問題

Kinectは透明色または黒い色、金属色の物体には赤外線が反射されにくく、ノイズとして認識されることがあります。そのため、キャリブレーションでボードや服などの色が透明色または黒い色、金属色だと、キャリブレーションに失敗してしまうことがあるため、Kinect で撮影を行う前に身に付けるものや機材の色等を確認しましょう。

⑦モーション撮影

  まず、撮影をしている際、最初の1秒はアクターを移さない状態で背景を撮影します。その後、アクアーが被写体の真ん中に入り 0.5 ~ 1秒間Tポーズします。その後、アクションを行い、アクションが終了したら最後に 0.5 ~ 1秒間 Tポーズをして撮影を終了します。

  Kinect 1台

  Kinect 2台

  撮影を始める時は、ウィンドウの下より “Start Video Recording” と書かれたボタンを押します。

  撮影を終了したいときは、“Stop Video Recording” と書かれたボタンを押します。

  すると、保存先に AVI ファイルとしてモーションのビデオファイルが保存されます。

Vicon MXとの比較(撮影編)

・撮影できる範囲の長さ

Kinect の撮影範囲は、0.5m ~ 10mですが、0.5mから撮影しても全身は映らず、また、10m付近の場所で撮影してもトラッキングが安定しません。そのため、Kinect で撮影する際は全身が映るように、なおかつトラッキングが安定した状態で撮影しなくてはなりません。

Kinect での推奨撮影範囲は、1.6m ~ 2.8m で、その分撮影スペースが狭くなってしまいます。それに比べ、Viconは0.4m ~ 8m 最大で 11m まで撮影することができます。全身のモーションを撮影する際の推奨範囲は 1.6m ~ 7.8m で、広範囲のスペースで撮影することができます。

・モーキャプ撮影後に出力されるファイルについて

「iPi Studio」で出力される編集用ようのファイルは、AVI ファイルであり、その容量は 1モーション30秒あたり約800 MB です。

Vicon から出力されるX2D ファイル、C3Dファイル、VSTファイル、VSKファイルを含め 約50 MB であり、Kinect で撮影された AVI ファイルに比べ容量が約 1/8 なので、非常に少ないです。

Kinect による問題(撮影編)

  ・アクターが他の物体を触れることによる問題

  Kinect は、プレイヤーが人以外の大きな物体に触れると、誤認で触れているものが人体の一部だと認識してしまうこともあります。撮影する際は、なるべく大きな物体を触れないようにしましょう。

 

OpenNI でのトラッキングの誤認の様子

Kinect をモーキャプの撮影と編集、Vicon MX との比較レビュー (編集編)

Kinect をモーキャプの撮影と編集、Vicon MX との比較レビュー (まとめ)