[Maya] Hypershadeが重すぎるので対策を調べてみた

Hypershade重いっすよね。クソ重いっすよね。

年々重くなるこのクソHypershadeですが、皆様如何共存されてますか。
僕は極力開かない事で共存しています(^^#)ビキビキ
それを共存というかどうかは僕には知る由もありませんが。

で、あまりにもイライラしたので対策は無いものかとあれこれ調べてみました。


まず簡単なのは、サムネイルのアップデートを止めること。
あれって常にレンダリングしてプレビュー用のサムネイル作ってるんですよね。
そんなもの重くて当然。

アップデートを止めるには、renderThumbnailUpdateコマンドを使用します。

renderThumbnailUpdate false;

これでサムネイルの更新は止まります。簡単ですね。
元に戻したいときはfalseをtrueに変えてこうするだけです。

renderThumbnailUpdate true;

また、以下のコマンドをshelfに登録すれば、1個でトグルスイッチとして使えます。

renderThumbnailUpdate (!`renderThumbnailUpdate -q`);

renderThumbnailUpdate -qで現在の情報を取って、! で反転です。
ONならOFFに、OFFならONに、です。

今の会社はこれで対処してるみたいです。
見たい時にはサクっと見れますし、設定ファイルの変更とかいらないので一番手軽だと思われます。
 

しかし!
まだ重い!プレビューなんかどうせあてになんねーんだから完全にOFFで良い!!という場合、
デフォルトのMELをいじる必要があります。
慣れてない人にはあまりオススメできませんし、自己責任でお願いします。
編集に際して、オリジナルのファイルは絶対に別名で保存するなりして、保管しておいてください。
これは各種設定ファイルをいじる際の鉄則です。

で、手順ですが、Mayaのインストールディレクトリに行って、scripts/others/mentalrayCustomNodeClass.melを開きます。
C:\Program Files\Autodesk\Maya2010\scripts\others\mentalrayCustomNodeClass.mel とかそういう感じのパスにあると思われます。

で、その中から、swatch/mentalRaySwatchGenという文字列を完全に削除、またはコメントアウトします。

編集前
if ($nodeType == "mia_material" ||
    $nodeType == "mia_material_x" ||
    $nodeType == "mia_material_x_passes")
    return "rendernode/mentalray/material:connection/mentalray/shadow:/connection/mentalray/photon:shader/surface:swatch/mentalRaySwatchGen";

編集後
if ($nodeType == "mia_material" ||
    $nodeType == "mia_material_x" ||
    $nodeType == "mia_material_x_passes")
    return "rendernode/mentalray/material:connection/mentalray/shadow:/connection/mentalray/photon:shader/surface";

こんな具合でやったります。
一番重いのはmia系とかsss系だと思うので、上の2個だけとかでもいいかもしれませんが、まぁ念のため全部行っちゃっていいんじゃないでしょうか。
ええいここまで来て女々しいことを言うな!全部消せ!! の精神です・・・!!

で、それを上書き保存します。してやります。

もしくは自分のスクリプトディレクトリに入れてやってもいいかもしれませんが、ちゃんと更新されているかの確認は各自行ってください。

会社だと、独自のスクリプトなどで、自分のの更に後に実行される可能性があったりしますので、お気をつけください。
まさにさっき自分の環境のをOFFにしようと思ったら別のところから上書きされてげんなりした、という下りを持っているので、みなさまもその辺要確認のこと、ですよ。

swatch/mentalRaySwatchGenてのは、swatchファイルをレンダリングして更新するための宣言というか、まぁそういう感じのものです。
Mayatomr.mll内で、この属性を持つノードだったらレンダリーン!といった判定をしているようです。

 
こちらの方法は、英語のページにはいくつかやり方載ってるようでしたので、興味ある方は是非探してみてください。

 
と、いうわけで、Hypershadeのあまりの重さに辟易したならば是非チャレンジしてみてください。
それでも起動はやはり遅いので、それも嫌なら是非自前のシェーダのリスト化UIのMELなどを作ってみてはいかがでしょうか。
PyQtで自前Hypershadeっていう手もありますよ!!

野心あふれる方は是非チャンレジを!!
そしてそれを僕に下さい、是非下さいm(_ _)m

「[Maya] Hypershadeが重すぎるので対策を調べてみた」への6件のフィードバック

  1. 重いです!! mentalray系が特に!!憎い位重いです
    ><

    参考になりました!早速使ってみようと思います
    melもしっかり覚えないとですね

  2. >takehiroさん
    どもです。
    重いですよねー、Hypershade、、、
    プレビューとかどうせその通り絵出る訳無いんだから何も参考にならないし、、
    とにかく軽くしてくれ、って感じですよね、、
    Autodesk頑張れ、、、

    Maya使うならMELは必須!今ならPythonもオススメです。
    ですがMayaのPythonはMEL知らないと結構しんどいみたいなトンデモ仕様なので、まぁMELもやっといて損はないのかもしれません。
    ExpressionとかはMELの書式とほぼ一緒ですし。

  3. Melでそんなことが出来るとは知らなかったので大変参考になりました。
    今の会社はMAC版Maya2010なんですが、とにかく落ちまくるので、少しでも軽くできるとうれしいので月曜日に早速試してみようと思います。
    あ、あと「PythonはMELを知ってて損にはならない」というのを読んで勇気づけられましたw
    MELしっかり勉強しようと思います

  4. >melonさん
    僕もあまりにも重かったので、見聞きした情報を元にあれこれ調べて知りました:P
    やっぱり誰に聞いても重いのはmental rayのシェーダ、特にmiaが怪しいようです。
    一部情報では固まる頻度が他のシェーダよりも多いとか・・・?怪しすぎます。
    少しでも日々の制作の助けになったらうれしいです:)

    あと現状のMayaPythonは、ほとんどPythonらしい機能を使っておらず、
    maya.cmdsというモジュールを介してMELの関数にアクセスしているだけのようなものです。
    もちろんPythonなので、オブジェクト化してやったり上手くラッピングして便利に使うことも出来るのですが、手間もかかるし知識も必要!なので面倒っちゃ面倒なんです。
    2011ではpymelが標準で付属されたり、MELっぽさを排除したスクリプティングも可能ではあるのですが、それでもやはりExpressionは99%MELだったりしますし、Autodeskがテコ入れしない限りしばらくはMELって必要なんですよね。

    でもまぁ今後はPython使える方向で流れていく気もするので、ある程度MELでやりたいことは出来るようになったなーと感じたらPythonに移行していくのが正解なのかもしれませんね。

    頑張ってください!!
    おいらもあれこれ頑張らねばと思っています・・・!!

  5. こんにちは、その後会社で使ってみて、非常に助かっています。
    特にいま、テクスチャーとライティングをやっているのでハイパーシェードは頻繁に開け閉めするので重宝しています。
    MayaPythonのさらなる情報ありがとうございます。
    今のところ、他のソフトとの橋渡し的なもの、もしくは他のソフトでPythonを使っている人などがMayaにたちまち何かを実装するには役立ちそうですね。
    ヘルプを見たときにPythonとMelのコマンドが非常に似通っているのは、maya.cmdsを介しているから、ということですかね。

    ちなみにシーグラフでディズニーの人にデモリールをみてもらって、FXアーティストを目指している旨伝えたら、スクリプトは出来る?と聞かれたました。
    「Melなら少し」と答えたら、Pythonもやったほうが良いと言われました。
    FXアーティストというとディズニーではテクニカルな面も求められ、Pythonは適用できる範囲が広いからだそうです。
    でも、Mayaの場合、おっしゃる通りMelをマスターすれば移行は簡単そうですね。
    がんばります!!

  6. >melonさん
    お!お役に立てたようで、良かったです。
     
    Pythonに関してはそのとおりです。
    あれが単純なMELのラッパーになっているため、そのまま書くとMELとほぼ変わらない、って感じになってしまっています。
    あれをもうちょいしっかりPythonぽく実装してくれたらいいのに、とは思いますね、、、
    そこでのpymelなんでしょうが、Autodeskさん手抜きすぎ、、まぁむやみに再発明されても困るんで良いんですけども・・・。
     
    Disneyのお話、FXでもPythonですか。なるほど、興味深い。。
     
    僕もがんばります(・・)ノシ

コメントを残す

メールアドレスが公開されることはありません。