![]() |
プロローグ 今回、ここに来て、なんとモーションキャプチャーについての記述になります。 以下 MoCap と略して記述します。 ![]() そこで、私達みたいな活動でもMoCapに挑戦してみて、解った事とかを紹介し、 より多くの人に今後利用するにあたっての情報になるのでは・・・・・ ということで企画案してみたもの、なのです。 対象は、ダイキンさんで取り扱っております OptiTrack という製品を取り上げてみます。 さらに、 OptiTrack の総代理店であり、 MoCapスタジオ も用意されております (株)スパイス さんにご協力をお願いし、場所と機材そしてその対応までをもして頂きました。 本当にありがとうございました。 (株)スパイスさんの OptiTrack と MoCapスタジオ についてはこちらをご覧ください。 そして更に、モーションを撮らせて頂くアクターさんとして、今回、学生さんにもご協力して頂けることとなりました。 もちろんこんな体験自体、学生さんにとっても最高の教材となるのはもちろんなのですが、 私達自身にとっても学生さんで女性の方のモーションを撮らせて頂ける絶好のチャンスになりました!!! こちらは、大阪は梅田駅すぐ近くにある ECCコンピュータ専門学校 さんに御協力を頂きました、ありがとうございました。 ECCコンピュータ専門学校さんには、ゲームカレッジ/クリエイターカレッジ/ITカレッジなど数多くの CG系の授業が用意されており、 また、ゲーム系のコースでは Softimage を利用されていることから、 このサイト SoftimageUsersNotes で紹介しています機能なんかもバッチリ学んでもらえる学校さんです。 さー、こんなにすごい条件が揃いました!!!最初の構想から半年、実質約2ヶ月で具体化させたイベント・・・・。 多くの情報が伝わるよう、数回に渡って記述していきたいと考えます。 できれば、”私も挑戦したい!!”とか、”今のスタジオでもやれるかも!!”とか”うちの作品にも使いたい!!!!”とか、 ・・・ここから発展することを期待しております。 >機材周辺情報・ウンチク >前準備 >モーション・キャプチャー・リスト >マーカーの設置 >C3Dデータの読み込み >キャラクターリグへの適応 >RigToRigPPG 内の [調整] >FCurve編集 >Clip化;ループ・アニメーション対応 パソコンのスペック WindowsXP SP3、Intel Core2Duo 3G、RAM; 2G、NVIDIA Quadro FX1700
|
機材周辺情報・ウンチク 作成前に MoCap に使用する機材関係の情報から始めたいと思います。 今回使用させて頂いたモーションキャプチャーに関するハードウェア、ソフトウェアの情報をまとめておきたいと思います。
OptiTrackモーションキャプチャーシステム 今回使用させていただいたモーションキャプチャーシステムです。 コンパクトなカメラを最低6台から、最大24台までのUSBカメラを利用でき、ルフボディモーションキャプチャーシステムを提供しています。 今回は24台のカメラを用意していることにより、同時に2名のアクターのモーションをキャプチャー可能できるシステムになっていました。 使用機材 カメラ台数:24台 ポール:8本 という形で、1つのポールに3台のカメラを取り付けており、そのポールが計8箇所、合計24台のカメラでキャプチャーを行っています。 ![]() ![]() Arena においてキャプチャーしたデータを MotionBuilder へストリーミングすることによって本撮影を行っています。 ![]()
実際撮影を始める前にキャリブレーションという作業を行います。 このキャリブレーションとは、すべてのカメラがマーカーを上手く認識できるようにカメラ等計測器具による偏りを 測定等の実数によりある特定の基準量に補正する作業の事です。 本 OptiTrack においては、 Arena 上のキャリブレーションソフトとセットになっているキャリブレーションキットによって5分程度の作業で完了します。 はじめにキャリブレーションワンドによってキャリブレーション可能範囲を指定し その後キャリブレーションスクエアによって地面の位置を固定する作業となっていました。 ![]() また、今回のキャプチャーにおいては、小道具としてギターを利用するためギターの変わりになるオブジェクトを用意した。 その際、小道具においては三次元上として平面を把握するために、マーカを3点以上必要になります。 ![]()
![]() 個々のマーカーが三角形を成すように付けられています。 MoCapは動きを撮るから関節に付けると思われがちですが、 実は関節みたな動く所にではなく、 なるべく動かない所にマーカーを取り付けます。 また、マーカーはそれぞれ個別の三角形に成るようにします。 キャリブレーションを行う時にTの字型にポーズを撮りますが、 人間がそのTポーズをしている時、 右腕はある形の三角形、胴体は別の三角形という風に認識させ、 その特定の三角形がある方向に傾けば、 それは "胴体が前に傾いている" という風に推測できるようにさせます。 そうすることで体の各部分の回転角度、 曲がり具合というものが解るようにしています。 ![]() 床にあるL字は、どの方向がZ軸方向かを認識させているものです。 これでこの3次元空間における X・Y・Z軸方向を決めています。 このL字の三角形はいつも決まった形をしているものなので Z軸の方向がどの方向になるのかが解るようになっているものなのです。 ということで、今背中に三角形のマーカーが付いているので 仮に仰向けになってしまうとその部分のモーションが撮れなくなってしまいます。 三角形が認識できない場合、あるいは別の部位と間違えていまう場合などは、それが推測できるような対応が必要になってきます。 |
マーカーの設置 アクターさんへマーカーの取り付けは、以下のような位置と34個のマーカーで設置されていました。
三角形が作られるようになっており、頭には帽子をかぶってマーカーを付けています。 ![]() すると、arena 上では左図のようにセットアップされたキャラクターとして認識され、
右図のモーションビルダー画面上にリアルタイムにビュー表示されています。 ![]() ![]() アクターさんが動いているところを録画のようにキャプチャーしています。
![]() では、次からは、こうやってようやく撮られたキャプチャーデータの Softimage への取り込みからです。 で、最終的な目標としては、歩く MoCap から、 ハイモデルのキャラクターが直線的にどんどん歩くループアニメーションにすることとします。 |
C3Dデータの読み込み;基本動作 歩く編 MoCap の元データは FBX ですが、 C3Dというファイル形式で受け取ります。サンプルデータも掲載しておきますよ。
Softimageではこの C3Dデータを読み込むツールが MOTOR の中に用意されています。 アニメーションモジュールにて、ツール&nbp;> MOTOR&nbp;> リグにモーキャップを選択します。 ![]() Step1:モーキャプファイルタイプ:C3Dを右▼のプルダウンメニュから選択
Step2: Tポーズを含む c3dファイルを指定する今回は Mo01番、2回目に撮った歩く動作 モーションキャプチャーデータ >> Cap1_Mo01_002_001.c3d
Step3: Zアップ
Step4: MocapBiped を右▼のプルダウンメニュから選択 Step5:対称を有効にチェックは入れておき、[ C3D読み込み] を実行します。 簡単ですね。すると、ここまでの画面にいきなりなります。スケール値がものすごく巨大なので注意してください!! 2つの階層構造が出来、C3DData は34個のマーカーで名前が付けられ、既にこの時点で動きついていて、動作しますよ。 もう一つは C3DRig で、マーカーから動きを受け取るように仕組まれた Rig になっています。今は動きません。 注意!!この時点で、フレームレートを決めておくべきです。
下の [PlayBack]ボタン>再生オプションから任意のフレームレートを確認します。例では 30fps としました。 さー、ここからは難しいです。経験からなるものです。 C3DRig の球体位置を C3DData のマーカー位置に調整します。 上記手順の MocapToRig の Step5 にて対称にしているので、C3DRig の球体は左右対称で動きます。これはあまり外さない方が良いです。 下の図に見える茶色の Cube と Null の階層構造は、位置あわせの為に任意で作成した目印です。これも差し上げますのでご参考に・・・ 濃い緑色の Null位置がデフォルトの C3DRig の位置です。
そして、今回の歩きの動き用に位置調整したのが明るい緑色の Null位置で、肩の部分を Vの字としています。 このモーションデータは肩の位置が難しいかったです。 多少全体を後ろにずらしていますが、腰だけとか腕だけ後ろにずらしてもあまり良くありませんでした。 この曖昧さが調整の難しさなのですが、ある程度の範囲なら吸収してしまう柔軟さと捉えると、かなりの優れものなのか・・・とも思われます。 何度でもやり直せるよう、このシーンは保存しておきます。 そうしたら、 MocapToRig の Step5下の[ポーズマップの保存]のボタンを押して C3DRigの球体構造に動きを適合します。
うまくいかなかったら、ここの工程を何度でもやり直します。 ここで出来たシーンは、肩が左右対称の位置関係で、足も良く動いています。 この時点では、キャラクターに予期せぬ変形が起こったりします。
そう、モーションキャプチャーのアニメーションとは、適応するだけですぐOKなわけではなく、 修正や更なるアニメーションの追加などが必要なのです。 注意!!
シーンを保存した後やシーンを読み込んでみた時、キャラクターが壊れてしまうがありました。 その場合は、BipedRigを一旦キャラクターを作成した時に置いてあったそのキャラクター用の Model 以下に一旦移動してみるか、 Softiamge を再起動して直ることがありました。 次からは、この調整の作業になります。 |
RigToRigPPG 内の[調整] 今の状態で動かすと首や頭の方向、そしてなにより段々とキャラクター全体の動きが左に曲がって行って、体の向きも傾いていることに気が付きます。
このように、モーションデータそのままでは目的にあったアニメーションにはならず、
色々な段階での修正が必要なことと、キャラクターによってはスカートや髪の毛、 リボンなどその他の付属物はアニメーションの追加が必要なことが解ります。 追加的な動きもここでは手付けのアニメーションにとどめますが、物理シュミレーションを使ったり、ICEを使ったりした場合は それらのセットアップとアニメーションの適応に発展することでしょう。 さて、まずは、腰;UpperBody と 両足;RightFoot、LeftFoot のTポーズから歩き始める位置を基点としてまっすぐに進むように グローバルタブ内の位置オフセット値と、rfoot lfoot にもオフセット値を入れてみましょう。 この図のように、UpperBody に Null を位置コンストレイントしてそれをPlotします。
そこで得たZ軸の FCurve に -1 を掛け算して 反対の FCurve を、グローバルタブ内の位置オフセットのZ軸にD&Dでコピーします。 本当は腰にオフセットの値を入れて位置を正してしまうと腰の動きを犠牲にしてしまうので、さらにズレ分を加味したいところです。 その対応例としては、キャラクターの動きを見て体の動きが中心に来たフレームでこの上記反対方向の FCurve値が最大になるようなやり方が考えられます。 または、プロットしたカーブ、あるいはあるいている軌跡の中心位置として想定できる点間を結んだ曲線を左右へのフレ幅に当てるなど色々なアイディアがあるかと思われます。 ここでは直に入れてしまいました。 RightFoot、LeftFoot にも Null を位置コンストレイントし、Polt して位置を取り出しますが、 その時は歩き出す時の足の位置でまっすく進むようにします。ここも直ではなくて、少し膨らむ動きを入れるのなら工夫が必要でしょう。 あとは 細かい所の調整です。 後でファンクションカーブにした時に編集した方が楽な部分と この時点で [調整] した方がよっぽど楽な部分とあります。 後者としては、やはり回転系のもので、末端へ動きを伝える途中にあるもの、 つまり頭に動きを伝える首、腕に動きを伝える肩などがあげられます。 肩は手を下ろした時に水平(この場合Z軸回転値)になるようにします。つまり、キャラクターを作った時の傾きに近づくようにしておきます。 肩のX軸回転値は背中にかけての形状がおかしくなりますので修正が必要です。 尚、ここ RetargetAdjustPPG で付けたオフセット値などは Preset として保存できるのですが、
そこに付けたアニメーションは保存してくれないようです、注意してください。 このアジャスト用プリセットファイルも御提供しますが、このキャラ固有となる場合もあるので、参考資料として見てください。 RetargetAdjustPPG用Presetファイル >> BipedRig_Mo01_001_002-Map5-6.adj
ここまでを画面のキャプチャー機能を使って、動画で確認してみてください。
お次は、いよいよファンクションカーブのアニメーションとして Plot します。 |
FCurve 編集 ここまで来たら、 RigToRigPPG から[プロット]ボタンを押してキャラクターの Rig に
MoCapのデータをファンクションカーブアニメーションとして Plot します。 表示される設定画面で合間の間隔でキーが有効になっている状態で、すこし多めのフレームを設定して OK ボタンを押します。 Plotが完了したら、動きを確認し、BipedRigをキャラクターの Model 以下に戻してあげて、
ここで一旦、キャラクター Model 以下のみを モデルの書き出し で保存しておきます。 新規シーンには、この保存したキャラクター Model のみを読み込んで来て、シーンを軽くしましょう。 FCurve の編集はとことんこだわりや、そのキャラクターらしい動きの味付けをしていけます。
ここはアニメーション編集の領域ですね。ここでも次のような修正を行いました。 ・首の回転値、両手の回転値、両手の高さ、腕の高さ、腰と上半身の左右のふり幅の均等化、 腰の位置を少し前に出す、手のふり幅の調整・・・いっぱいありましたよ。 そしてここで一気にハイモデルの登場です。 MoCap 範囲外で必要な動き部分には、キーアニメーションを設定していきます。 髪の毛、スカート、リボン、後ろ襟・・・・。 ここらあたりの詳細については、既存のアニメーション編のページに書かれている通りです。 ここまでを画面のキャプチャー機能を使って、動画で確認してみましょう。
次は最後で、ここからループアニメーションの作成です。ずーっと歩けるように・・・ |
Clip 化;ループ・アニメーション対応 さーて、アニメーションが設定されている場所全てを選択した状態で、
(このキャラの場合は Anm-Trans_group、Anm-Rot_group とういうグループノードからメンバの選択で可能) 格納 > アニメートパラメータFカーブを実行し、 表示される設定画面において、ソースをクリップとしてミキサに追加を有効にして OK を押すと AnimationMixer上にクリップまで置いてくれます。 歩行アニメーションを観察し、完全に歩行状態にある同じポーズのフレームを探し出します。この例では、44フレ と 76フレでした。 前後を分割し、それ以降の部分を無効のトラックに置きました。 同じポーズ間の距離を計ったら 16.832 となりました。 そうしたら、UpperBody と RightFoot、LeftFoot を選択した状態で分割したクリップを選択状態にし、 クリップ > 空間で分割を実行します。すると同じ大きさの新しいクリップが下に追加されます。 この追加されたクリップは上の3つのみに動作するクリップになります。 出来たクリップを右マウス選択して > クリッププロパティーを選択し、クリップ項目情報のタブにします。
上記3つの X軸の値 posx のクリップエフェクトに this+16.832*cid と記述します。サイクル毎に 16.832 前に進むという意味です。 クリップの上部に黄色いバーが追加され、オフセット値が入っていることを示しています。 ![]() これで、後は欲しい長さだけ"サイクル数"を増やせば、その間ずっと前に歩き続けます。
サイクル間でアニメーションがうまくつながってない場合は クリップ同士を少し重ねるなどしてアニメーションを編集し、それを新しいクリップとして作成後、それにサイクルの設定をします。 注意; クリップとしてMixer上に登録したアニメーションがきちんと動いていないなんて現象が起こることがあります。 その場合、クリップを右クリックしてクリップのプロパティーのクリップ項目情報を見ると下図のように、ummapped だし、zombie だし、ゾンビって何? ![]() こうなってしまった場合は、Micerノード以下にある、
Template/ConnectionMapping 以下にあるコネクションテンプレートを疑ってください。 アクティブのOn/Off、記述ミスか、記述不足のようです。。 アクティブを無効にしておいてうまく行くのならそれでも良いのです。 もちろん全部書いておくのも1つの方法で、一度書いたら Preset として保存出来ます。 ![]() スカートと髪の毛のアニメーションもクリップ化してサイクル化してみました。
サイクルがある分、ずーっと先に行ってしまう歩行アニメーションが完成です。 画面のキャプチャー機能を使って、動画で確認してみましょう。揺れているものも確認してみます。
ここでの記事は一旦ここまでにしておき、もう少し考察した内容は次ページへ |
という訳で、MoCap Vol1 はここまで 次回は Vol2 へ 乞う、ご期待!!
|