[UE4]Control Rig機能調査(4.27)

注意事項

  • これはUnreal Engine 4 (UE4) #2 Advent Calendar 2019 24日目の記事でした

    • まだ参照して下さる方がいるとの事で4.27.2向けに改修しています

    • 元々4.24での検証記事を4.27で作り直しているので、ノードのピンなど正確に合致しない場合があるかもしれません

  • 独自研究が含まれます

    • 機能の解釈や運用において公式のそれと異なる可能性があります

    • Rigセットアップを行いますが、業界の常識を欠いた組み立てをしている可能性があります

  • ここから文体が雑になります

Control Rigとは何か

どういう時に使うのか

  • Procedural Animationと複雑なRetargetingの解決

    • GDC2019講演で言っていた

    • たとえば補助骨制御

      • 身体の動きに合わせてアクセサリの骨を制御したい

      • 手首のねじれに合わせてtwist骨を回転させたい(本記事で簡単に紹介)

    • あとIK制御とか

      • 銃構え時にウィークハンドの位置を合わせたい

      • 足が階段や坂道にめり込まないようにしたい

      • Look At(Aim)処理(本記事で簡単に紹介)

なぜ使うのか

  • 機能的には既存のキャラBP+ABPの連携でも実現可能

    • …だったが、4.27.2時点ではControl Rigでないとやれない事も出てきている(Full body IKとか)

  • 講演によると、以下のような嬉しさがあるとの事

    • 機能分割

      • Rigを追加する時、ABP側はControl Rigを1つ接続すればよい

      • ABPはAnimationの再生とBlendに専念できる

    • 高速化

      • Control Rigで記述された処理はNative CodeにCompileされ、Fast Pathに乗る

    • 使ってみた感触では以下の利点もありそう

      • 責任分割

        • Rigがバグった時、複雑(になりがち)なABPを調べることなく、Control Rigを調べればよい

    • 再利用

      • 複数のABPに同じRigを適用したい時、1つのControl Rigを作ればよい

      • ABPのノード群をコピペするより保守しやすい

使ってみる

まとめ

  • Control Rigを使って太りがちなAnimation BlueprintからRig周りを分離可能

    • むしろControl Rig ComponentをキャラBPに搭載すれば、ABP無しでProcedural Animation可能

  • 制御対象であるControl別に固有のGizmoが設定でき、DCC上でのRiggingのようにセットアップ可能

  • まだWIPなので挙動が怪しい部分は覚悟すべし

    • 4.27.2ではかなり安定

所感

  • 検証段階では階層構造が一致しないと流用できなかったが、RE Engineのモジュラーリグみたいに部分一致でも適用する方法があると、より可能性が広がりそう

    • どこか設定できる箇所があるのかも?

    • まだBETA 1.0なので、完成版でできるようになるかもしれない

    • ダメならC++でControl Rigを拡張すればできるだろう(未検証)

  • 複雑なRig機能はC++で専用のノード作るから必要ないゼ…という猛者にもControl Rigでグラフィカルに試作してからコードに落とし込むなど、使い道はあるのではなかろうか

雑談

  • 今回、Google Photoの公開アルバムに資料画像をUploadし、そのURLに画像リンクするという手法で記事を作った

  • Google Siteだと100MB制限があるが、これなら容量無限なので気にせず作れる!

  • と思って重いgifを使いすぎたかもしれない…

  • などと2019年は思っていましたが、2021年の新Google Sitesへの移行で実質容量無限になったぜ!

終わりに

参考資料