boneDynamicsNodeのセットアップ、および編集を行うMELツール。
-
リグへの後付けをサポート
-
アトリビュートや各種接続の一括編集
-
アトリビュートの書き出し/読み込み
-
3種類(カプセル/無限平面/球)のカスタムコライダー
-
コライダーの書き出し/読み込み
Maya 2022.5 / Windows 10
-
nkBdnEditor.mel
をスクリプトディレクトリにコピーバージョン ディレクトリ 英語版 %MAYA_APP_DIR%\<version>\scripts
日本語版 %MAYA_APP_DIR%\<version>\ja_JP\scripts
-
Mayaを再起動
nkBdnEditor;
-
対象のコントロールノードを選択
-
Create Dynamics Unit を実行
-
任意のコライダーを作成
-
Collider List > All からコライダーを選択
-
BoneDynamicsNode List で割り当てたいBDNを選択
-
Append を実行
体や武器等にコライダーをリンクさせたい場合に使用します。
-
Create and constrain... のチェックボックスをオンにする
-
コライダーを拘束させたいノードを順に選択
-
任意のコライダーを作成
-
必要に応じて終端の不要なコライダーを削除
-
適宜BDNに割り当て
-
コライダーは選択ノードの位置に作成されます。
-
Capsule特有の規則
-
Capsule
アトリビュート 説明 Collider Radius A 始点の半径 Collider Radius B 終点の半径 Collider Length 始点から終点までの長さ(負数も可) Collider Offset X軸方向のオフセット Collider Pivot X軸方向の中心 -
Infinite Plane
アトリビュート 説明 Collider Width 幅 Collider Height 高さ 幅、高さ共に機能的な意味はありません。視覚的な分かりやすさのために設けてあります。
-
Sphere
アトリビュート 説明 Collider Radius 半径
-
BoneDynamicsNode List で割り当てたいBDNを選択
-
任意のメッシュオブジェクトを選択
-
Append を実行
Additional Force をノードの任意の軸方向で制御できるように接続します。
-
BoneDynamicsNode List で割り当てたいBDNを選択
-
任意のノードを選択
-
Append を実行
-
一つのBDNには一つのノードしか割り当てられません。
-
複数選択した場合は最後のノードが割り当てられます。
-
-
必要に応じて Force Vector を設定
Offset Transform に使用するノードを接続します。
-
BoneDynamicsNode List で割り当てたいBDNを選択
-
任意のノードを選択
-
Append を実行
-
一つのBDNには一つのノードしか割り当てられません。
-
複数選択した場合は最後のノードが割り当てられます。
-
-
適宜 Offset Matrix Weight の値を調整
-
BoneDynamicsNode List でベイクしたいBDNを選択
-
Bind List でベイクするコントロールノードを選択
-
時間範囲を設定して Bake を実行
- ベイクはRotateアトリビュートに対して行われます。
Rebind を実行するとベイクしたアニメーションを削除してダイナミクスユニットと再接続します。 現在のところコントロールノードがBaseAnimationレイヤにのみ属している前提で正しく機能します。
Caution
いずれの場合も関連ノードがセットのメンバーになっている場合は削除されないので注意してください。
階層ごとの空間ノードを削除してください。
コライダーごとの空間ノードを削除してください。 削除してもコライダーの影響が残ってしまう場合は、削除前までアンドゥして接続を切ってから再度削除してください。
BDNグループごと削除してください。
ボタン | 機能 |
---|---|
![]() |
階層表示の有効化 |
![]() |
選択ノードからリストの項目を選択する |
![]() |
選択項目のノードを表示する |
![]() |
選択項目のノードを非表示にする |
![]() |
選択項目の空間ノードを選択する |
![]() |
選択項目のノードを選択する |
![]() |
選択項目のアトリビュートを初期化する |
![]() |
選択項目の内容をファイルに書き出す |
![]() |
ファイルから選択項目に内容を読み込む |
![]() |
選択項目の内容を内部キャッシュにコピーする |
![]() |
内部キャッシュから選択項目に内容をペーストする |
ダイナミクスユニットの作成では、選択したコントロールノードの階層を探索して親子関係を考慮した階層構造を構築します。
稀に一見単純なFKチェーンなのに個々のコントロールノードが独立した階層になっているリグがあります。 そのような場合でも問題なく構築できますが、あくまで複数のダイナミクスユニットを連結した構造になりますので、後で個別に終端ジョイントのオフセット調整が必要になります。
赤色のFKチェーンは一つの階層、水色のFKチェーンは個別に階層が分かれています。
分岐はこの方法に倣って処理します。 基本的な捉え方はエイムコンストレイントと同じなので説明は省略します。
一つのboneDynamicsNodeには必ず終端ジョイントが必要です。 ここで終端ジョイントを作成する際のオフセット値を定義します。 作成後にチャンネルボックスで修正できますので適当な値で構いません。
リファレンスノードは次のように先頭に ^
記号が付きます。
リファレンスではない編集可能なBDNグループはシーンに一つのみ存在できます。 BDNグループが含まれるシーンに別のBDNグループが含まれるシーンをインポートした場合、最初に見つかったBDNグループに全て統合されます。
Deactivate を実行するとシーン内のリファレンスではない全てのboneDynamicsNodeを同じ数・種類のアトリビュートを持たせた代替ノードに置き換えます。
代替ノードは先頭に #
記号が付きます。
ラフの提出等でファイルのやり取りを行う際に、値や接続を維持したままプラグインレスの状態にできればと考え作成した機能です。 実際のところ、作業用とベイク済みでファイルを分ける等、運用でカバーした方が安全だとは思います。
自分はこんな感じでやっています。
-
ラフ(ブロッキング)
hoge_v001.ma
-
ブラッシュアップ(スプライン/ポリッシュ)
hoge_v002.ma
-
ダイナミクス処理(本ツール)
hoge_v003_bdn.ma
-
ベイク & 関連ノード削除
hoge_v003.ma
-
モーション修正(
hoge_v003.ma
ではなくhoge_v003_bdn.ma
から開始する)hoge_v004_bdn.ma
-
ベイク & 関連ノード削除
hoge_v004.ma
(繰り返し)
-
完了
-
セクションごとのスケール接続
-
終端ジョイントのオフセット等、ダイナミクスユニットの状態の書き出し
-
各種接続状態の書き出し