【Maya】MELでツールリセット状態を知るのに便利な『setOptionVars』

はじめまして、クリーク・アンド・リバー社 COYOTE CG STUDIO テクニカルチームの好きな武将は斎藤義龍、戦国大好き人間の中林です。

僕自身がMayaのMELから入ってテクニカルアーティストになったので、僕のブログでは主にMELの便利な裏技を紹介します。

設定のリセット

ことの始まりは頼まれたツールで実行すると、僕のMayaでは上手く動くけど、頼んだアーティストのMayaで実行すると処理の結果がずれるとありました。
原因は単純で僕はめったに使わない機能なのでツールの設定はリセット状態だったけど、バリバリ使うアーティストは設定パラメータを変更してました。

単純に考えれば上図の感じでアーティストに「設定のリセット」をしてからツールを使ってもらえば良いのですが、毎回、変えたかも覚えていないツールをリセットするのは非効率でした。

MELでの設定のリセット方法

Mayaのツールでリセットするのはメニューを選ぶだけなので単純ですけど、MELではそもそもどの状態がリセット状態なのか判断が付きません。
そこでペアレントコンストレイントの設定のリセットを例に調べたいと思います。

①ペアレントコンストレイントのMELを探す

設定のリセットをするとスクリプトエディタに
parentConstraintSetup ~

と表示されるので「whatIs parentConstraintSetup」コマンドで辿るとperformParentConstraint.melに行き着きます。

②『setOptionVars』で検索
performParentConstraint.melを適当なテキストツールに読み込んで『setOptionVars』で検索をします。
すると下記の記述でペアレントコンストレイントのパラメータ設定が「optionVar」のみで設定されていることが分かります。
また、これでリセットをしたときのパラメータの状態が分かります。

proc setOptionVars(int $forceFactorySettings)
{
    //  weight
    //
    if ($forceFactorySettings || !optionVar -exists parentConstraintWeight) { optionVar -floatValue parentConstraintWeight 1.0; } // maintain existing offset // if ($forceFactorySettings || !optionVar -exists parConstMaintainOffset) { optionVar -intValue parConstMaintainOffset 1; } // rotation decomposition target to maintain existing rotation offset // if ($forceFactorySettings || !optionVar -exists parConstRotationDecompTarget) { optionVar -intValue parConstRotationDecompTarget 0; } // constraint axes // // ConstraintAxisTranslate if ($forceFactorySettings || !optionVar -exists  parentConstraintAxisTranslateX) { optionVar -intValue parentConstraintAxisTranslateX true; } if ($forceFactorySettings || !optionVar -exists  parentConstraintAxisTranslateY) { optionVar -intValue parentConstraintAxisTranslateY true; } if ($forceFactorySettings || !optionVar -exists  parentConstraintAxisTranslateZ) { optionVar -intValue parentConstraintAxisTranslateZ true; } // ConstraintAxisRotate if ($forceFactorySettings || !optionVar -exists  parentConstraintAxisRotateX) { optionVar -intValue parentConstraintAxisRotateX true; } if ($forceFactorySettings || !optionVar -exists  parentConstraintAxisRotateY) { optionVar -intValue parentConstraintAxisRotateY true; } if ($forceFactorySettings || !optionVar -exists  parentConstraintAxisRotateZ) { optionVar -intValue parentConstraintAxisRotateZ true; } // AnimLayer if ($forceFactorySettings || !optionVar -exists  constraintAnimLayer) { optionVar -stringValue constraintAnimLayer ""; } if ($forceFactorySettings || !optionVar -exists  parentConstraintAnimLayerToOverride) { optionVar -intValue parentConstraintAnimLayerToOverride true; } }

③全ての「optionVar」でリセット
ここから「optionVar」で始まる部分を全てコピペすればペアレントコンストレイントの「設定のリセット」をしたのと同じ状態になります。
設定している「optionVar」は全て分かるので作業に合った設定にすることも可能です。

多くの設定のリセットは『setOptionVars』

ここで重要なのは多くのツールの「設定のリセット」は『setOptionVars』プロシージャでおこなっていることです。
グラフエディタでも、アレンビックのインポートでも、ターゲットシェイプのミラーでも全ての「設定のリセット」で同じです。
そして、リセットをしているということは、そのツールで使っている全パラメータの「optionVar」プロシージャ内で知ることができることです。

『setOptionVars』とテキストエディタのgrep検索などを活用すれば、様々なツールのパラメータ情報を簡単に見つけることもできます。

ツールの設定を調べるには『setOptionVars』は便利な裏技なので試してみてください。

nakabayashi nobukazu

MayaからPhotoshop、Unity、UEなどアーティストが困っていればツール作成にチャレンジしてお助け。
ただ今、Substance Painterに挑戦中です。
やーってやるぜ!!

投稿者記事

  1. 【Photoshop】ShotSave ver2.0で
    アルファチャンネルにコピーしてみた

    2023-07-25

  2. 【TANight】無料配布Maya便利ツール徹底紹介
    資料公開

    2023-05-30

  3. 【Photoshop】別名で保存がワンクリックツール
    ShotSave ver1.0をBoothで頒布

    2023-03-29

  4. 【TA Night】日本ゲームのライティングと
    テクニカルアーティスト:アンケート発表編

    2022-09-28

関連記事

  1. 【Substance Painter】初心者さん向け講座①(モデリング編)

    2020-10-27

  2. 【Maya】外の情報を利用したUIの変形

    2020-02-18

  3. 【Maya】MELのglobal変数とoptionVarでメニューの値を保存

    2019-12-10

  4. 【Substance Painter】初心者さん向け講座②(ベイク編)

    2020-11-16

スキルレーダーチャート

テクニカルアーティスト専用
スキルレーダーチャート
どなたでも無料でご利用いただけます。

ABOUT

TECH COYOTE​

テクニカルアーティストの為のまとめサイトです。​
本サイトでは、ツール開発、業務効率化等について情報発信をしていきます。

COYOTE 3DCG STUDIO

C&R Creative Studios

RECENT TWEET

ページ上部へ戻る