Skip to main content
猫でも分かる 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)
The Rigging Buddies Podcast #19:
Helge Mathee. Unreal Engine
Control Rig & More
@AndiDev_
Control Rig Tutorial - Part 01 –
Animation In Unreal Engine 4 |
Sonali Singh
@kiaran_ritchie
Power IK: Intro to Control Rig
@511Rogue
一方その頃…
Unreal Engine for Next-Gen Games |
Unreal Fest Online 2020
Control Rig は
Unreal Engine 5 で
正式リリース予定
次世代のキャラクタ表現を
実現するための機能
Control Rig
やるしかないっしょ!
Control Rig は
現在 Experimental (実験的) 機能 です
正式リリース版 に向けて
UI・機能 に 様々な変更・修正が今後入る可能性があります
米 このページはこの先何度も登場します
リギング初心者なのでお手柔らかに…
本日のお品書き
● Control Rigとは?
● Control Rig の良いところ
● Control Rig の作り方・使い方
● Control Rig Tips
● まとめ・参考資料
Control Rigの良いところ 1 / 4
UE4 上 で アニメーションを作成・修正できる!
たとえばのはなし
DCCツール UE4
UE4上で良い感じに
動いてくれますように…
たとえばのはなし
DCCツール UE4
服に手がめり込んでる…
DCCツール戻して
修正しないと…
たとえばのはなし
DCCツール UE4
なんかイメージと
違うんだよね~
もっと「ズバッ!」
って感じでよろしく~
たとえばのはなし
外部ツール UE4
少しの修正なのに
ツールを行ったり来たり…
待ち時間が…
つらい
そんなときに活躍するのが
本日ご紹介する
Control Rig!
Control Rigなら…!
DCCツール
UE4
Control Rig
実際のキャラ・シーンで
動きを作成できる!
物理挙動も確認できる!
プロトタイプすぐ作れる!
既存のアニメーションを Control Rigだけで 別物にしたり
お借りしたモデル:『レナ・カクテル-Lena Cocktail-』
Control Rigなら…!
外部ツール
UE4
Control Rig
UE4上で修正できるから
他のツールに戻らなくていい!
修正結果もすぐ確認できる!
モーションキャプチャデータを即確認・修正は熱い!
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
Testパッケージだと差はほぼ無くなるが
Control Rigはまだ最適化前なので今後に期待
約39% 向上
ここまでのまとめ
● 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
Skeleton アセット
制御するボーンの
階層構造
リグの階層構造
Control Rig アセット
Control Rig は
Skeleton アセットに依存していない
Control Rig は Skeleton アセットに依存していない
SK_Mannequin とソフト参照しているのは
Preview Mesh で使っているから
骨の名前・階層構造が一致していれば
Skeleton アセットが異なっていても、Control Rigを流用可能
Control Rig は Skeleton アセットに依存していない
お品書き – 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 に
そのアセットを指定する