Slide 1

Slide 1 text

Animation Riggingで 簡単リアルタイムリターゲット Roppongi.unity #5

Slide 2

Slide 2 text

Name: karukaru Twitter: https://twitter.com/_karukaru_ GitHub: https://github.com/karukaru808 普段は北海道で学生やりながら BitStar Akihabara Lab でVTuber関連の研究開発をやっています エンジニア募集中! 興味ある人は気軽にお声がけください https://www.wantedly.com/projects/322760 自己紹介 2 最近アイコン変えました

Slide 3

Slide 3 text

今日話す内容  リターゲットについて  Animation Riggingについて このLTは  アニメーションをガッツリ使用している人  モーションキャプチャしたデータをリアルタイムで使用している人 向けの内容です 3

Slide 4

Slide 4 text

リターゲットって何? 異なる骨構造を持ったHumanoidモデルであっても同じ アニメーションを使用できるようにしてくれる機能  腕/脚の長さの違い  移動量の違い  骨の命名の違い  初期ポーズ(T-Pose, A-Pose)の違い  etc... Mecanim(Animator)で吸収してくれる 便利! 4

Slide 5

Slide 5 text

モーションキャプチャとリターゲット モーションキャプチャしたデータをリアルタイムに直接キャラクターに流し込むと...? 5

Slide 6

Slide 6 text

何かがおかしい  脚が浮いてる 6  接地感がない

Slide 7

Slide 7 text

おかしい原因 モーションキャプチャデータはキャラクターのBone(Transform)に直接流し込まれる  Mecanim(Animator)のリターゲット機能が使えない! モーションキャプチャしている人間とキャラクターの色々な違いによりおかしくなる  腕/脚の長さの違い  移動量の違い  etc... 人間とキャラクターとのリターゲットが必要! 7

Slide 8

Slide 8 text

リターゲットしたい 大きな違和感の原因は以下の2つ  脚が浮いてる  脚の長さの違い  接地感がない  移動量の違い これらの違いを何かで上手く吸収してあげれば違和感なく動く(はず) 8 Animation Riggingで吸収してあげよう!

Slide 9

Slide 9 text

Animation Riggingって何? Unity2019.1以降で使用できるPackage 再生中のアニメーションをプログラマブルに変更できる Animation C# Jobs(C# Job System)をベース に構築されている  マルチスレッドで動作する! 詳しくはUniteTokyo2019の講演動画を見てください  Unity 2019での新アニメーション・リギング - Unite Tokyo 2019 https://www.youtube.com/watch?v=yg3jV2IzATc 9

Slide 10

Slide 10 text

使用するスクリプト  MultiPositionConstraint SourceObjectの Position を ConstrainedObjectにコピーする  Hipsの移動に使用 10  MultiRotationConstraint SourceObjectの Rotation を ConstrainedObjectにコピーする  各関節の回転に使用

Slide 11

Slide 11 text

移動量の違いの吸収について Animator.humanScale(Hipsの高さ)と人間の 腰の高さを比較して移動量の倍率を変える 倍率は1fを超えることもあるが、 MultiPositionConstraintのWeightは0f-1fの 値しか使用できない  PositionConstraintは1f以上の値を使用 できるので間に挟むことで解決 11

Slide 12

Slide 12 text

結果 主要なBoneに対して先ほどのスクリプトを設定した結果... 12

Slide 13

Slide 13 text

Animation Riggingでリターゲットするメリット Animation Riggingが使用できる!  TwistCorrectionで腕の補助骨を回転させる  DampedTransformで尻尾を動かす  MultiAimConstraintで任意の方向を向かせる  etc… Humanoidで必要そうな機能は大体そろってる上に、 独自のAnimation Riggingを書くことも可能 13

Slide 14

Slide 14 text

まとめ  Animation Riggingを使用してリアルタイムリターゲットが簡単にできた!  Humanoidに必要そうな機能は大体そろってる!  機能が足りなかったら自分で書ける!  色々応用できて楽しいので皆さんもAnimation Rigging触ってね! 14

Slide 15

Slide 15 text

参考文献  Unity 2019での新アニメーション・リギング - Unite Tokyo 2019 https://www.youtube.com/watch?v=yg3jV2IzATc  Unity 2019.1 リリース - Unity Blog https://blogs.unity3d.com/jp/2019/04/16/introducing-unity-2019-1/#animation  Animation C# Jobs - Unity Blog https://blogs.unity3d.com/jp/2018/08/27/animation-c-jobs/  高度な Animation Rigging:キャラクターとプロップのインタラクション - Unity Blog https://blogs.unity3d.com/jp/2019/09/05/advanced-animation-rigging-character-and-props-interaction/  Unityアニメーションシステムの 今と未来の話 https://www.slideshare.net/UnityTechnologiesJapan/unity-119555796  UnityのMecanimでキャラクターを動かす - Qiita https://qiita.com/yando/items/601e6fd35002e77ae9c8 15