💨

【MotionBuilderチュートリアル】第12回~ノイズ除去、フィルタについて~

2022/12/22に公開約7,500字

株式会社GUNCY'Sの岡崎です。

いよいよ年末が迫ってきていますね。本連載もキリよく次回で最終回……ということでもなく、年明けも少し続く予定です。よろしくお願いします。

前回はアニメーションカーブとその操作方法について解説しました。今回はアニメーションカーブのノイズを取るための方法について解説したいと思います。
アニメーションカーブにノイズが入るってどういうこと?と思う方もいるかもしれません。アニメーションカーブのノイズとは、カーブの中にモーションとして破綻した動きが紛れ込む事を言います。ノイズが入っている場合、カーブの中にきれいなモーションを崩すようなキーがよく紛れ込んでいます。

前回のように手動でキーを打った数フレームのアニメーションカーブにノイズが入ることは少ないです。モーションキャプチャーで収録したモーションでは毎フレームにキーが打つように記録されているため、モーションキャプチャーの機器の問題でノイズが入るという事が比較的多いです。

モーションキャプチャーデータのノイズを修正するには?

モーションキャプチャーで収録したデータのノイズはFCurveで見てみるとこのように小刻みな小さい波や緩やかな曲線の中に棘のような形に逸脱したカーブができることもあります。この部分は実際にモーションを再生して3Dビューで見ると不自然な動きであることが分かると思います。これがいわゆるノイズと呼ばれるものです。

ノイズを修正する手段の一つとしてFilterがあります。今回はこのFilterを使用してノイズ修正を行ないます。

Filterとは?

画面右下のAsset Browserやプロパティなどのタブと並んでFiltersというタブがあります。FilterはこのFiltersタブから使用できます。

Filterを使用してノイズを修正する

今回はプロットしたモーションデータに残っているノイズをFilterで修正してみましょう。まず、モーションデータに入っているノイズを確認します。

Kaya_constraint内にあるdataset-1_bye_musical_001のテイクを見てみると……

モーションデータの腰周りを見てみると24から25フレームにかけて、不自然な動きが入っている部分が見られます。この部分をFilterで修正します。

プロジェクトを開く

File > Openからファイルを開きます。

第10回にて作成したファイル”Kaya_constraint.fbx”を使用します。

モーションデータをコントロールリグとしてプロット

モーションデータをプロットし、コントロールリグで制御できるようにします。

  1. NavigatorタブのリストからCharacter>Kayaを選択

    Plot Characterをクリックします。この時Input SourceがMotion(モーションデータのCharacter)になっている事を確認してください。

  2. Control Rigをクリック

  3. FK/IKをクリック

  4. その後出てくるウィンドウでPlotボタン

  5. コントロールリグが追加される事を確認

コントロールリグにプロットがされているので、コントロールリグのエフェクターにキーが打たれているのが確認できます。

このコントロールリグにFilterを使用します。

コントロールリグにFilterを使用する

では、Filterをかける操作をしていきます。

  1. コントロールリグのエフェクターを選択します。

    Character ControlsのControlsタブで画像の通りの部分を選択します。目安としては腰まわりから下は膝まで、上は肩までを選択します。

  2. FCurvesプロパティでTranslation,Rotationを選択

  3. FilterのリストからButterworthを選択

    選択後、表示が以下の様に変わります。

  4. Set Start、Set Stopボタンをそれぞれクリック

    範囲の始めと終わりのフレームを入力して指定します。

    腰回りのノイズは24フレームからの数フレームなので、16~30を入力してFilterの適用範囲を指定します。

    範囲指定がされているとこのように緑色で範囲が表示されます。

  5. 下部のPreviewボタンをクリック

Previewボタンをクリック後選択範囲の表示が消え、カーブが修正されます。

Filterの適用後のモーションを確認できるので確認しましょう。

Filterをかける前よりもカクついた動きが自然になると思います。

このFilterが正しくかけられている事を確認できれば、下のAcceptボタンをクリックしてFilterの結果を確定しましょう。

Tips:Filterをかける対象について

腰の回転だけなら、腰のエフェクターだけ選択すればいいと思うかもしれません。しかし、腰だけノイズ修正をしてしまうと、それより子に位置する階層にノイズが残ってしまいます。

たとえば、腰のカクつきだけ直すと胸や肩にカクつきが生じてしまうおそれがあります。そのため、親子構造の親に位置するボーンのノイズ修正をする時はなるべく子の階層も含めてノイズの修正をする必要があります。

ここまでFilterをかけられたら、”Kaya_Filter”として保存しておきましょう。

Filterの種類

さきほどの実践ではButterworthを使用しましたが、Filterには他にも種類があります。ここでは他の種類もいくつか紹介します。

Smooth

指定した範囲のキーフレームを平均化します。たとえば、飛び出た山のあるカーブを平坦でなめらかなカーブにします。ガタガタ暴れまわるモーションにこのFilterをかけるとおとなしくなります。

  • Width

    この値を大きくするほどカーブへの影響も強くなります。

    元データ

    標準(色が薄い線は元データ)

    弱め 2

    強め 8

Butterworth

さきほどの実践で使用したFilterです。このFilterは実践でやった通り、指定した範囲のキーフレームを平均化します。Smoothとの違いはカーブの最大値、最小値に影響をあたえずにノイズを除去できる点です。Smoothではノイズではないモーションの反動まで消してしまう可能性がありますが、Butterworthでは本来のモーションを崩さないままノイズの除去ができます。

  • Cut-Off Frequency

    数値を小さくするほど影響が強くなります**。**

    Smoothほど変化が実感できないかもしれませんが、モーションキャプチャーで収録したデータの脚の震えや滑りなどのノイズだけを除去する時には、10~15ほど影響弱めでも十分に効果を発揮します。

    元データ

    Cut-Off 7 (色の薄いカーブが元データ)

    Cut-Off 4

    Cut-Off 10

Key Reducing

カーブの不要なキーフレームを除去します。モーション自体はそのままで、最低限のキーフレームだけに絞る際に有効です。

  • Precision

    精度を設定できます。既定値は1で、値が大きいほど精度が下がり、値が小さいほど精度が上がります。また、精度が低いほどキーフレームが多く除去されます。

    元データ

    1.0

    5.0

    0.5

今回はFilterについての解説をしました。

オブジェクトを選択して、キーフレームの範囲指定からFilter適用、という流れがFilterの操作の基本です。

Unityでも一応アニメーションカーブを操作自体は可能ですが、モーションキャプチャーで収録したデータの編集はキーフレームが多すぎて操作が困難な場合もあります。その点、MotionBuidlerはモーションに特化しているだけあって、アニメーションカーブやキーフレームの操作に強く、動作が重くならずに快適に編集できます。

次回

次回はアニメーションの出力前の工程が完結します!モーションキャプチャーで収録したアニメーションをさらに手付けで修正する方法を解説します。ちなみに、この連載で明らかにやり残している事があります。そうです、棒を掴む手がまだ開いたままです!次回はこれを編集して棒を掴む手の形に変形させます。キーワードはAnimation Layerです。こちらを使いこなせると、アニメーションの後からアレンジを加えることもできるようになります。

次回もよろしくお願いします!

モーションキャプチャーでお悩みの方は

株式会社GUNCY’Sではモーションキャプチャーの総合支援サービス"Mocap SOS"を開始しました。
モーションキャプチャーについてのご相談はぜひ弊社へお問い合わせください。
https://guncys.com/news/news-1983/
メールでのお問い合わせ:mocap_contact*guncys.com
(※記号「*」を「@」に置き換えてください。)


免責事項

  • 当記事のコンテンツ・情報について、できる限り正確な情報を提供するように努めておりますが、正確性や安全性、最新性を保証するものではありません。
  • 理由の如何に関わらず、本記事に掲載されている情報の変更・削除、および本記事の更新の中断・中止によって生じるいかなる損害についても、当社は責任を負わないものとします。
  • リンク先へのアクセス、リンク先からのダウンロード、その他の方法を通じて取得したコンテンツは、自身の裁量とリスクをもって使用されるものとします。
  • 当記事から移動された先のサイトは、当社が管理、運営するものではございません。移動先サイトで提供される情報の真偽、サービス等につきましても責任を負いませんのでご了承ください。なお、予告なしに内容が変更または廃止される場合がございます。

Discussion

ログインするとコメントできます