ボーン追従カメラを標準カメラに変換できないかという話です。
MMDで付けたカメラを他のツール(AE,C4D,AviUtl,etc)に持ち込んで
モーショントラッキングとかする時に役に立つらしいです(私はしないけど)。
ただカメラ⇔ボーンのvmd変換はわりと役に立つので知っておいて損はないです。
今回紹介する作業工程はこんな感じです。
A.外部親の登録・解除を使ってカメラ位置・角度をダミーボーンに焼き込む
B.ダミーボーンのモーションをcsv編集してカメラ用vmdに変換
※視野角を補間操作していると別途、全打ち化が必要(後述)
A.外部親を使ったボーン位置・角度の焼き込み
①モーション焼き込み用のダミーボーンを用意する(ボーン1つでOK)
②カメラボーンのカメラ取り付け先にダミーボーンを外部親登録(フレーム登録なし)
③外部親ウィンドウを開きなおして外部親を解除して、フレーム登録する
④フレーム数だけ繰り返す(マクロ操作推奨)
※物理カメラを焼き込む場合は先に物理を焼き込んでおく
【②ダミーボーンをカメラボーンに外部親登録、フレーム登録はしない】
【③外部親を解除して、フレーム登録する。操作前にウィンドウは開き直さないとダメ】
この方法を使えばIKだろうが多段だろうが一括して焼き込むことが可能です。
問題は操作が非常にめんどくさいこと。
数フレームならともかく連続何十フレームとあると地獄です。
単純反復作業だしなあと思っていたらマクロツールが使えました。
今回、使ったのはHiMacroExというツールです。(readmeにあるランタイムが必要)
マウス操作をマクロツールに一度記録してしまえば、
あとはマクロツールで反復操作させてしまえばいいのです。
【HiMacroExの「記録」を押してマウス操作を記録】
※次のフレームに進むところまで記録します
【記録したマウス操作を適当に整理】
※整理しすぎるとMMDの処理が追いつきません
【再生ボタンを押してマウスをHiMacroExに操作してもらう】
※この作業は1フレーム1秒くらいでした
記録したマウス操作は余計な動作を削除して短縮することが可能です。
ただし動作を速くしすぎるとMMDの処理が追い付かなくなります。
(外部親ウィンドウが開く前に登録操作をしてしまうなど)
操作間隔は15~20くらいのフレームをおいた方がよさそう。
外部親の登録/解除+フレーム登録が終わったらvmd出力します。
B.カメラボーンvmdを標準カメラvmdに変換
ツールを使ってvmdをcsv変換して編集します。
変換ツールには以下の2つがあります。
・VMDConverterGraphical
・VMDEditor (MMD MotionWorks)
今回はそぼろさんのVMDEditor(MMD MotionWorks)を使います。
VMDEditorを開いてvmdをドラッグ&ドロップするとモーションが表示されます。
「File」→「csv Export」を選択してcsvファイルに変換します。
カメラ用に変換するためにカメラのモーションも変換します。
※中身は書き換えるのでなんでもいいです。画像はMMDデフォの0フレームのvmd。
出力したcsv形式はテキストエディタ/表計算ソフトで編集できます。
私は編集にExcelを使いますが、フリーの表計算ソフトでも構いません。
モデル用のvmdを変換するとこうなります。
※画像が小さい場合はクリックして拡大してください。(以下同じ)
カメラ用のvmdはこうです。
カメラ用のvmdのヘッダーの下にモデルよのvmdをコピペして
モデル用にはない「d(距離)」「a(視野角)」の項目とその補間曲線を追加し、
ボーン名を削除すればカメラ用のvmdに変換できるのです。
【距離(d)と視野角(a)を追加】
※追従ボーンの距離は「0」がデフォルト、視野角を補間したい場合は →後述 C
【距離と視野角の補間曲線を追加】
※補間曲線の数値はコピペ、全打ちの場合は補間曲線は関係ないです。。
【コピペし終わったらCSV形式で保存】
保存したcsvをVmdEditorで「File」→「Csv Inxport」でインポートします。
エラーが出ます。。。。
csvをメモ帳で開きます。
冒頭の数行に余計なカンマがあるので削除するとインポートできるようになります。
(Excelが空白セルにカンマを補っていて、それが原因でエラーが出る)
こうなってればVmdEditorで読み込めます。
VmdEditorで「File」→「Save as」を選択して保存するとvmdに変換されます。
早速、MMDに読み込んで見るとカメラが思う方向に向いてません。
実は外部親登録したボーンは角度が逆転しています。
「カメラ位置角度補正」で角度の「X」「Y」「Z」をマイナス1倍して終わりです。
(csv編集の段階でマイナス1倍しておいてもいいです、だいたい忘れますが)
以上、で、終了すればいいのですが・・・
C.視野角を補間する場合
視野角を固定ではなく補間する場合は自分で全打ち化する必要があります。
全打ち化するツールは知りません。。。(あったら教えてください)
補間曲線の計算などは手動計算するのも難しいんで他のツールを転用します。
まず視野角を設定したカメラ用vmdをBの要領でcsv変換します。
視野角の数値と補間曲線部分をモデル用のvmdの「x」の部分に貼りつけます。
これをVmdMotionIntegrator(or MMM)に読み込んで全打ち化して出力します。
全打ち化する手順は倶楽部Pの記事が参考になります(多段統合記事だけど)。
全打ち化したvmdを再びcsv変換して、「x」の数値をカメラ用の「a」にコピペします。
すごく・・・めんどくさいです。
※どうやら変換ツールで変換すると小数点以下が切り捨てられるようです・・・手打ち!?
以上、カメラボーン用のモーションを標準カメラに変換する方法でした。
なななななななさんに検証・補足していただきました
→ 多段カメラを標準カメラに変換する技 の補足
====================================
vmd編集の作業を逆にすれば標準カメラをカメラボーンvmdに変換することも可能です。
外部親の登録・解除はIK焼き込みなど他のことにも応用可能です。
実は今回の記事は当初、MMDBridgeを使ったIK焼き込みを想定してたのですが・・・
・カメラボーンの構造によってMMDBridgeでエラーが出る
・多段ボーンで複雑な操作(任意中心回転など)をすると多段統合が困難
ということでそちらの記事はボツになりました。。。
MMDBridgeでエラーが出るIK構造は特定していませんが、
IKリンク内のボーンを親にする構造や付与親・変形階層が複雑だと起きるようです。
(どらさんのIKカメラは大丈夫だけど、ソフィーさんのIKカメラはダメ)
(そもそもIKカメラを焼き込みたいって人は2人くらいしか見かけたことないんですけど)