みくだん

MMD+Kinect関連のあれこれ

2010/12/24
MMD技術 0
予めミクに成りきって演技したデータを撮れば、モニタの前にケーキ置いたら喜んでくれます。
予めミクに成りきる必要がありますが。
モニタの前に…
喜んで…

そんな訳で、Kinect関係のあれこれをちょっとまとめてみようかと。
もちろん良い点ばかりではなく、今後に期待したい所や、問題点も結構ありますので、導入後すぐに色々と「使える」ものではありません。

â– å°Žå…¥
詳しくはこちらのブログを参照にしてください。かなり丁寧に説明されてます。

まとめ?ブログ - Kinect1 -OpenNI導入-
http://kgxpx834.blog58.fc2.com/blog-entry-22.html


VistaないしWindows7ユーザーで引っかかりやすいのは管理者権限系の問題にぶつかる事です。
ドライバはもちろんシステムに入れますが、ミドルウェアとなるNITEのインストールで権限変更が及ばない任意のドライブやフォルダに入れると上手く起動しない場合があるそうです。
権限を変更するか、もしくは素直にシステムドライブへインストールするかが無難な所でしょうか。
残念ながら、Vistaも7も未導入なのでこちらでは確認できません。

一方、MMD側ではMMD本体にKinect関連の機能が全て入ってる訳ではなく、DxOpenNI.dll(SampleConfig.xml)経由でKinectのデータを取得してます。
MMD本体とは別途ダウンロードし、指定のフォルダ(DATAフォルダ)に解凍する必要があります。

データの流れとしては(推測含む)

Kienct本体(全ての元凶)
 ↓ USB
OpenNIキネクトドライバで受取り
 ↓
NITE(ドライバから取得したデータを加工・処理。OpenNIミドルウェア)
 ↓
DxOpenNI.dll(MMD専用ライブラリ。MMD用にデータ整理)
 ↓
MMD本体(MMDモデルボーンデータへの変更など)

という流れではないでしょうか。
ひとまず、このワンセットが必要になります。

また、USBハブなどを経由してるとハード自体が認識しない場合もあるので、本体直差しを推奨します。

■設置
Kinectのマニュアルやパッケージにはカメラと被写体との距離が1.8m以上が必要となっています。
認識には頭からくるぶし辺りまでが深度センサ(RGBカメラの範囲ではない)内に収まるようなサイズにしなければならないので、奥行方向の動きも認識させようとしたら、更に距離が必要となります。
2人プレイ用推奨の2.5m辺りが必要かもしれません。この距離になると8畳ないし12畳クラスのリビングのような広さが必要になりますので、一人暮らしは涙目です。

MMDで使用する時には特に、カメラの高さも重要なファクターとなります。
一番ベストなのは、体の中心(鳩尾?臍の間くらい)の高さで真正面に設置するといいでしょう。
ですが住宅事情などでその場所に設置すること自体が難易度が高いです。
難しい場合はやや低めないし高めから狙って、カメラの角度を調整して下さい。

Kinectは上下方向±15度に動くサーボモータが内臓されており、XBOX360ではソフトによって自動追尾してくれる機能があるようですが、残念ながらOpenNIドライバには駆動系をコントロールするものはありません。
推奨しませんが、ガチャガチャと嫌な音を立てながら動かすか、Kinect本体が落ちないようにしつつ、小物をはさんだりして角度を調整するといいかもしれません。
(ちなみにLEDもPCにつなぐと遅い点滅だけですが、制御が可能で他の色を発色させたり点灯パターンを変えられたりできるそうで。将来的にはメトロノーム的な扱いができるかもですね)

カメラの設置調整には、OpenNI付属のNiViewer.exeを使うといいでしょう。
RGBカメラと深度センサの情報が同時に見れますし、深度センサがRGBカメラに対して90%くらいの範囲でしか取得しないというのが見て分かります。
MMDではもちろ深度センサ情報を使ってますので、RGBカメラの範囲に収まってるからと動き回ると、深度センサからは外れたりするので注意です。
家の中ではありますが、立ち位置の中心や範囲などを小物やテープなどを使ってバミって(記し付けして)おくといいでしょう。

■MMDでの動作
実際の使用している様子などは、生放送や動画などが増えてますのでそちらをご覧くださいw
さて、細かい所を羅列してみます。
・記録開始は3カウント後だが、この3カウント、PCの負荷状態によっては正確に3秒という訳ではないので遅くなる場合も
・記録は7分が限度。それ以上となるとエラーとなる。最悪、MMDが固まる可能性も?
・取得対象は14ボーン。
 センター・足IKx2・首・上半身・腕x2・肘x2・下半身・足x2・ひざx2(足IK使用時)
・IKを切っての記録も可能
・記録時に操作中となっているモデルの体格へ最適化される
・記録対象ではないボーン・表情などに予めキーフレームやゼロフレーム登録などを行っておくとそれが適用されたまま記録することができる。(例:まばたきさせながら動きたい、手をグーにしたまま記録など)
・記録開始時にKinectからの認識が外れるような場所でPCを操作すると、モデルの挙動が滅茶苦茶になったり裏返ったり、場合によっては初期ポーズの認識から再設定しなければならない。
・認識開始はコロンビアポーズ
・MMEとの併用も可能
・Kinectモード中でもアクティブモデルの変更が可能
・また視点変更も可能
・フルスクリーンモードも可能
・記録開始は、現在フレームからなので、追記や途中からの上書きも可

■TIPS・問題点・どうでもいい話など
・スウェットなどのだぼっとした服装だと誤認識の確率が上がるので、出来るだけボディフィットした服装がベスト。最強は全裸。
・赤外線センサが主なので真っ暗な部屋でも認識するものの、出来るだけ白系や明るめの服装の方が何となく誤認識が少ない気もする。肌を露出しておけばとりあえず確実なので、手先やくつしたは露出しておいた方がいい。
・Kinectに向かって鏡を向けると、センシング不可となり鏡の部分が認識されない。姿見の後ろにいけば、透明人間になれるが意味不明。鏡面系のアクセサリを付けてると誤認識になる場合も。
・クッションだろうがペットボトルだろうが、動けばそれも誤認識の対象になる。壁の近くで動いたりすると場合によっては壁すら認識してしまう。
・開始ポーズはコロンビアなので、犬・猫などには無理。が、記録中に足元にじゃれつかれると誤認識する可能性はあり。
・たとえ床がフローリングだとしても、Kinectの位置や角度によってではあるがMMD上での接地感を出すのは難しい。どうしても足が浮いたり沈んだりする
・認識が外れたボーンは直前の状態で固まり、かつボーンがその部分だけ記録されない。再認識後に記録が自動的に再開
・全ての回転系の認識が弱い。これは手足の位置情報から回転へ変換されてる為なので仕方ない。
・体を一回転させようとすると、少しコツが必要。
・気を付けができない。体に腕をくっつけすぎると、腕の認識が無くなる。また、体の後ろに腕を回すとこれもまた認識が外れる。
・時間軸分解能は30fpsとなるので、早すぎる動きはキャプチャできない。なので009の動きは取得できない。
・被写体の前などに高熱源(たき火やコンロ)などが点火されてると熱の影響で正しく距離認識が出来ない。(深度センサで陽炎が見れる)
・Kinectに2次元を見せても何の反応もない(現実主義者らしい)
・精度の問題か、自分が不動な状態でもMMD上では結構ふらつく
・Kinectモードを再起動させた時の、再認識には時間が掛る場合もあれば、障害物が多い場合、かなり大幅に動かないと動体認識すら時間が掛る場合もある
・記録キーフレームはハンパないので、1フレインサートするだけでもかなり時間が掛る。なので、取得後、必要部分だけVMD化し、新規または別プロジェクトで調整した方が早い。
・腕と肘はかなりありえない方向で曲がってたりするので、再調整には多段ボーンの活用が必要。
・腕の動きと上半身が実際とは違う連動の仕方をする

…とまぁ、色々小ネタは尽きないですが、こんな所でしょうか。
綺麗にモーションを撮ろうとするとちょっとした工夫や、限定された条件を把握する必要があります。
本格的なダンスとなると、頭や手首の情報が取得できないところや回転系の取得が難しいなどの問題で、実用的とは言い難いものがあります。
簡単な動きなら綺麗に撮れたりしますので、その範囲内での活用となるでしょう。

ドライバであるOpenNIもまだ出たばかりですし、Kinectのハード性能の一部しか引き出してない状態なので、MMD側というよりはOpenNI側の問題が多いと思われます。
ドライバもまだアルファ版ですので、今後のバージョンアップに期待する所、大です。
OpenNIのオフィシャルサイトは時折覗いてみるといいかもしれませんね。
関連記事

Comments 0

There are no comments yet.
かんな@バーチャルJC
Admin: かんな@バーチャルJC
ニコニコ動画などでMMD動画をうpしてるしがないユーザーの一人。
バーチャルJC。文筆系の活動もしています。

VRChat & clusterユーザー:kanna3939
継続プレイゲーム:ウマ娘、原神、鳴潮、ゼンレスゾーンゼロ
Steamゲーム:Factorio、Satisfactory、
MMD技術