myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Maya | mSetProject (自動プロジェクト設定)

シーンを開く度に、プロジェクト設定手動でやり直さないとテクスチャパスが絶対パスになっていしまい、
モデルの表示は真っ白(または真っ黒)になってしまいます。

プロジェクト設定し直し、テクスチャを更新しないといけません。
ま、テクスチャパスを手動で更新すると死にたくなるので、シーンを開きなおす。

という面倒な作業は毎回やらなければなりませぬ。


面倒くさい!!


自動にしてくれよ !


と文句言ってもAutodeskはやってくれないから自分で書いてみました。


mel とかは書いたことがあったんですけど、MayaでPythonを書くのは初めてなので、練習としてPythonでチャレンジしてみました。

そして、おまけに自動インストール/アンインストールも付いています!

インターネットでいくつかプロジェクト設定スクリプトは見つけて試してみましたが、上手くいかない場合も多くて、特徴なフォルダ構造だとエラーが出たりしていた為、自分のバージョンを作ってみました。

このスクリプトは単純に一個上のフォルダーに設定するのではなく、
「workspace.mel」探して設定するという仕組みになっています。
「workspace.mel」がない場合は、開いているファイルの2個上のフォルダをベースでプロジェクト設定画面を出します。


インストール方法:

C:\Users\ユーザー名\Documents\maya\scripts フォルダにコピーして、
Maya内のスクリプトエディター、 またはコマンドラインでは以下のコマンドを実行して下さい。

#Python

import mSetProject; mSetProject.mSetProject_Setup( True )




アンインストール方法:

#Python

import mSetProject; mSetProject.mSetProject_Setup( False )




mSetProject DOWNLOAD LINK



Maya ( 特に 2013以前のバージョン ) はあまりにも不便だから、頑張ってスクリプトを書きまくっています。

Mayaでコードを書くのもなかなか面倒ですけど・・・。
Pythonを使うと少しだけ楽になる。ま、面倒だけど mel ほど悪くはない。

Maya Python API 2.0 を試してみるべきなのかな。
バグ修正
2014/10/16

申し訳ないです!

単純なスペルミスがあった為、workspace.mel がない場合はエラーが出てなにもしません。
スクリプト修正しましたので、もう一度ダウンロードしてみてください。

Topic:CG Design - Genre:Computer/Internet

Comments

マーティンこんにちは。
いつも便利なツールをありがとうさんです。

この mSetProject も今日から使ってみた。 いい感じに見える。 

で、これってシーンをロードした場合だけ効くのかな? シーンをセーブした時には効かない? 例えば、A project からシーンを開いて、それを B project の scenes に別名で保存したりした場合、保存した直後には B project の方に Set Project されて欲しいんだけど、mSetProject はそうはなってないように見えるんだけど、これ認識合ってますか?

  • 2016/03/02(水) 21:31:30 |
  • URL |
  • 潤樹 #-
  • [ Edit ]

Re: No title

そうですね。シーンを開く時のイベントしか入れていないです。

シーンを保存する時のイベントがcmdsにはないです。
OpenMayaのCallbackを使えばなんとかなる気がします・・・。

これもSoftimageっぽくて便利そうなので、手が空いたらやってみます。

  • 2016/03/03(木) 14:27:58 |
  • URL |
  • myara #-
  • [ Edit ]

scriptJob コマンドに SceneSaved というフラグがあるけど、使えないかなあ?

http://download.autodesk.com/global/docs/maya2014/en_us/CommandsPython/scriptJob.html

  • 2016/03/03(木) 14:49:14 |
  • URL |
  • 潤樹 #-
  • [ Edit ]

Re: No title

本当だ!ちょっと古いマニュアルを見てた^^;
2013辺りに追加されたのかな。

それだったら userSetup.py にそのイベントを加えれば上手くいくのかな?

m.scriptJob( event=("SceneSaved", "mSetProject.mSetProject()")

  • 2016/03/03(木) 15:55:44 |
  • URL |
  • myara #-
  • [ Edit ]

Post a comment


Only the blog author may view the comment.

Trackbacks

Trackbacks URL
http://myara.blog.fc2.com/tb.php/194-69750835
Use trackback on this entry.