キャプチャデータはもういらない!
プロシージャル
キャラクターアニメーションガイド
Procedural Character Animation Guide
2018/5/9
落合信人
映画・テレビのVFXスーパーバイザー
特撮ドラマプロデューサー
プラグインプログラマー
現在ディープラーニング勉強中!
Telesight / Technical Director
@numbershots
従来のキーフレーム型アニメーションの問題点
• モーションデータは修正が大変
• 手付けの方法は作業量が多い
• キャラクター分だけモーションを準備しなければならない
• モーションのブレンドツリーを組むのも大変
• 動きが決まっているので単調に見える
プログラムだけでアニメーションするAssetを開発
Procedural Character Animation
SmartRig Biped
• プログラムだけで歩行~走行アニメーションを実現
• 体系と移動に応じた動きをリアルタイムに生成
• 足の滑りもなく、接地面のオブジェクトも指定可能
• Mecanimが適用されたモデルなら、ワンタッチで設定
• RagdollやNavMeshにも対応
• プログラムなのでアニメーションデータも必要ない
SmartRig Biped パラメーター
SmartRig Bipedのパラメータは大きく二つに分かれて
います。
Setup Parameter
キャラクタの基本姿勢の調整。腰の位置や手の曲がり具
合など
Animation Parameter
アニメーションの調整。足の上げ具合や曲げ具合、フット
ステップに応じた、頭と胴、両手の位置や曲げ具
Unityでの使い方
lゲームキャラクタなどの基本モーションを制御できる。
lパラメータを調整し、簡単にバリエーションを出せる。
lイベントモーションなどは、アニメーションレイヤーで重ねてスクリプトで制御。
l群衆などは、キャラクタの位置と回転だけ制御すれば良い。
lVRなどのリアルな背景との合成もフットステップが滑らない。
基本アルゴリズム
• 2歩の距離を定義
• 移動距離で設定距離をカウント
• 0.0~0.5を右足を停止
• 0.5~1.0で左足を停止
• 停止以外は、元の位置を追っかける
• カウントからSinなどで上下を追加
• Sinを変換して、足の回転等を再現
カウントコード
void Start () {
cont_up = 0; //カウントの初期値
length = 1.0; //左右2歩の距離の設定
}
void Update () {
this_pos = this.transform.position; //現在の位置
move_vec = this_pos – this_pos0; //現在の位置から一つ前の位置を引く(移動したベクトル値)
ds_len = move_vec.magnitude; //移動したベクトル値を長さに変える
this_pos0 = this_pos; //現在の位置を保存しておく
cont_up = cont_up + ds_len /length; //移動距離を腰の高さで割り、カウントに足す
cont_footleft = cont_up % 1; //左足のカウント
cont_footright = (cont_up + 0.5f) % 1; //右足のカウント
if (cont_up > 1) {
cont_up = cont_up – 1; //カウントのリセット
}
}
Thank you!
ご静聴ありがとうございました!

【Unite 2018 Tokyo】キャプチャデータはもういらない!プロシージャル・キャラクターアニメーションガイド