2017年3月16日木曜日

uiConfigrationScriptNodeを無効化する

uiConfigrationScriptNode を作らせないようなスクリプトとか作らない方法とかを記事にしてみたりもしましたが、九条バリアは余裕で突破されてしまいます。FAQです。


なので最近はもっぱら積極的防衛に切りかえています。

まず、uiConfigrationScriptNode というのは当たり前ですがScriptNodeの一種です。
で、File Open ダイアログの右側を見てみると General Options に、こんなチェックボックスがあります。

初期状態ではココにチェックが入っていて、スクリプトノードを実行するようになっているのです。その為 uiConfigrationScriptNodeに記述されているスクリプトが実行されてしまう訳なのですね。チェックを外せば uiConfigrationScriptNode に何が書かれていようとも実行されないと云う案配。

平和な日常を獲得できたかに思えますが、ひとつ問題がっ!

mayaが常時保存しているスクリプトノードに sceneConfigrationScriptNode というものが存在します。これが何かというと、タイムスライダーのレンジを復旧させるコマンドが記述されているスクリプトノードなのです。
Execute script nodesを無効にするとタイムスライダーのレンジが復旧されなくなってしまうのですわ。アニメータとして、これはかなりの痛手です。

 uiConfigrationScriptNode は実行させたくないけど sceneConfigurationScriptNode は動作して欲しいアンビバレントな心境。

ここは、sceneConfigurationScriptNode を復帰させるスクリプトで回避しようと思います。

global proc tryRecoverSceneConfiguration()
{
    string $scNode[]=`ls -typ "script" "*sceneConfigurationScriptNode*"`;
    if( 1==`size $scNode` )
    {
        string $cmd=`scriptNode -q -bs $scNode[0]`;
        if(""!=$cmd) evalEcho( $cmd );
        
    }
    
}

referenceしていた場合、sceneConfigurationScriptNodeが複数リストされてしまうので、カレントシーンのスクリプトノードだけを拾うようにするのがミソ。

単体実行でも良いですが、maya 起動時に
scriptJob -event "SceneOpened" tryRecoverSceneConfiguration;

とすることで使い勝手が良くなります。

0 件のコメント:

コメントを投稿