2020年2月13日木曜日

mayaの起動時にこっそり実行しておきたいスクリプト

リギングのためにモデルファイルを開いたりすると、かなりの確率で設定が初期値のままだったりします。
モデラーなんて五万と居るのでピンキリですが、なんなんでしょう・・・。仕様書作っても、勝手にアウトソーシングされてしまい無視されて納品されますし。




特に気になるのが Working Unit の Time が 24fpsになっている事。
アニメーターのためにリギングしているわけで、モデルファイルをリファレンスしたらフレームレートが合っていないと警告が出るわけです。
まぁ、New Scene オプションで変更すると云う、ちょっと風変わりな設定方法なので分からなくもない。

スライダーのレンジとかカレントフレームがゼロじゃないとか、細かいところも有りますけどね。


次に、同じく Working Unit の Linear が cm でなく m(メートル)になっている事。
マトリクスなんかで単位行列つくる場合、メートルの方が扱い易かったりしますがアニメカーブだと1未満になってしまい回転との差がありすぎてグラフエディタのフォーカスがうまくいかなかったりするので、アニメーションでは cm にして於きたいところ。初期設定では cm ですが、モデリングだからと背景モデラーが単位をメートルのままにしてキャラクターモデルを編集していたりします。
けっこうレアケース。


最後に、地味に嫌なのがファイル拡張子が指定のもの(.ma)と違う事。
初期設定では.mbファイルを出力することになっています。
しかも、なぜか、OSで拡張子表示をしていないため、最後まで.mbファイルになっていることに気が付いていなかったりする始末。


ホントはもう一つ有るのですが、まぁ、uiConfigrationScriptNode が入っていないことは100%無いので諦めムードです。


そんな状況なので、せめて社内だけでも回避したいものです。
バッチからmayaを起動してもらうような環境にして、スクリプトで回避するようにすれば、最低限、身内から罪人を出すことは無くなると思います。

こんな感じ。
proc _defaultWorkingUnits()
/**************************************************************************//**
    @protected
    @brief Default Working Units をチェックする。
 ******************************************************************************/
{
    // checkBox: "Enable default scene"
    if(`optionVar -q "newFileEnabled"`) {
        evalEcho("optionVar -iv \"newFileEnabled\" 0");
        evalEcho("optionVar -sv \"newFileName\" \"\"");
        
    }
    
    // checkBox: "Do not reset working units"
    if(`optionVar -q "keepCurrentWorkingUnits"`) {
        evalEcho("optionVar -iv \"keepCurrentWorkingUnits\" 1");
        
    }
    
    
    //------------------------------------------------------------------------------
    // Linear
    if("cm"!=`optionVar -q "workingUnitLinearDefault"`) {
        evalEcho("optionVar -sv \"workingUnitLinearDefault\" \"cm\"");
        
    }
    
    // Angler
    if("degree"!=`optionVar -q "workingUnitAngularDefault"`) {
        evalEcho("optionVar -sv \"workingUnitAngularDefault\" \"degree\"");
        
    }
    
    // Time
    if("ntscf"!=`optionVar -q "workingUnitTimeDefault"`) {
        evalEcho("optionVar -sv \"workingUnitTimeDefault\" \"ntscf\"");
        
    }
    
}


proc _defaultTimeSliderSettings()
/**************************************************************************//**
    @protected
    @brief New Scene Options - Default Time Settings をチェックする。
 ******************************************************************************/
{
    string $min="playbackMinDefault";
    string $ast="playbackMinRangeDefault";
    if( 0!=`optionVar -q $min`) evalEcho("optionVar -fv \""+$min+"\" 0");
    if( 0!=`optionVar -q $ast`) evalEcho("optionVar -fv \""+$ast+"\" 0");
    
    string $max="playbackMaxDefault";
    string $aet="playbackMaxRangeDefault";
    if( 60!=`optionVar -q $max`) evalEcho("optionVar -fv \""+$max+"\" 60");
    if( 60!=`optionVar -q $aet`) evalEcho("optionVar -fv \""+$aet+"\" 60");
    
}


proc _disableUiConfigrationScriptNode()
/**************************************************************************//**
    @protected
    @brief uiConfigrationScriptNode の作成を無効化する。
 ******************************************************************************/
{
    global int $gUseScenePanelConfig;
    global int $gUseSaveScenePanelConfig;
    
    // 設定の取得
    int $whenOpen=`optionVar -q "useScenePanelConfig"`;
    int $whenSave=`optionVar -q "useSaveScenePanelConfig"`;
    
    // どちらかが true の場合
    if( $whenOpen || $whenSave ) {
        // 設定の無効化
        evalEcho("optionVar -iv \"useScenePanelConfig\" 0");
        evalEcho("optionVar -iv \"useSaveScenePanelConfig\" 0");
        
        // global 変数も修正
        $gUseScenePanelConfig = 0;
        $gUseSaveScenePanelConfig = 0;
        
        // セーブモードの変更
        file -uc false;
        
    }
    
}


proc _defaultFileSaveType()
/**************************************************************************//**
    @protected
    @brief ファイルの保存形式をチェックする。
 ******************************************************************************/
{
    if("mayaAscii"!=`optionVar -q "defaultFileSaveType"`) {
        evalEcho("optionVar -sv \"defaultFileSaveType\" \"mayaAscii\"");
        
    }
    
}


global proc matchPreferences()
/**************************************************************************//**
    @brief main procedure.
 ******************************************************************************/
{
    // Units
    _defaultWorkingUnits();
    
    // Time Slider
    _defaultTimeSliderSettings();
    
    // uiConfig
    _disableUiConfigrationScriptNode();
    
    // file save type
    _defaultFileSaveType();
    
}


こんな感じのを開始時に実行しておけば、そこそこ補正してくれると思います。
playbackOptions の処理は怪しいですが・・・。

mayaのアップグレードやPC移行なんかでも面倒な設定を知らないうちにやってくれて、で、メンテナンスする人が居なくなって、ロストテクノロジーと化すわけです。


0 件のコメント:

コメントを投稿