/SIWeightEditor

Primary LanguagePythonMIT LicenseMIT

SIWeightEditor

SoftimageにあったWeightEditorをリスペクトして作成したMaya用SkinWeight編集プラグインです。

image

インストール

Clone or download > Download ZIP もしくは
release > Source code (zip) からZIPファイルをダウンロードしてください。

Windows

解凍したSiWeightEditorフォルダを C:\Program Files\Autodesk\ApplicationPlugins へコピーしてください。
ディレクトリ構成などは変更せず解凍フォルダごとそのまま設置します。

image

MayaをCドライブ以外にインストールしている場合でも
C:\Program Files\Autodesk\ApplicationPlugins
に置く必要があるようです。

ApplicationPluginsフォルダが存在しない場合は作成してください。

動作確認はMaya2015~2018で行っています。

Mac

解凍したSiWeightEditorフォルダを /Users/Shared/Autodesk/ApplicationAddins へコピーしてください。
ディレクトリ構成などは変更せず解凍フォルダごとそのまま設置します。

image

ApplicationAddinsフォルダが存在しない場合は作成してください。

確認

インストールに成功するとウィンドウ以下に項目が追加されます。

image

主な機能・UI

基本UI表示1

image

・Show → 選択したテーブルセルに表示をフォーカスする。
・Show All → オブジェクトのウェイトを全表示する
・Focus → コンポーネント選択をセル表示に反映する
・Filter → 表示されているインフルエンスのうちウェイト合計が0のものを非表示にする
・Highlite → セル選択された頂点をビューポート上でハイライトする

siweighteditor1

基本UI表示2

image

・鍵マーク → メッシュ選択変更のUIへの反映をロックします。一時的にウェイトエディタ表示の更新を止めたい場合に
・サイクルマーク → 現在の選択をUIに反映します。鍵マークでロックがかかっていても強制的に反映
・Cマーク → 表示のクリア
・⇄マーク → セル上の選択頂点を実際に選択し、UI表示も絞り込みます。
・0-1 → ウェイトを0.0~1.0で表示します(Maya仕様)
・0-100 → ウェイトを0.0~100.0で表示します(SI仕様)

siweighteditor2

不正な頂点ウェイトの絞り込み

image

本エディタでは不正なウェイト値に色付けして表示します。
合計1.0以下 → 赤
合計1.0以上 → オレンジ
指定インフルエンス数以上の使用 → 黄色
上図ボタンから不正頂点ウェイトの絞り込み表示ができます。

siweighteditor3

小数点表示桁数と丸め、インフルエンス数の修正

image

・Enforce Limit → ここで指定した数以上のインフルエンスを使用している頂点を黄色く表示。 Enforceボタンを押すと自動的に指定数にウェイトを修正します。
何も選択せずに実行すると全ての頂点に対して修正を実行します。

・Displayd Digit → 小数点以下の表示桁数を指定

・Round Off → 指定桁数以下の端数を四捨五入します。
何も選択せずに実行すると全ての頂点に対して実行します。

siweighteditor4

ジョイントハイライト、ジョイント選択機能

image

nsrt各ボタン → UIのジョイントカラム右クリックするとジョイント選択、その時に適用するSRTマニピュレータを指定します。
・n → 変更なし
・s → スケール
・r → ローテーション
・t → トランスレーション
・Joint Hilite → UI上で選択されているセルに対応するジョイントをハイライト表示します。

siweighteditor5

主な機能・入力

入力方法4種類

・スピンボックス → ボックス入力、ホイール可能
・スライダーバー → スライダーバーで値を指定
・右クリック入力 → セルを右クリックして小窓に入力、絶対値の場合はクリックしたセルの値を拾います。
・直接入力 → セル選択した状態で数値入力を始めるとそのまま小窓入力できます。

siweighteditor6

入力モード3種類と正規化設定

image

・Abs → 絶対値入力、指定した値がそのまま入ります。
・Add → 加算入力、現在の値に入力値を加算(減算)します。
・Add% → 率加算、現在の値に対して指定比率加算します。例)50に50を指定すると50%の25が加算されて75になります。
・Normalize → 入力後の値を正規化するかどうかの設定、有効にすると自動的に合計1.0(100)に正規化されます。
右クリックで選択セル(何も選択がない場合はすべてのセル)を強制的に正規化します。
・Unlimited → 合計1.0(100)以上の値を許容するかどうか。有効にすると入力上限がなくなります。

siweighteditor7

固定値入力ボタン

よく使う特定の値を決め打ちで入力するボタンを追加しました
左クリック → 絶対値入力
Shift + 左クリック → 加算
Ctrl + 左クリック → 減算

weight_static_value

ウェイトロック機能

image

・Lock Wt → 選択したセルのウェイト値をロックします。
・Unlock Wt → 選択したセルのウェイト値をアンロックします。
・Clear locks → すべてのウェイトロックを解除します。
またカラムをダブルクリックすることで列ごとのロック、アンロックを一括トグルできます。

siweighteditor8

Lock/Unlockボタン右クリックで選択セルのインフルエンスの全頂点ロック機能を追加
選択状態、表示状態によらずメッシュ全体でインフルエンスロックがかけられます。

siweighteditor22

サブツール

ウェイト調整で重宝する機能をサブツール群としてまとめました

image

ウェイトハンマーとの連携

image

Maya標準機能のウェイトハンマーを選択したセル頂点に対して実行します。

siweighteditor11

ウェイト値0.0のセルを変更しないウェイトハンマーとスムース

weight_smooth

標準機能のスムースをUI上から実行できるようになりました。

また元のウェイト値が0.0の箇所は値が変わらないカスタムウィトハンマー、ウェイトスムース機能も追加。
元から使用しているインフルエンスのみでスムージングしたい場合に。
スムースボタン右クリックでスムース設定ウィンドウを開きます。

weight_Hammer_Smooth

ウェイトハンマー、スムースの適用率を変える

元の値とスムース後の値の混ぜ率を変更できる機能をつけました
数値が小さいほどスムース適用率が低くなります
100の場合は通常スムースと同じ挙動

weight_smooth_ratio

スムース設定ウィンドウ

スムースボタンの右クリックから専用ボタンに変更しました

SSボタンで設定ウィンドウを開きます

weight_smooth_option2

Freeze / Freeze_M

image

・Freeze
選択オブジェクトのヒストリを全ベイクしたあとデフォーマクラスタとブレンドシェイプを書き戻します。
デフォーマクラスタ、ブレンドシェイプを保護しつつヒストリをきれいにしたいときに。

・freeze_M
選択オブジェクトのヒストリを全ベイクしたあとスキニング、デフォーマクラスタ、ブレンドシェイプを書き戻します。
スキニング後、頂点追加やラティス変形した場合にかけておくと安心です。

siweighteditor14

Simple Weight Copy / Paste

image

・Simple Weight Copy
選択オブジェクトのウェイトデータをオブジェクトごとに一時ファイルとして書き出します。
前回出力分は上書きされます。

・Simple Weight Paste (Name Index)
コピーしたウェイトをオブジェクト名と頂点番号で書き戻します。
バインド情報も書き戻すので事前バインド不要です。

・Simple Weight Paste (Name Position)※Maya2016以降
同じくオブジェクト名と頂点座標で書き戻します。
頂点番号が変わった場合はこちらをご利用ください。

siweighteditor15

ウェイトコピー元が1つだけなら名前が違っていてもペーストできるように拡張しました。
複製メッシュにインデックスペーストしたり、近い形状のものにポジションペーストしたりと使い方が広がります。

siweighteditor20

Transfer Weight Multiple

SIのGatorライクなウェイト転写機能です。

image

・Transfer Weight / Copy
転送元のメッシュ情報をコピーします。
複数メッシュ指定可能です。

・Transfer Weight / Paste
転送元のメッシュからウェイト情報を転写してきます。
複数メッシュとコンポーネント単位の指定可能です。

siweighteditor13

Move Influence Weight

インフルエンスに割り振られているウェイトを他のインフルエンスに分配する機能です。

image

使わなくなったジョイントのウェイトを他のジョイントに分配したり、追加したジョイントに振り分けたりなど。

複数インフルエンスから複数インフルエンスの移動にも対応しています。

weight3

Vertex Weight Copy / Paste

weight_vtx_cp

頂点単位でのウェイト移植機能です。

標準機能と違い、複数の頂点コピー→複数の頂点ペーストに対応しています。
ペースト頂点がコピー頂点より多い場合は最初の値に戻って繰り返しペーストされます。
ウェイトロック機能とは併用不可です。

またペースト先にインフルエンスが設定されていない場合は自動追加されます。

weight_vtx_copy

Excel like Cell Copy / Paste

weight_cell_cp

エクセルライクな範囲セルのコピー/ペースト機能です。

指定範囲をコピーして、インフルエンスの違いにかかわらず範囲ペーストができます。
矩形だけでなく飛び地選択でのコピーペーストも可能。
ペースト範囲がコピー範囲より大きい場合は繰り返しペーストされます。 ウェイトロックとの併用も可能です。

weight_cell_copy

こちらの機能は右クリックメニューからも呼び出し可能です。
セルの範囲内では ctrl or shift + 右クリックで呼び出しです。(右クリック入力とかぶるため)
セルの範囲外は直接右クリックでOK。

weight_cell_copy_menu

Symmetry機能

よく使うミラーリング系ツール

image

・Weight_Symmetrize
選択した頂点ウェイトを反転命名規則に従ってジョイントラベルを設定しミラーリングします。
対象メッシュがバインドされていなくても自動バインドするので事前設定不要です。
メッシュ単位、コンポーネント単位どちらでも実行できます。
右クリックで命名規則ウィンドウが開きます。

選択メッシュが1つの時→ +X ⇄ -X どちらに転送するかウィンドウが開きます
選択メッシュが複数の時→ 最初に選択したメッシュのウェイト情報を残りに反転転写します。
選択コンポーネントの時→ 反対のグローバル座標のコンポーネントから反転してきます。

・Auto_Symmetry
メッシュ反転からウェイトミラーまで自動。
こちらもジョイントラベリング、バインド、ミラーまで一括です。
右クリックで命名規則ウィンドウが開きます。

スキンメッシュだけでなく、ジョイントやロケータ等なんでも反転できます。

・Mesh Marge with Skinning
スキニングを保ったままメッシュを結合します。
機能でもできなくないですが、スキンクラスタを共有するのでノンデフォーマヒストリ削除後のアンドゥなどが非常に不安定なので独自機能として実装しています。
Auto_Symmetry後に簡単に左右結合ができたりします。

siweighteditor16

・ジョイント左右命名規則エディタの使い方
右クリックで設定ウィンドウを開きラベリングルールを設定します。
左右対になるようにPrefix, Suffix, middle_nameを設定します。
正規表現検索するのでワイルドカードは . (ピリオド)で指定できます。

例)_L01 ⇄ _R01 を対にしたい場合はそれぞれ
_L01 → _L..
_R01 → _R..
と記入します。

image

Toggle Mute Skinning / Go to Bind Pose

image

・Toggle Mute Skinning 選択したメッシュのスキニングのミュートを一括トグル。 何も選択せずに実行でシーン内のメッシュに全適用。

・Go to Bind Pose 標準機能のバインドポーズに戻るを実行します。

siweighteditor18

Go Maya Export / Import

Mayaシーン間でのオブジェクトの受け渡し補助ツールです。
毎回場所を指定して出力したり読み込むのがめんどくさいので。 スキンメッシュはデタッチしないとジョイント階層がついてくるのでFreezeとSimple Weight Copy/Pasteを併用すると便利です。

image

・Go Maya Export
所定の場所に選択オブジェクトを書き出します。 前回出力分は上書きされます。

・Go Maya Import
GoMayaExportで出力したオブジェクトを読み込みます。

siweighteditor19

Add Influence / Remove Influence

UI上の選択からスキンに対してインフルエンスの追加削除ができます。
ジョイントとメッシュを直接選択した状態でも実行可能です。

weight1

Remove Unused Influences

weight_rem_unuse_inf

使用していないインフルエンスの削除。標準機能の呼び出しです。

weight_remove_unuse_inf

オプション機能

0セルの明るさ指定、インフルエンスサーチ

image

・☀マーク → 値がゼロのカラムの文字色の明るさを指定します。
・Search → インフルエンスを絞り込んだり、非表示になっているものを一時的に表示したりします。
・入力文字で検索、スペースで&検索、大文字小文字区別なし
・Refine → 絞り込み検索、現在表示中のインフルエンスから探します。
・Add → 加算検索、現在非表示のインフルエンスから検索にかかったものを加えて表示します。Filterでゼロカラム非表示状態で使用するととても便利です。オヌヌメ。
・i マーク → 検索をインタラクティブに行うかどうか。有効にすると文字入力に合わせてリアルタイム検索します。

siweighteditor9

「最大インフルエンスの保持」アトリビュートの保持オプション

97ccfc1b80774e31c0b06c305cf0a4df471b9d444243764eb47a14e1d91074ce

SIWE内のハンマー機能を使用した際、処理対象のSkinClusterの最大インフルエンス数の保持アトリビュートがFalseでも強制的にTrueになってしまうため、ハンマー処理前のフラグの状態を処理後に保持するオプション。

ウェイト調整中は制限をかけず、最後に最大インフルエンス数に丸める派の人向けの機能。