猫でも分かる Control Rig UE4.25 版 【UNREAL FEST EXTREME 2020 SUMMER】

63.3K 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

profile-image

Unreal Engineを開発・提供しているエピック ゲームズ ジャパンによる公式アカウントです。 勉強会や配信などで行った講演資料を公開しています。 公式サイトはこちら https://www.unrealengine.com/ja/

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

猫でも分かる Control Rig -UE4.25 版UNREAL FEST EXTREME 2020 SUMMER Epic Games Japan 岡田 和也

2.

はじめに ←のアイコンがついている画像は全て動画です Slideshareの説明欄にあるURLリンク先の 元スライド・講演動画よりご確認ください

3.

本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料

4.

Control Rig とは? ブループリントをベースとした スプリクト可能な リギング システム https://docs.unrealengine.com/ja/Engine/Animation/ControlRig/index.html

5.

リギングとは? リグ (キャラクタを動かすための仕組み)を作ること ボーン ≠ リグ https://www.unrealengine.com/ja/blog/ue4-rigging

6.

リギングとは? リグ (キャラクタを動かすための仕組み)を作ること ボーン ≠ リグ リグのコントローラを操作することで ボーン・モーフターゲットを 直感的 かつ 効率的 に 制御可能 https://www.unrealengine.com/ja/blog/ue4-rigging

7.

リグがないとき…

8.

リグがあるとき! IK / FKのどっちを 使うべきかの議論は 一旦置いておいて…

9.

フェイシャルも! 【連載】第2回:映像制作におけるUE4のためのキャラクターデータ構成(リギング編)

10.

Control Rig とは? ブループリントをベースとした スプリクト可能な リギング システム 公式ドキュメント「コントロールリグ」

11.

実は結構前から存在する機能 ・・・

12.

UE4 Animation and Physics Technical Showcase | GDC 2017 | Unreal Engine (UE4.16)

13.

New Animation Features in Unreal Engine | GDC 2019 | Unreal Engine (UE4.21)

14.

Enhancing Animation with Control Rig | GDC 2019 | Unreal Engine (UE4.21)

15.

Control Rig Mannequin サンプルプロジェクト の公開アナウンス記事 (UE4.25)

16.

@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

17.

一方その頃…

18.

Control Rig は Unreal Engine 5 で 正式リリース予定 次世代のキャラクタ表現を 実現するための機能 Unreal Engine for Next-Gen Games | Unreal Fest Online 2020

19.

Control Rig やるしかないっしょ!

20.

Control Rig は 現在 Experimental (実験的) 機能 です 正式リリース版 に向けて UI・機能 に 様々な変更・修正が今後入る可能性があります 米 このページはこの先何度も登場します

21.

リギング初心者なのでお手柔らかに…

22.

本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料

23.

Control Rigの良いところ 1 / 4 UE4 上 で アニメーションを作成・修正できる!

24.

たとえばのはなし UE4上で良い感じに 動いてくれますように… DCCツール UE4

25.

たとえばのはなし 服に手がめり込んでる… DCCツール戻して 修正しないと… DCCツール UE4

26.

たとえばのはなし なんかイメージと 違うんだよね~ もっと「ズバッ!」 って感じでよろしく~ DCCツール UE4

27.

たとえばのはなし 少しの修正なのに ツールを行ったり来たり… 待ち時間が… 外部ツール UE4

28.

つらい

29.

そんなときに活躍するのが 本日ご紹介する Control Rig!

30.

Control Rigなら…! 実際のキャラ・シーンで 動きを作成できる! 物理挙動も確認できる! プロトタイプすぐ作れる! DCCツール UE4 Control Rig

31.

既存のアニメーションを Control Rigだけで 別物にしたり お借りしたモデル:『レナ・カクテル-Lena Cocktail-』

32.

Control Rigなら…! UE4上で修正できるから 他のツールに戻らなくていい! 修正結果もすぐ確認できる! 外部ツール UE4 Control Rig

33.

モーションキャプチャデータを即確認・修正は熱い! リアルタイム モーションキャプチャのための パフォーマンスキャプチャ システムの選定 Unreal Engine でリアルタイムフェイシャルキャプチャ を行う新しい iOS アプリの Live Link Face がリリース

34.

Control Rigの良いところ 2 / 4 お馴染みのノード, Python でリグを組める

35.

お馴染みのノードで組める! Blueprint をベースとした ノード インターフェースを提供 様々な便利ノードを提供 今後も続々と追加予定! C++で独自ノードを作成可能

37.

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())

38.

公式ドキュメント 「 Python を使用したエディタのスクリプティング」 Editor Utility Widget

39.

お借りしたモデル:『レナ・カクテル-Lena Cocktail-』

40.

@GregoryRich19 さんが つい先日公開した ツールも参考になるはず https://github.com/taylorbenwright/ ControlRigExt

41.

Control Rigの良いところ 3 / 4 エディタ上だけでなく ランタイム(実行中)でも使える!

42.

ランタイムで使えるメリット プロシージャル アニメーションの実装に使える! 特定のキャラクタにおける補正処理 Enhancing Animation with Control Rig | GDC 2019 | Unreal Engine

43.

この分野は素人なのですが… 既存のAnimation BPでも 近いことはできたよ? メリットとしては薄くない?

44.

Control Rigの良いところ 4 / 4 独自の軽量なVM(バーチャルマシン)を 使用している!

45.

Animation BPの場合… BP用 VM データの変換処理に時間がかかる…

46.

Control Rigの場合… Control Rig用 VM BPに比べて 変換処理が超速い!

47.

AutoCompile 作業内容を 即プレビューに反映 上部のツールバーから OFFにすることも可能

48.

実行速度を簡易的に比較 条件 ● ( FABRIKノード * 10 ) * 100体, PIE ● stat anim の PerformAnimEvaluation_WorkerThreadを比較 結果 ● AnimGraph版 :6.06 ms ● Control Rig版 :3.67 ms 約39% 向上 Testパッケージだと差はほぼ無くなるが Control Rigはまだ最適化前なので今後に期待

49.

ここまでのまとめ ● Control Rig により UE4上 で「リグの作成」「アニメーションの作成・修正」が可能に ● DCCツールとのやり取りを減らすことで より高速かつ高精度なワークフローを構築可能に ● ノード, Python という必須機能だけでなく軽量なVMを提供することで 高速なイテレーションと、ランタイム上での高速な動作を実現 ● まだExperimentalだけど なんかすごそう!

50.

本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料

51.

Control Rig は 現在 Experimental (実験的) 機能 です 正式リリース版 に向けて UI・機能 に 様々な変更・修正が今後入る可能性があります 米 このページはこの先何度も登場します

52.

お品書き – Control Rigの作り方・使い方 1. Control Rig アセット の 編集用エディタについて 2. Control Rig アセット を 1 から作る際の基本的な流れ 3. Control Rig アセットの使い方

53.

Control Rig 編集エディタ の 各UIについて (基本編)

54.

Control Rig Mannequin サンプル

55.

Viewport

56.

Rig Graph

57.

Rig Hierarchy

58.

Rig Hierarchy

59.

Rig Hierarchy

60.

Rig Hierarchy

61.

Control Rig アセット 制御するボーンの 階層構造 Skeleton アセット リグの階層構造

62.

Control Rig は Skeleton アセットに依存していない

63.

Control Rig は Skeleton アセットに依存していない SK_Mannequin とソフト参照しているのは Preview Mesh で使っているから

64.

Control Rig は Skeleton アセットに依存していない 骨の名前・階層構造が一致していれば Skeleton アセットが異なっていても、Control Rigを流用可能

65.

お品書き – Control Rigの作り方・使い方 1. Control Rig アセット の 編集用エディタについて 2. Control Rig を 1 から作る際の基本的な流れ 3. Control Rig アセットの使い方

66.

これから説明する内容は Pythonからでも実行可能ですが… 時間の都合で エディタ操作のみ説明します

67.

Control Rig アセット の作り方

68.

Control Rig プラグインを有効に

69.

Control Rigアセットを作成 ● 右クリックメニューから新規作成 ● Skeletal Mesh / Skeletal アセットの右クリックメニューから作成

71.

ここからの流れ ボーンの 階層構造を構築 リグの 階層構造を構築 リグを動かす ボーンに反映

72.

制御するボーンの 階層構造をアセットに追加

73.

OR Import Hierarchy ボタンを押す Rig Hierarchy の右クリックメニュー

75.

ちなみに… Skeletal Mesh / Skeletonアセットから作成した場合は 自動的にこの処理が行われます

76.

ボーンを個別に追加することも可能 インポートしたものとの差はほぼなし ● アイコンの色 ● 削除時の警告の有無

77.

リグを構築 ( Space, Control を追加 )

78.

: Control : Space

79.

Control ビューポート上で操作するパーツ Control の操作結果を ボーンに反映するフローが基本

80.

Space Control の 座標系 ( 原点 ) を 制御 するパーツ = リグの階層構造の構築用 BP における Scene Component に近い Controlとは異なり、 ビューポート上で操作するための機能ではない

81.

Space, Controlの追加方法 Rig Hierarchy の 右クリックメニュー から追加可能 D&D で 階層構造の編集が可能 ボーン側の階層構造にも追加可能 ただし 個人的には非推奨

82.

Space, Controlの使い分け ビューポート上で動かしたいか 否か 動かしたい! Control 動かさない Control の原点を調整するだけ Space

83.

なぜ 「Control の原点 」を 強調するのか

84.

Control の親がない場合 キャラクターの原点が Control の原点になる とてもとても調整しづらい & 調整後の値が分かりづらい & ・ ・ ・

85.

原点のTransformを調整可能ですが…

86.

決め打ちになるので、汎用性がなくなります 体型が完全に一致していないとズレる 既存のアニメーションと 併用できない

87.

制御する骨の位置に合わせた Space を Control の 親にすることで解決

88.

特定の骨の位置・向きにSpaceを合わせるには Set Space ノード と Get Transform ノードを 使う! Set Space : SpaceのTransformを設定 Get Transform: ノードが呼ばれたタイミングの ボーンのTransformを取得

89.

とにかく強く伝えたいこと Control の原点を 「どのタイミング」 の 「どの場所」にするか / あるか? を強く意識するようにしましょう

91.

よく分からん…という方向け Control を使ってボーンを制御する直前に Control の 親 ( 原点 )を その制御するボーンに合わせておくと幸せになれます

92.

Space, Control の初期Transformを ノードを使わずに指定したい場合 現在位置、または その周辺のボーン位置を 初期 Transform に指定可能 Spaceの場合は Control Space Transform を クリックすると ビューポート上で操作可能に

93.

ここからの流れ ボーンの 階層構造を構築 リグを構築 リグを動かす ボーンに反映

94.

ボーンを制御する処理を ノードで実装する

95.

Begin Execute ノード がスタート

96.

Control, Space を元に ボーンを制御 Controlの位置・向きを ボーンに反映 Basic IK( Two Bone IK ) の制御に 各Control の Transform を使用

98.

お品書き – Control Rigの作り方・使い方 1. Control Rig アセット の 編集用エディタについて 2. Control Rig を 1 から作る際の基本的な流れ 3. Control Rig アセットの使い方

99.

Control Rig アセットの使い方 Level Sequence での アニメーション作成・修正に使う方法 Animation BPでの制御に組み込む方法

100.

Level Sequence で使う場合 Skeletal Mesh Comp, またはそれを持つ Actor に Control Rig用 Trackを追加するだけ! アニメーションを修正する場合は、 Animation Track に そのアセットを指定する

102.

アニメーション の キー を打つ Control Rig 用 Track の 各プロパティにキーを打っていく Control を動かすことで 対応するプロパティにキーを打てる

103.

キーの補間カーブを調整可能

104.

アニメーションアセットを作成

105.

Additive Control Rig 各ボーン毎にControl を持つ(各ボーンを FK で動かせる) Control Rig を 自動生成可能

106.

Control Rig アセットの使い方 ● Level Sequence での アニメーション作成・修正に使う方法 ● Animation BPでの制御に組み込む方法

107.

Animation BP に組み込む方法 Anim Graph にて Control Rig ノードを追加・接続し、 ノードの詳細パネルにて 使用する Control Rig アセットを指定

108.

既存のアニメーション を Control Rigで補正

109.

Animation BP から Control Rigにパラメータを渡すには? Control Rig にて Get Parameter 系のノードを使って 変数を用意する Control Rig側 Animation BP側

110.

!!! 注意 !!! UE4.25.1時点 では エディタ再起動すると このパラメータが正常に動作しなくなる不具合があります Control Rig 側の Get Parameter ノードを 接続解除・再接続すれば解決しますが… この修正が入るまでは Get Parameter は使わないことをオススメします UE-94316 Control Rig parameters don't function in the AnimBP after the Editor restarts

111.

ここまでのまとめ ● Control Rig アセットは、 ボーン・リグ(Space, Control)の階層構造 と それらの制御する ノード で構成されている ● Control Rig を活用することで、 Level Sequence でのアニメーション制御・作成と Animation BP における 補正処理 が可能

112.

本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料

113.

Control のカスタマイズ

114.

Control Type Control の 操作形式 を 設定 ● 例:移動させたくない Control は Rotator に設定

115.

Limits Control の 操作範囲 を設定 Control Type の種類に応じた設定項目が並ぶ形

116.

Gizmo Control の 形状・色 を設定

117.

Gizmo Library Gizmo の形状は Gizmo Library アセットで管理 独自の Static Mesh を追加可能 Control Rig の Class Settings プロジェクト設定の Control Rigカテゴリ

118.

エンジン標準で用意している形状

119.

3D Text を Static Mesh に変換することで Control Rig の デバッグ表示に文字を使うことも

120.

NURBSカーブ から デバッグ表示を作成することも可能 Class Settings -> Drawing / Curves from FBX

121.

Drawingによるデバッグ表示は ノード で 表示位置などを調整可能 FBXインポート時に スケール・カーブの滑らかさを調整可能 FBX内の複数のNURBSカーブを マージすることも可能 Detail : 1の場合

122.

Level Sequence との併用時に使用可能な Animation Editing Mode の 便利機能について

123.

Display Hierarchy Control Rigが持つボーンの階層構造を可視化 ( Skeleton の可視化ではない )

124.

Only Select Rig Controls 有効にすると、Control Rig の Control のみ選択可能に

125.

Rig Graph Tips

126.

ボーン制御用ノード

127.

ボーンに関する Set / Get Reference Pose に おける Transform

128.

IK ↑ Two Bone IK

130.

Aim

131.

Transform Constraint

132.

Transform Constraint

133.

Distribute Rotation

134.

Fit Chain on Curve ベジエ曲線でボーンを制御

135.

Harmonics (Point Based Simulation ) 波形情報を元に各ボーンを制御

136.

Slide Chain

137.

モーフターゲット (カーブ情報)の制御

138.

Curve Container Control Rigが制御する カーブ情報 を管理 特定のSkeletal Mesh が持つ カーブ情報をインポートすることも可能

139.

Set / Get Curve Value ノード モーフターゲット や ポーズアセットのブレンド率 など を Control Rig から 制御することが可能

141.

制御を組んでいく上で 役に立つ機能

142.

算術系 たくさんあります

143.

出力ピン の値に対して補正を行う機能

144.

使用例

145.

変数用ノードもあり フレームを跨いでも値を保持し続ける

146.

Simulation系 主に、一定時間内における 値の変化に対しての処理

147.

Accumulate Lerp

148.

Accumulated Time

149.

Value Over Time

150.

Verlet

151.

デバッグ機能

152.

デバッグ表示用 一部のノードには デバッグ表示機能を用意

153.

デバッグ表示 デバッグ表示用のノードも提供

154.

デバッグ表示 ノードのピン にも デバッグ表示機能あり

156.

Execution Stack Control Rig が実行する処理の順番を確認可能

157.

Execution Stack

158.

Hierarchical Profiler

159.

本日のお品書き ● Control Rigとは? ● Control Rig の良いところ ● Control Rig の作り方・使い方 ● Control Rig Tips ● まとめ・参考資料

160.

まとめ Control Rig は、UE4でリグの作成・制御を行う機能。 UE4上でアニメーションの作成・修正 や より複雑なアニメーション制御が可能に

161.

まとめ Control Rig は、 Space, Control の階層構造によるリグと それらを元に制御する ボーンの階層構造 を持つ ボーンの制御はノードを使って行う

162.

まとめ 既に機能が盛り沢山です! リギングする上で最低限必要な機能だけでなく、 作業支援・デバッグ用の機能が充実しつつあります!

163.

最後に Control Rig は Experimental 段階ではありますが、 非常に有用な機能に育ってきています 今後の更なる改良 や UE5を考えると、期待できる・注目すべき機能かと思います ランタイムに組み込むのはまだ推奨はできませんが… DCCツール や モーションキャプチャ から インポートしたアニメーションアセットの調整には十分に利用可能…なはずです! ぜひ一度触ってみてください!

164.

参考資料 ( 既にリンク紹介したもの以外) ● [UE4]Control Rig機能調査 ( Seiko_dev_memo -) ● 恒吉星光 (@seiko_dev )様、本当にありがとうございます! ● CharacterArpeggio~3ds Max 2017 キャラクター作成術~ (AREA JAPAN) ● リグブログ ● アニメーター向けすぐに使えるメモまとめ ( わかすぎものがたり )