1.9K Views
October 03, 25
スライド概要
2025年10月3日に行われた Autodesk Day 2025 の講演資料です。
https://cgworld.jp/special/autodeskday2025/
※本スライドはPDFに変換したもののため、実際に使用したスライドのGIF動画がすべて静止画になってしまっています。動画が正常に再生されるpptx版は何らかの形で公開予定です。諸々準備中ですので少々お待ちください。
【講演内容】
AREA JAPAN連載「Bifrost Rigging Challenge」の作例をダイジェストで紹介しながら、Bifrostが従来のリグをどう“拡張”できるのかを整理します。多関節IKやコリジョン、時間依存のフィードバック制御、動的ペアレント切替、そして機械学習による連動リグまで、標準ノードでは困難な領域を解決する実装のヒントを紹介。現役リガーにとっては実務のヒントに、学生さんにとってはアルゴリズムや考え方を知るきっかけになれば幸いです。
Bifrost Rigging Challenge: https://area.autodesk.jp/column/tutorial/bifrost-rigging-challenge/
Jet Studio Inc.という3DCGの会社でCGディレクターをやってます。
Bifrostで拡張するリグ表現 ~IKから機械学習まで、作例ダイジェスト~ © 2025 Jet Studio Inc.
このセッションでお話しすること ● AREA JAPAN連載「Bifrost for Maya Rigging Challenge」 のダイジェ スト ● ● Bifrostが従来のリグをどう“拡張”できるのか作例と共に振り返り ○ 距離制約 ○ 多関節IK ○ コリジョンデフォーマ ○ フィードバック制御 ○ 動的ペアレント切替 ○ 機械学習ソルバ ○ etc… 新機能の話を少し ※すべての作例は個人的な実験によるものです。 商業タイトルの実績に基づくものではありません。 © 2025 Jet Studio Inc.
自己紹介 ● 赤崎 弘幸 (あかさき ひろゆき) ● 株式会社ジェットスタジオ (2010 ~ 現在) ● CGI Div. チーフディレクター ● 普段の業務 ● ● ○ アセット (特にキャラモデル+リグ) 系の案件ディレクション多め。 ○ CGI Div.現場管理。技術サポート。社内ツール開発。R&D。 ○ その他雑用。 Bifrost歴 2024.1~ ○ CEDEC 2024『Bifrost for Mayaを活用したリギングとアニメーションの展望 ○ Autodesk Day 2024 『Bifrost for Mayaで作るプロシージャルアニメーション』 X : @akasaki1211 © 2025 Jet Studio Inc.
昨年(Autodesk Day 2024)のセッション 3行でおさらい ● Bifrostはビジュアルプログラミング環境だよ! ● Maya標準ノードでは出来なかったことが手軽にできるよ! ● 6本足のプロシージャルアニメーションを作ってみるよ! © 2025 Jet Studio Inc.
Bifrostで出来るようになること(昨年のスライドより) ● 反復計算が必要なもの → iterate ● 多数の頂点等をまとめて扱うもの → 自動ループ ● 前回の計算結果を再利用するもの → Feedback ● レイキャストなど ※リグやアニメーションにフォーカスして挙げています。 ※C++/Python APIを使えばできます。 ※expressionノードでもループなど一部の処理はできます。 © 2024 Jet Studio Inc.
Bifrostで出来るようになること(2025.9) ● 反復計算が必要なもの → iterate ● 多数の頂点等をまとめて扱うもの → 自動ループ ● 前回の計算結果を再利用するもの → Feedback ● レイキャストなど ● 機械学習モデルの推論 ←New (2.12~) ● Rigging Module Framework ←New (2.14~) ※リグやアニメーションにフォーカスして挙げています。 ※C++/Python APIを使えばできます。 ※expressionノードでもループなど一部の処理はできます。 © 2025 Jet Studio Inc.
各回構成 (第1回 ~ 第8回) タイトル 要点 使用バージョン Iterate (State Port) を使って反復計算で値を収束させる Bifrost 2.10.0.0 #1 両端を固定し長さが保てるベルトのリグ #2 多関節ロボットアームのリグ #3 コリジョンデフォーマー 自動ループ で大量の頂点位置を処理する #4 早く動かすと変形するリグ Feedback Port で直前(1F前)の状態を得る #5 ルービックキューブのリグ Feedback Port で値をキャッシュする Bifrost 2.11.0.0 #6 機械学習でリュックの連動リグ〜導入編〜 機械学習ノード で学習済みモデルの推論を実行する Bifrost 2.13.0.0 自動ループ や build_array で多数の値を効率よく操作する Bifrost 2.14.0.0 #7 機械学習でリュックの連動リグ〜実践編〜 #8 多数のステージライトを一括操作するリグ © 2025 Jet Studio Inc. 難易度(主観)
Iterate (State Port) © 2025 Jet Studio Inc.
iterate の Stateポートを使った反復計算の作例(1) #1より © 2025 Jet Studio Inc.
複数の制約を満たす姿勢を探す 2点間の長さを保つだけ(制約がひとつだけ)だったら標準でもできるが、 『“複数”の制約を同時に満たすちょうど良い姿勢』を反復計算で見つけたいときに活躍。 © 2025 Jet Studio Inc.
複数の制約を満たす姿勢を探す 距離制約に限らず、コリジョンが複数とかでもだいたい同じ。 参考:Bifrostではじめる位置ベース物理シミュ 第4回 ~コリジョンを追加する~ © 2025 Jet Studio Inc.
iterate の Stateポートを使った反復計算の作例(2) #2より © 2025 Jet Studio Inc.
多関節IK 多関節IKのFABRIK、CCD-IKなどを実装できる (※反復計算で姿勢を収束させる手法) © 2025 Jet Studio Inc.
FABRIK FABRIKは分岐パターンや閉じてるパターンもある。 Fullbody IKみたいなのも出来る。(はず) 参考: ● ● Forward And Backward Reaching Inverse Kinematics (FABRIK) Extending FABRIK with model constraints © 2025 Jet Studio Inc.
FABRIK + α コリジョンによる押し出し計算を挟んだり姿勢をFeedbackしたり... 反復計算の途中に挟み込む必要があるので、出来合いのプラグインでは網羅しにくい。 Bifrostはその場でプラグイン作れるようなものなので拡張しやすい。 © 2025 Jet Studio Inc.
自動ループ(+α) © 2025 Jet Studio Inc.
自動ループで頂点位置を操作する作例 #3より © 2025 Jet Studio Inc.
デフォーマ 1つの位置(3次元ベクトル)を更新する仕組みを作る。 → メッシュの全頂点の位置“配列”を接続し自動ループを発生させる。 → 簡易デフォーマができちゃう! © 2025 Jet Studio Inc.
コリジョンで頂点位置を更新する例 例: コリジョン平面に埋まった距離だけ頂点を内側に押し込む © 2025 Jet Studio Inc.
コリジョンで頂点位置を更新する例 例: コリジョン平面に埋まった距離だけ頂点を内側に押し込む + 接触していない頂点を外側に押し出す + © 2025 Jet Studio Inc.
コリジョンで頂点位置を更新する例 頂点位置を更新出来れば中身は何でも良い ● 球×点 © 2025 Jet Studio Inc.
コリジョンで頂点位置を更新する例 頂点位置を更新出来れば中身は何でも良い ● 球×点 ● 無限平面 × 点 © 2025 Jet Studio Inc.
コリジョンで頂点位置を更新する例 頂点位置を更新出来れば中身は何でも良い ● 球×点 ● 無限平面 × 点 ● 任意のメッシュ × 点 © 2025 Jet Studio Inc.
デフォーマ + α Feedbackで頂点を遅延させる処理を追加した例 © 2025 Jet Studio Inc.
自動ループで多数の小物を制御する作例 #8より © 2025 Jet Studio Inc.
多数のプロップ操作を一括で行う 1つの入力パラメータを効率的に複製・ループし、多数の値を一括で変更する。 © 2025 Jet Studio Inc.
build_array build_array で二次元配列を作り複数の配列からいずれかを選択する仕組みを作る。 © 2025 Jet Studio Inc.
ライトの回転に限らずいろいろなものに使える ● 簡易的な揺れもの ● 大量に配置したジオメトリキャッシュのアニメーションオフセット ● LEDパネルの点滅・ウェーブ etc… © 2025 Jet Studio Inc.
Feedback Port © 2025 Jet Studio Inc.
Feedbackでフレーム間の変化を参照する作例 #4より © 2025 Jet Studio Inc.
評価結果を保存 評価結果をFeedbackポートに保存しておき、次回評価時に参照する。 (※標準ノードでは不可) ● 移動差分(≒速度)などの時間を跨いだ情報が得られる。 ● 通常は毎フレーム状態を更新するところ、“更新しない”という選択肢がとれる。 © 2025 Jet Studio Inc.
前の位置と今の位置をLerp 前の位置と今の位置をLerpしてシンプルな遅延処理ができる。 Lerp ( 前の位置, 今の位置, t ) © 2025 Jet Studio Inc.
物理シミュレーションも作れる 速度が得られたり前の状態を参照できると、擬似的な物理シミュレーションを自前で作れる。 ● オイラー法 ● ベルレ積分 ● etc… 参考:Bifrostではじめる位置ベース物理シミュ 第1回 ~位置ベース法~ - Qiita © 2025 Jet Studio Inc.
PD制御 https://x.com/akasaki1211/status/1829871188346356065 参考:アニメーションシステムにおける補間処理のためのフィードバック制御手法入門(スライド) © 2025 Jet Studio Inc.
Feedbackポートを値のキャッシュ用途で使う作例 #5より © 2025 Jet Studio Inc.
オフセット行列の動的な更新 通常のペアレントコンストレイントではオフセット行列を初回のみ計算し固定してしまう。 Bifrostの行列演算でコンストレイントを行い、オフセット行列をFeedbackポートに保存することで、適切なタイミングで選択的に固定・ 再計算する仕組みができる。 O = D-1・W(オフセット行列) W = D・O(拘束後のワールド行列) © 2025 Jet Studio Inc.
機械学習 © 2025 Jet Studio Inc.
機械学習でリグを連動させる作例 #6, #7より © 2025 Jet Studio Inc.
“複雑な何か”の近似ソルバを作れる ● デフォーマー ● クロスシミュレーション ● マッスル ● IK etc… © 2025 Jet Studio Inc.
入門にオススメの公式動画シリーズ Machine Learning in Bifrost - YouTube © 2025 Jet Studio Inc.
機械学習ノード一覧(※2.14時点) ● Layer ○ ● layer_linear Activation ○ activation_CELU ○ activation_ELU ○ activation_PReLU ○ activation_RReLU ○ activation_ReLU ○ activation_ReLU6 ○ activation_SELU ○ activation_hard_shrink ○ activation_hard_sigmoid ○ activation_hard_swish ○ activation_hard_tanh 参考:Bifrost ヘルプ | MachineLearning © 2025 Jet Studio Inc. ● ○ activation_leaky_ReLU ○ activation_log_sigmoid ○ activation_mish ○ activation_sigmoid ○ activation_soft_max ○ activation_soft_min ○ activation_soft_plus ○ activation_soft_shrink ○ activation_soft_sign ○ activation_tanh ○ activation_tanh_shrink ○ activation_threshold Utils ○ z_score_normalize ○ z_score_denormalize
Bifrostで扱える機械学習モデル(※2.14時点) Linear(全結合層)のみで構成される機械学習モデル(≒ MLP:Multi-Layer Perceptron)の推論が出来る © 2025 Jet Studio Inc.
Bifrostで扱える機械学習モデル(※2.14時点) Linear(全結合層)のみで構成される機械学習モデル(≒ MLP:Multi-Layer Perceptron)の推論が出来る ↓こういうやつ © 2025 Jet Studio Inc.
回帰モデル 入力値と出力値のペアを学習。入力から出力値(連続値)を予測する。 例)軸が一直線上に並んでいないIK https://x.com/akasaki1211/status/1922348431613252070 © 2025 Jet Studio Inc.
回帰モデル 入力値と出力値のペアを学習。入力から出力値(連続値)を予測する。 例)Clothの動きからコントローラの補正位置を予測 #7 機械学習でリュックの連動リグ〜実践編〜 © 2025 Jet Studio Inc.
分類モデル 入力値とラベルのペアを学習。入力からどのラベルに属するか(確率値)を予測する。 例)手書き数字認識(リグでの応用例は特に思いつかず...) https://x.com/akasaki1211/status/1854561435902517434 © 2025 Jet Studio Inc.
Bifrost × 機械学習 ざっくり手順 1. 2. 3. 訓練データの準備 a. Bifrostで作成 b. スクリプトで作成 c. 既存データを使用 d. 他 モデルの定義~学習(PyTorch) a. スタンドアロンのPythonを使用し、Maya外(Bifrost外)で行う b. パラメータをnpyファイルで保存する 結果の確認(Bifrost) © 2025 Jet Studio Inc. a. 学習時と同じモデルをBifrostで定義 b. パラメータを読み込み推論のみ行う
処理負荷 #7 のネットワーク ● 記事中の構造そのまま → Avg: 750μs ● 読み込んだパラメータをFeedbackで保存し読み込みを初回のみに → Avg: 150μs ● ikHandle RPsolver(※比較用) → Avg: 200μs © 2025 Jet Studio Inc.
ML Deformerとの違い ML Deformer はデフォーマなので対象はメッシュのみ。Bifrostの機械学習は入 出力データやモデル構造を自由に決められるので拡張性は高い。 制御対象がメッシュ? Yes → ML Deformer No → Bifrost を検討 © 2025 Jet Studio Inc.
Rigging Module Framework © 2025 Jet Studio Inc.
リギングモジュールフレームワーク 2.14で追加された新たなリグフレームワーク 1. 骨の配置 2. コントローラ・追加アトリビュート作成 3. ギミック作成 4. アニメーション実行 ここまで全て一連のグラフで出来るイメージ © 2025 Jet Studio Inc.
リギングモジュールフレームワーク 2.14で追加された新たなリグフレームワーク 1. 骨の配置 → user_setup 2. コントローラ・追加アトリビュート作成 → user_setup 3. ギミック作成 → user_animation 4. アニメーション実行 → user_animation ここまで全て一連のグラフで出来るイメージ ⇒『アニメーション後に骨の初期位置を変更する』 など、非破壊のリグ構造がつくれる。 © 2025 Jet Studio Inc.
入門にオススメの公式動画シリーズ Featured - Bifrost Rigging - YouTube © 2025 Jet Studio Inc.
template_module 中身をすべて理解しようとすると大変だが... © 2025 Jet Studio Inc.
template_module 赤いところ だけカスタマイズすればOK(らしい) © 2025 Jet Studio Inc.
Bipedリグサンプル 公式動画シリーズ Part 7 の概要欄にBipedリグの配布データ! © 2025 Jet Studio Inc.
何が嬉しい? ● Maya標準搭載のモジュラーリグシステムは今まで無かったので嬉しい。 ○ ● ※HumanIKはモジュラーではないし人型限定。どちらかというとリターゲットが強い。 非破壊! ○ モジュール&プロシージャルにより、“ちょっと編集しただけで全部入れ直し”が無くなるかも。 ● 軽そう! ● ノーコードでモジュール作れるので、一部の層には刺さりそう。 © 2025 Jet Studio Inc.
まとめ © 2025 Jet Studio Inc.
Bifrost × リグ まとめ ● Maya標準ノードでは出来なかったことが手軽にできる! ● 機械学習関連のノードも追加! (2.12~) ● 新しいリグフレームワーク!『Bifrost Rigging Module Framework』(2.14~) © 2025 Jet Studio Inc.
ご清聴ありがとうございました © 2025 Jet Studio Inc.