Skip to content

boneDynamicsNodeのセットアップ、および編集を行うMELツール。

License

Notifications You must be signed in to change notification settings

imaoki/nkBdnEditor

Repository files navigation

nkBdnEditor

GitHub release (latest by date)

boneDynamicsNodeのセットアップ、および編集を行うMELツール。

特徴

  • リグへの後付けをサポート

  • アトリビュートや各種接続の一括編集

  • アトリビュートの書き出し/読み込み

  • 3種類(カプセル/無限平面/球)のカスタムコライダー

  • コライダーの書き出し/読み込み

デモ

  • ダイナミクスユニットの作成

    demo-dynamics-unit

  • コライダーの作成と割り当て

    demo-collider

要件

開発環境

Maya 2022.5 / Windows 10

インストール

  1. nkBdnEditor.mel をスクリプトディレクトリにコピー

    バージョン ディレクトリ
    英語版 %MAYA_APP_DIR%\<version>\scripts
    日本語版 %MAYA_APP_DIR%\<version>\ja_JP\scripts
  2. Mayaを再起動

起動方法

nkBdnEditor;

使い方

ダイナミクスユニット

create-dynamics-unit

  1. 対象のコントロールノードを選択

  2. Create Dynamics Unit を実行

コライダー

基本

create-collider-basic

  1. 任意のコライダーを作成

  2. Collider List > All からコライダーを選択

  3. BoneDynamicsNode List で割り当てたいBDNを選択

  4. Append を実行

拘束されたコライダー

体や武器等にコライダーをリンクさせたい場合に使用します。

create-collider-constrain

  1. Create and constrain... のチェックボックスをオンにする

  2. コライダーを拘束させたいノードを順に選択

  3. 任意のコライダーを作成

  4. 必要に応じて終端の不要なコライダーを削除

  5. 適宜BDNに割り当て

配置規則
  • コライダーは選択ノードの位置に作成されます。

  • Capsule特有の規則

    • ノード間の距離に基づいて Collider Length が設定されます。

    • 終端のコライダーが不要な場合は適宜削除してください。

    • +X軸が子ノードを向いていることを前提としています。 軸の向きが異なる場合やメッシュ形状に合わない場合は空間ノードではなくその下のコライダー自体を移動/回転させてください。

      collider-capsule-transform

    • 選択の順序に注意してください。

      正しく作成するには階層順に選択してください。

      collider-placement-rule-capsule1

      選択順に処理されるため変則的に選択するとこのようになります。

      collider-placement-rule-capsule2

    • 分岐がある場合は枝ごとに分けて作成してください。

種類

  • Capsule

    collider-capsule

    アトリビュート 説明
    Collider Radius A 始点の半径
    Collider Radius B 終点の半径
    Collider Length 始点から終点までの長さ(負数も可)
    Collider Offset X軸方向のオフセット
    Collider Pivot X軸方向の中心
  • Infinite Plane

    collider-infinite-plane

    アトリビュート 説明
    Collider Width
    Collider Height 高さ

    幅、高さ共に機能的な意味はありません。視覚的な分かりやすさのために設けてあります。

  • Sphere

    collider-sphere

    アトリビュート 説明
    Collider Radius 半径

メッシュコライダー

  1. BoneDynamicsNode List で割り当てたいBDNを選択

  2. 任意のメッシュオブジェクトを選択

  3. Append を実行

フォース

Additional Force をノードの任意の軸方向で制御できるように接続します。

  1. BoneDynamicsNode List で割り当てたいBDNを選択

  2. 任意のノードを選択

  3. Append を実行

    • 一つのBDNには一つのノードしか割り当てられません。

    • 複数選択した場合は最後のノードが割り当てられます。

  4. 必要に応じて Force Vector を設定

オフセット

Offset Transform に使用するノードを接続します。

  1. BoneDynamicsNode List で割り当てたいBDNを選択

  2. 任意のノードを選択

  3. Append を実行

    • 一つのBDNには一つのノードしか割り当てられません。

    • 複数選択した場合は最後のノードが割り当てられます。

  4. 適宜 Offset Matrix Weight の値を調整

    bdn-attribute-offset-matrix-weight

ベイク

  1. BoneDynamicsNode List でベイクしたいBDNを選択

  2. Bind List でベイクするコントロールノードを選択

  3. 時間範囲を設定して Bake を実行

    • ベイクはRotateアトリビュートに対して行われます。

再接続

Rebind を実行するとベイクしたアニメーションを削除してダイナミクスユニットと再接続します。 現在のところコントロールノードがBaseAnimationレイヤにのみ属している前提で正しく機能します。

関連ノードの削除

Caution

いずれの場合も関連ノードがセットのメンバーになっている場合は削除されないので注意してください。

ダイナミクスユニット

階層ごとの空間ノードを削除してください。

delete-dynamics-unit

コライダー

コライダーごとの空間ノードを削除してください。 削除してもコライダーの影響が残ってしまう場合は、削除前までアンドゥして接続を切ってから再度削除してください。

delete-collider

全ての関連ノード

BDNグループごと削除してください。

delete-all

その他

共通機能

ボタン 機能
Toggle hierarchy mode 階層表示の有効化
Select items 選択ノードからリストの項目を選択する
Show nodes 選択項目のノードを表示する
Hide nodes 選択項目のノードを非表示にする
Select space nodes 選択項目の空間ノードを選択する
Select nodes 選択項目のノードを選択する
Initialize attributes 選択項目のアトリビュートを初期化する
Export attributes 選択項目の内容をファイルに書き出す
Import attributes ファイルから選択項目に内容を読み込む
Copy attributes 選択項目の内容を内部キャッシュにコピーする
Paste attributes 内部キャッシュから選択項目に内容をペーストする

ダイナミクスユニットの階層構造

ダイナミクスユニットの作成では、選択したコントロールノードの階層を探索して親子関係を考慮した階層構造を構築します。

特殊なリグ

稀に一見単純なFKチェーンなのに個々のコントロールノードが独立した階層になっているリグがあります。 そのような場合でも問題なく構築できますが、あくまで複数のダイナミクスユニットを連結した構造になりますので、後で個別に終端ジョイントのオフセット調整が必要になります。

赤色のFKチェーンは一つの階層、水色のFKチェーンは個別に階層が分かれています。

dynamics-unit-hierarchy-construction

ダイナミクスユニット作成オプション

dynamics-unit-create-option

Branch Handling

分岐はこの方法に倣って処理します。 基本的な捉え方はエイムコンストレイントと同じなので説明は省略します。

End Joint

一つのboneDynamicsNodeには必ず終端ジョイントが必要です。 ここで終端ジョイントを作成する際のオフセット値を定義します。 作成後にチャンネルボックスで修正できますので適当な値で構いません。

リファレンスノード

リファレンスノードは次のように先頭に ^ 記号が付きます。

list-label-reference

インポート時の処理

リファレンスではない編集可能なBDNグループはシーンに一つのみ存在できます。 BDNグループが含まれるシーンに別のBDNグループが含まれるシーンをインポートした場合、最初に見つかったBDNグループに全て統合されます。

代替ノード(実験的)

Deactivate を実行するとシーン内のリファレンスではない全てのboneDynamicsNodeを同じ数・種類のアトリビュートを持たせた代替ノードに置き換えます。

代替ノードは先頭に # 記号が付きます。

list-label-alternate

ラフの提出等でファイルのやり取りを行う際に、値や接続を維持したままプラグインレスの状態にできればと考え作成した機能です。 実際のところ、作業用とベイク済みでファイルを分ける等、運用でカバーした方が安全だとは思います。

運用例

自分はこんな感じでやっています。

  1. ラフ(ブロッキング) hoge_v001.ma

  2. ブラッシュアップ(スプライン/ポリッシュ) hoge_v002.ma

  3. ダイナミクス処理(本ツール) hoge_v003_bdn.ma

  4. ベイク & 関連ノード削除 hoge_v003.ma

  5. モーション修正(hoge_v003.maではなくhoge_v003_bdn.maから開始する) hoge_v004_bdn.ma

  6. ベイク & 関連ノード削除 hoge_v004.ma

    (繰り返し)

  7. 完了

非対応

  • セクションごとのスケール接続

  • 終端ジョイントのオフセット等、ダイナミクスユニットの状態の書き出し

  • 各種接続状態の書き出し

About

boneDynamicsNodeのセットアップ、および編集を行うMELツール。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published