2017年2月20日月曜日

mentalray削除

晴れて余所者としての公認をもらったmentalrayですが、まだまだ2017の普及率は低いらしく、知ってか知らずかmaya2016出身でmentalrayのロードを要求してくるファイルが多い感じです。

無料で付いていた時からmentalrayインストールしない派なので、Script Editorがwarningで汚くなるのがもうね、

mentalray nodeらはクソじゃ
撫で切りぞ
根切りぞ
mentalray nodeは、みなコろシじゃ


そんな感じで、mentalrayをシーンから排除するスクリプトを考えます。
というか、シーンを読み込んだ時のインストールされていない有償プラグインなんかの「不明なノード」のエラーを消すスクリプトですね。

一応、maya2014の時にも作ろうと挑戦したのですが、 そもそも不明なプラグインなので削除するべきノードタイプが拾えないという事で断念したのでした。
しかし、maya2016からなのか、そういうノードタイプを取得するためのコマンドが追加されたようなのでリベンジです。


使用するコマンドは、
unknownPlugin
unknownNode
もう既に、これで勝つる!感がハンパ無いですね。


今回はmentalrayを対象にしているので、Mayatomrを調べます。

{
    string $mr="Mayatomr";
    
    string $types[]=`unknownPlugin -q -nt $mr`;
    
    string $unknowns[]=`ls -typ "unknown"`;
    for($unknown in $unknowns)
    {
        if(`objExists $unknown`)
        {
            string $type=`unknownNode -q -rcn $unknown`;
            if(`stringArrayCount $type $types`) delete $unknown;
            
        }
        
    }
    
    unknownPlugin -r $mr;
    
}


6行目の ls では、関係ない unknown ノードもリスト化してしまうので、7行目から Mayatomr のノードである事を確認します。
9行目でノードの存在確認しているのは、delete すると関連しているDGノードも削除される場合があるので、保険として。
オーバーキルしないのが武士道。
※単に存在しないノードを消そうとするとerrorで止まるから。

最後、18行目でwarningの元凶、Mayatomr の requires を除去します。
unknownPlugin -r を実行すると requires を除去できるので、stereoCameraとか寝ボケて作ったようなのも気軽に削除できます。

ノードにロックをかけているTurtleみたいな変態プラグインも有るので、lockNode を組み込むのも良いかもしれません。
ためしにlockNodeを追加してから、Turtleを削除対象にしてスクリプトは知らせてみたけれど、上手くいったりいかなかったり不安定。
LTに由来するのか、処理の仕方がマズいのか・・・?

まだまだ改善の必要ありです。

----
これを改善したスクリプトはコチラです。


0 件のコメント:

コメントを投稿