KINECT->BVH->Poserへのpath(20140601)

KinectでのモーションキャプチャからBVHを吐かせて、最終的にposerに読み込ませて自分の好きなアバターで動かそうと思っていた。
参考にしたのは、このサイトだった。これで
うまくいきそうに思えたが、いかんせん2011年10月の記事でもうかなり古いし、加えてOpenNIもサイトをこの4月で閉じた。とりあえず今入手可能なドライバ/アプリケーションで表題に述べたことができるかどうか、試してみた。OSはWindows 7 64bit professional.

1.前準備

    これはリンクにはったサイトとまったく同様、Microsoft Visual c++ 2010 Express、最新のDirectX
    それからMicrosoft XNA Framework Redistributable 4.0とMicrosoft .NET Framework 4をインストールした。
    PC環境をテストモードにするという項目もあったので、一応やったが、これが原因でうまくいったのかどうかは定かではない

2.Microsoft Kinect SDK & OpenNI2
昔のサイトで述べられたOpenNI for Win32bit 1.3.2.1 & Sensor-Win -5.0.3.3の組み合わせでうまく動作しなかったので、
ここでは、OpenNI-Windows-x64-2.2.0.33をインストール。そしてMicrosoftの開発環境を利用すべく、KinectSDK-v1.8-Setupならびに
KinectDeveloperToolkit-v1.8.0-Setupをインストールした。これでKinectを接続すると、デバイスマネージャには、PrimeSenseの配下に、Kinect for Windows Audio Array Control, Kinect for Windows Camera そして Kinect for Windows Security Controlが現れるようになった。
ここまでうまく行くと、Program Files/OpenNI2/Samples/Bin/simpleViewer.exeが動いてぼんやり自分の姿が映る。

3.NiTE2のインストール
NiTEも64bitベースのNiTE-Windows-x64-2.2をダウンロードしてインストール。ここまでできると、Program Files/PrimeSense/NiTE2/Samples/Bin/UserViewer.exeをたたくと、キャリブレーションの後、自分の姿がトレースされることに気づく。ここで注意すべきはKinectが認識するためには、センサから2,3m離れることが大事だ。そうでないといつまでたってもキャリブレーションから進まない。

4.LiveAnimationのインストール
bvhを吐かせるために、LiveAnimationをインストールする。このサイトからダウンロード。数々のバージョンがあり、以前の記述だと
46以前のバージョンでないとPoserが正しく読み込まないとあったが、Poser2014 Proに関しては最新のLiveAnimationでも問題なかった(今回は108をインストールした)。

5.キャプチャ&BVH出力
LiveAnimationを立ち上げたのち、アバターを一つ選んで出現させる。このあと左側の”キネクト”を選びその中からMotionCaptureを選ぶ。自分の姿も横に出てくるので、然るべくKinectにモーションを認識させる。そうするとアバターが同期して動き始めるのでゆっくり体を動かしてモーションデータをサンプルする。画面下にFPS(Frames per Second)の値があり、デフォルトは64となっているが30ぐらいで十分だろう。より少ないとPoserでうまく動かないようだ。取得できたらエクスポート/BVHでファイルに出力する。つま先をつけるなどのオプションは選択しない(poserで読めなくなる)

6.Poserからの読み込み
Poserを立ち上げ、Andy君を表示させ、これに先ほど出力したBVHを読み込ませる。うまくゆけばAndy君は先ほどの自分の動きと似通った動作をするはずだ。

以上です。Good Luck.


Octane renderで背景を透明に

Octaneでレンダリングすると、背景がenvironment テクスチャをぼかした模様が入る。これを透明 or alpha channelにする手はないかと探してみたら、ここ

Yes, in the image controls you can check / uncheck keep environment.

の一文があった。試してみよう


Perfect V4

やりかたが2ちゃんにのっていた

1. まず、シーンに任意のフィギュアを1体を出しておく。Andyでもよい
2. Pose > XandM PerfectV4 Complete > !Create Perfect V4 を実行
3. “Please select CR2 to modify”
PerfectV4化をする元フィギュアをcr2ファイル名で指定。
(通常はVictoria 4.2.cr2を指定するが、カスタマイズ済みV4フィギュアに埋め込みたいならそれを指定してもよい)
4. “Please enter an output filename” 
フィギュアの保存名を聞いてくるから指定。Characterのfigureを入れているフォルダでよいだろう。
5. 1で呼んでおいたフィギュア(Andy)はもう要らないので消す。
6. 4で指定した保存フィギュアをシーンに呼び出す。
7. 呼び出したフィギュアを選択状態にしておいて、
ライブラリの Pose > XandM PerfectV4 Complete > !The Fixes > !Inject All Fixes Poser を実行。
8. これを保存。4.のフィギュアに重ねて指定してもよい。


RSR to PNG converter

POSERを使っていて、せっかく新規購入したアイテムのアイコンが出てこなくて幻滅していたことがあった。調べるとあるアイテムは画像が.rsrで作成されており、poser8以降はサポートされていないようだった。それで ここを参照して、コンバータをダウンロードしたら、きれいに出てくるようになった。


poser V4 WM用服コンバート

基本的に、
http://www.renderosity.com/mod/forumpro/showthread.php?thread_id=2843403
に記述してある通りに実施したらうまくいった。
2015注)やる前にEdit/General Preference/Misc. でUser external binary morth targets をOFFにしておくこと

(1)WM4 figureをロードする
(2)Pythonスクリプトを実施(POSER12の/Runtime/Python/poserScripts/ScriptsMenu/PoserPlace/Wight_Pose_Applicator5h.py)
パラメータ
a)Figure to have weights injected(.cr2 path)
V4WMに着せる服の.cr2をフルパスを入れる。(pz2のケースもあるかも知れない)
 b)Wight injection pase(.pz2 path)
V4vmについてきたWeight poseを入れる
  /Runtime/Libraries/Pose/(格納場所のフォルダ、自分は!V4/!V4VM)/Victoria4.2_weight_pose.pz2
c)Optional pose containing new actors(.pz2 path)
V4VMについてきたHelper Bonesファイルを指定(.pz2)
/Runtime/Libraties/Pose/(格納場所のフォルダ、自分は!V4/!V4VM)/V4WM_helper_bones.pz2
(3)服をV4WMにComformingさせる
(4)ジョイントゾーンをフィギュアからコピー(重要!)
  Figure->Copy Joint Zone from で Victoria4-WMを指定する
(5)できあがった服をライブラリにSAVE
 


Poserでの床の影

Poser2012を使い始めて、これまでは床に格子線が入っていて、かつ影も映っていたが、今回からはグレーの床しかデフォルトで現れなくなっていた。格子線をいれるのは、Display->Element Style->WireframeでOK,また影を映すためには、マテリアルルームのGROUNDのPreviewの詳細(Advanced)で、Shadow_Catch_onlyをクリックすると良い。やっと少しわかってきた。