56.9K Views
July 20, 20
スライド概要
補足:
Control RigのパラメータがUE4.25では正常に動かない問題の修正は以下のとおりです。
https://issues.unrealengine.com/issue/UE-94316
講演動画はこちら
https://youtu.be/loN69BeLba4
スライドデータはこちらからダウンロード可能です
https://epicgames.box.com/s/y3mwa9gc3l7puvdh3c32yxoecz1olyf6
本スライドは2020年7月18日に行われた勉強会「 UNREAL FEST EXTREME 2020 SUMMER」の講演資料となります。
https://www.unrealengine.com/ja/events/unreal-fest-extreme-2020-summer
Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/
猫でも分かる Control Rig -UE4.25 版UNREAL FEST EXTREME 2020 SUMMER Epic Games Japan 岡田 和也
はじめに ←のアイコンがついている画像は全て動画です Slideshareの説明欄にあるURLリンク先の 元スライド・講演動画よりご確認ください
本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料
Control Rig とは? ブループリントをベースとした スプリクト可能な リギング システム https://docs.unrealengine.com/ja/Engine/Animation/ControlRig/index.html
リギングとは? リグ (キャラクタを動かすための仕組み)を作ること ボーン ≠ リグ https://www.unrealengine.com/ja/blog/ue4-rigging
リギングとは? リグ (キャラクタを動かすための仕組み)を作ること ボーン ≠ リグ リグのコントローラを操作することで ボーン・モーフターゲットを 直感的 かつ 効率的 に 制御可能 https://www.unrealengine.com/ja/blog/ue4-rigging
リグがないとき…
リグがあるとき! IK / FKのどっちを 使うべきかの議論は 一旦置いておいて…
フェイシャルも! 【連載】第2回:映像制作におけるUE4のためのキャラクターデータ構成(リギング編)
Control Rig とは? ブループリントをベースとした スプリクト可能な リギング システム 公式ドキュメント「コントロールリグ」
実は結構前から存在する機能 ・・・
UE4 Animation and Physics Technical Showcase | GDC 2017 | Unreal Engine (UE4.16)
New Animation Features in Unreal Engine | GDC 2019 | Unreal Engine (UE4.21)
Enhancing Animation with Control Rig | GDC 2019 | Unreal Engine (UE4.21)
Control Rig Mannequin サンプルプロジェクト の公開アナウンス記事 (UE4.25)
@511Rogue Control Rig Tutorial - Part 01 – Animation In Unreal Engine 4 | Sonali Singh @AndiDev_ The Rigging Buddies Podcast #19: Helge Mathee. Unreal Engine Control Rig & More @kiaran_ritchie Power IK: Intro to Control Rig
一方その頃…
Control Rig は Unreal Engine 5 で 正式リリース予定 次世代のキャラクタ表現を 実現するための機能 Unreal Engine for Next-Gen Games | Unreal Fest Online 2020
Control Rig やるしかないっしょ!
Control Rig は 現在 Experimental (実験的) 機能 です 正式リリース版 に向けて UI・機能 に 様々な変更・修正が今後入る可能性があります 米 このページはこの先何度も登場します
リギング初心者なのでお手柔らかに…
本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料
Control Rigの良いところ 1 / 4 UE4 上 で アニメーションを作成・修正できる!
たとえばのはなし UE4上で良い感じに 動いてくれますように… DCCツール UE4
たとえばのはなし 服に手がめり込んでる… DCCツール戻して 修正しないと… DCCツール UE4
たとえばのはなし なんかイメージと 違うんだよね~ もっと「ズバッ!」 って感じでよろしく~ DCCツール UE4
たとえばのはなし 少しの修正なのに ツールを行ったり来たり… 待ち時間が… 外部ツール UE4
つらい
そんなときに活躍するのが 本日ご紹介する Control Rig!
Control Rigなら…! 実際のキャラ・シーンで 動きを作成できる! 物理挙動も確認できる! プロトタイプすぐ作れる! DCCツール UE4 Control Rig
既存のアニメーションを Control Rigだけで 別物にしたり お借りしたモデル:『レナ・カクテル-Lena Cocktail-』
Control Rigなら…! UE4上で修正できるから 他のツールに戻らなくていい! 修正結果もすぐ確認できる! 外部ツール UE4 Control Rig
モーションキャプチャデータを即確認・修正は熱い! リアルタイム モーションキャプチャのための パフォーマンスキャプチャ システムの選定 Unreal Engine でリアルタイムフェイシャルキャプチャ を行う新しい iOS アプリの Live Link Face がリリース
Control Rigの良いところ 2 / 4 お馴染みのノード, Python でリグを組める
お馴染みのノードで組める! Blueprint をベースとした ノード インターフェースを提供 様々な便利ノードを提供 今後も続々と追加予定! C++で独自ノードを作成可能
Pythonで組める! 普段リグを組んでいる方にとって 馴染み深いスクリプト言語 リグの自動生成など ワークフローの自動化に有用 UE4の様々な機能を使用可能 ( Unreal Python API ドキュメント) import unreal import sys unreal.load_module('ControlRigDeveloper') # 現在開いているControlRigを取得 rigs = unreal.ControlRigBlueprint.get_currently_open_rig_blueprints() rig = rigs[0] # 現在選択しているノードを取得 controller = rig.controller graph = controller.get_graph() select_node_names = graph.get_select_nodes() select_node_name = select_names_nodes[0] select_node = graph.find_node_by_name(select_node_name) # SetSpaceTransformノードを追加 unit = unreal.RigUnit_SetSpaceTransform.static_struct() node_set_space = controller.add_struct_node(script_struct = unit, method_name = “Execute”, position = select_node.get_position() + unreal.Vector2D(500 , 0)) # 現在選択しているノードを新規追加したノードをつなぐ pin1 = select_node.find_pin('ExecuteContext') pin2 = node_set_space.find_pin('ExecuteContext') success = controller.add_link(pin1.get_pin_path(), pin2.get_pin_path())
公式ドキュメント 「 Python を使用したエディタのスクリプティング」 Editor Utility Widget
お借りしたモデル:『レナ・カクテル-Lena Cocktail-』
@GregoryRich19 さんが つい先日公開した ツールも参考になるはず https://github.com/taylorbenwright/ ControlRigExt
Control Rigの良いところ 3 / 4 エディタ上だけでなく ランタイム(実行中)でも使える!
ランタイムで使えるメリット プロシージャル アニメーションの実装に使える! 特定のキャラクタにおける補正処理 Enhancing Animation with Control Rig | GDC 2019 | Unreal Engine
この分野は素人なのですが… 既存のAnimation BPでも 近いことはできたよ? メリットとしては薄くない?
Control Rigの良いところ 4 / 4 独自の軽量なVM(バーチャルマシン)を 使用している!
Animation BPの場合… BP用 VM データの変換処理に時間がかかる…
Control Rigの場合… Control Rig用 VM BPに比べて 変換処理が超速い!
AutoCompile 作業内容を 即プレビューに反映 上部のツールバーから OFFにすることも可能
実行速度を簡易的に比較 条件 ● ( FABRIKノード * 10 ) * 100体, PIE ● stat anim の PerformAnimEvaluation_WorkerThreadを比較 結果 ● AnimGraph版 :6.06 ms ● Control Rig版 :3.67 ms 約39% 向上 Testパッケージだと差はほぼ無くなるが Control Rigはまだ最適化前なので今後に期待
ここまでのまとめ ● Control Rig により UE4上 で「リグの作成」「アニメーションの作成・修正」が可能に ● DCCツールとのやり取りを減らすことで より高速かつ高精度なワークフローを構築可能に ● ノード, Python という必須機能だけでなく軽量なVMを提供することで 高速なイテレーションと、ランタイム上での高速な動作を実現 ● まだExperimentalだけど なんかすごそう!
本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料
Control Rig は 現在 Experimental (実験的) 機能 です 正式リリース版 に向けて UI・機能 に 様々な変更・修正が今後入る可能性があります 米 このページはこの先何度も登場します
お品書き – Control Rigの作り方・使い方 1. Control Rig アセット の 編集用エディタについて 2. Control Rig アセット を 1 から作る際の基本的な流れ 3. Control Rig アセットの使い方
Control Rig 編集エディタ の 各UIについて (基本編)
Control Rig Mannequin サンプル
Viewport
Rig Graph
Rig Hierarchy
Rig Hierarchy
Rig Hierarchy
Rig Hierarchy
Control Rig アセット 制御するボーンの 階層構造 Skeleton アセット リグの階層構造
Control Rig は Skeleton アセットに依存していない
Control Rig は Skeleton アセットに依存していない SK_Mannequin とソフト参照しているのは Preview Mesh で使っているから
Control Rig は Skeleton アセットに依存していない 骨の名前・階層構造が一致していれば Skeleton アセットが異なっていても、Control Rigを流用可能
お品書き – Control Rigの作り方・使い方 1. Control Rig アセット の 編集用エディタについて 2. Control Rig を 1 から作る際の基本的な流れ 3. Control Rig アセットの使い方
これから説明する内容は Pythonからでも実行可能ですが… 時間の都合で エディタ操作のみ説明します
Control Rig アセット の作り方
Control Rig プラグインを有効に
Control Rigアセットを作成 ● 右クリックメニューから新規作成 ● Skeletal Mesh / Skeletal アセットの右クリックメニューから作成
ここからの流れ ボーンの 階層構造を構築 リグの 階層構造を構築 リグを動かす ボーンに反映
制御するボーンの 階層構造をアセットに追加
OR Import Hierarchy ボタンを押す Rig Hierarchy の右クリックメニュー
ちなみに… Skeletal Mesh / Skeletonアセットから作成した場合は 自動的にこの処理が行われます
ボーンを個別に追加することも可能 インポートしたものとの差はほぼなし ● アイコンの色 ● 削除時の警告の有無
リグを構築 ( Space, Control を追加 )
: Control : Space
Control ビューポート上で操作するパーツ Control の操作結果を ボーンに反映するフローが基本
Space Control の 座標系 ( 原点 ) を 制御 するパーツ = リグの階層構造の構築用 BP における Scene Component に近い Controlとは異なり、 ビューポート上で操作するための機能ではない
Space, Controlの追加方法 Rig Hierarchy の 右クリックメニュー から追加可能 D&D で 階層構造の編集が可能 ボーン側の階層構造にも追加可能 ただし 個人的には非推奨
Space, Controlの使い分け ビューポート上で動かしたいか 否か 動かしたい! Control 動かさない Control の原点を調整するだけ Space
なぜ 「Control の原点 」を 強調するのか
Control の親がない場合 キャラクターの原点が Control の原点になる とてもとても調整しづらい & 調整後の値が分かりづらい & ・ ・ ・
原点のTransformを調整可能ですが…
決め打ちになるので、汎用性がなくなります 体型が完全に一致していないとズレる 既存のアニメーションと 併用できない
制御する骨の位置に合わせた Space を Control の 親にすることで解決
特定の骨の位置・向きにSpaceを合わせるには Set Space ノード と Get Transform ノードを 使う! Set Space : SpaceのTransformを設定 Get Transform: ノードが呼ばれたタイミングの ボーンのTransformを取得
とにかく強く伝えたいこと Control の原点を 「どのタイミング」 の 「どの場所」にするか / あるか? を強く意識するようにしましょう
よく分からん…という方向け Control を使ってボーンを制御する直前に Control の 親 ( 原点 )を その制御するボーンに合わせておくと幸せになれます
Space, Control の初期Transformを ノードを使わずに指定したい場合 現在位置、または その周辺のボーン位置を 初期 Transform に指定可能 Spaceの場合は Control Space Transform を クリックすると ビューポート上で操作可能に
ここからの流れ ボーンの 階層構造を構築 リグを構築 リグを動かす ボーンに反映
ボーンを制御する処理を ノードで実装する
Begin Execute ノード がスタート
Control, Space を元に ボーンを制御 Controlの位置・向きを ボーンに反映 Basic IK( Two Bone IK ) の制御に 各Control の Transform を使用
お品書き – Control Rigの作り方・使い方 1. Control Rig アセット の 編集用エディタについて 2. Control Rig を 1 から作る際の基本的な流れ 3. Control Rig アセットの使い方
Control Rig アセットの使い方 Level Sequence での アニメーション作成・修正に使う方法 Animation BPでの制御に組み込む方法
Level Sequence で使う場合 Skeletal Mesh Comp, またはそれを持つ Actor に Control Rig用 Trackを追加するだけ! アニメーションを修正する場合は、 Animation Track に そのアセットを指定する
アニメーション の キー を打つ Control Rig 用 Track の 各プロパティにキーを打っていく Control を動かすことで 対応するプロパティにキーを打てる
キーの補間カーブを調整可能
アニメーションアセットを作成
Additive Control Rig 各ボーン毎にControl を持つ(各ボーンを FK で動かせる) Control Rig を 自動生成可能
Control Rig アセットの使い方 ● Level Sequence での アニメーション作成・修正に使う方法 ● Animation BPでの制御に組み込む方法
Animation BP に組み込む方法 Anim Graph にて Control Rig ノードを追加・接続し、 ノードの詳細パネルにて 使用する Control Rig アセットを指定
既存のアニメーション を Control Rigで補正
Animation BP から Control Rigにパラメータを渡すには? Control Rig にて Get Parameter 系のノードを使って 変数を用意する Control Rig側 Animation BP側
!!! 注意 !!! UE4.25.1時点 では エディタ再起動すると このパラメータが正常に動作しなくなる不具合があります Control Rig 側の Get Parameter ノードを 接続解除・再接続すれば解決しますが… この修正が入るまでは Get Parameter は使わないことをオススメします UE-94316 Control Rig parameters don't function in the AnimBP after the Editor restarts
ここまでのまとめ ● Control Rig アセットは、 ボーン・リグ(Space, Control)の階層構造 と それらの制御する ノード で構成されている ● Control Rig を活用することで、 Level Sequence でのアニメーション制御・作成と Animation BP における 補正処理 が可能
本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料
Control のカスタマイズ
Control Type Control の 操作形式 を 設定 ● 例:移動させたくない Control は Rotator に設定
Limits Control の 操作範囲 を設定 Control Type の種類に応じた設定項目が並ぶ形
Gizmo Control の 形状・色 を設定
Gizmo Library Gizmo の形状は Gizmo Library アセットで管理 独自の Static Mesh を追加可能 Control Rig の Class Settings プロジェクト設定の Control Rigカテゴリ
エンジン標準で用意している形状
3D Text を Static Mesh に変換することで Control Rig の デバッグ表示に文字を使うことも
NURBSカーブ から デバッグ表示を作成することも可能 Class Settings -> Drawing / Curves from FBX
Drawingによるデバッグ表示は ノード で 表示位置などを調整可能 FBXインポート時に スケール・カーブの滑らかさを調整可能 FBX内の複数のNURBSカーブを マージすることも可能 Detail : 1の場合
Level Sequence との併用時に使用可能な Animation Editing Mode の 便利機能について
Display Hierarchy Control Rigが持つボーンの階層構造を可視化 ( Skeleton の可視化ではない )
Only Select Rig Controls 有効にすると、Control Rig の Control のみ選択可能に
Rig Graph Tips
ボーン制御用ノード
ボーンに関する Set / Get Reference Pose に おける Transform
IK ↑ Two Bone IK
Aim
Transform Constraint
Transform Constraint
Distribute Rotation
Fit Chain on Curve ベジエ曲線でボーンを制御
Harmonics (Point Based Simulation ) 波形情報を元に各ボーンを制御
Slide Chain
モーフターゲット (カーブ情報)の制御
Curve Container Control Rigが制御する カーブ情報 を管理 特定のSkeletal Mesh が持つ カーブ情報をインポートすることも可能
Set / Get Curve Value ノード モーフターゲット や ポーズアセットのブレンド率 など を Control Rig から 制御することが可能
制御を組んでいく上で 役に立つ機能
算術系 たくさんあります
出力ピン の値に対して補正を行う機能
使用例
変数用ノードもあり フレームを跨いでも値を保持し続ける
Simulation系 主に、一定時間内における 値の変化に対しての処理
Accumulate Lerp
Accumulated Time
Value Over Time
Verlet
デバッグ機能
デバッグ表示用 一部のノードには デバッグ表示機能を用意
デバッグ表示 デバッグ表示用のノードも提供
デバッグ表示 ノードのピン にも デバッグ表示機能あり
Execution Stack Control Rig が実行する処理の順番を確認可能
Execution Stack
Hierarchical Profiler
本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料
まとめ Control Rig は、UE4でリグの作成・制御を行う機能。 UE4上でアニメーションの作成・修正 や より複雑なアニメーション制御が可能に
まとめ Control Rig は、 Space, Control の階層構造によるリグと それらを元に制御する ボーンの階層構造 を持つ ボーンの制御はノードを使って行う
まとめ 既に機能が盛り沢山です! リギングする上で最低限必要な機能だけでなく、 作業支援・デバッグ用の機能が充実しつつあります!
最後に Control Rig は Experimental 段階ではありますが、 非常に有用な機能に育ってきています 今後の更なる改良 や UE5を考えると、期待できる・注目すべき機能かと思います ランタイムに組み込むのはまだ推奨はできませんが… DCCツール や モーションキャプチャ から インポートしたアニメーションアセットの調整には十分に利用可能…なはずです! ぜひ一度触ってみてください!
参考資料 ( 既にリンク紹介したもの以外) ● [UE4]Control Rig機能調査 ( Seiko_dev_memo -) ● 恒吉星光 (@seiko_dev )様、本当にありがとうございます! ● CharacterArpeggio~3ds Max 2017 キャラクター作成術~ (AREA JAPAN) ● リグブログ ● アニメーター向けすぐに使えるメモまとめ ( わかすぎものがたり )