bat,maya,pythonどうもこんにちは、TD室の石田です。今回の内容はMayaで複数のシーンファイルに対して一括処理を行う方法について書いてみました。シーンファイルが大量にある状況で全てのシーンファイルに対してアトリビュートを一箇所変更したい。いらないノードを消したい。レンダリングの設定をしたい。これを一つ一つ手動でやるには時間も掛かるし苦行ですよね。弊社ではこういう自動処理を行うツールはいくつか存在しますが、今回はツールというほどのものではなく簡易的なものを作ってみました。今回の内容ではPythonとbatファイルで構成されています。サンプルもあるのであとでダウンロードしてみてください。※図ではrunFilesフォルダ2、create.batが複数シーンファイルのパスをcreateBat.pyに渡してrun.batを作成3、run.batを実行すれば自動処理が動き出す。※ついでにログも出すようにしています。1、のDrag&Dropした時点で自動処理が走ってもスムーズでいい気がしますがrun.batを作っておけば中身の確認と処理が編集出来るので今回はこの形で作ってみました。create.batでrun.batを作るここからメインとなるDrag&Drop先のbatファイルとpyファイルの解説をしていきます。create.batからパスを受け取りrun.batを作る。PYPATH=%~d0%~p0%PYTHONFILE%この記述はcreate.batと同じ階層のパスを取得してPYTHONFILEとくっ付けています。create.batがC:Users\Documents\create.batにある場合PYPATHはC:Users\Documents\createBat.pyになります。%1mayapy.exeがなんなのかって感じだと思いますがmayaが用意しているpython.exeだと思ってください。python.exeでも大丈夫です。python.exeを用意するのが面倒なときはmayapyを使いましょう。%1はDrag&Dropしたフォルダのパスが入ります。この文を直訳してみます。C:\Users\Documents\createBat.pyとします。C:\Users\Documents\runFilesrunFilesをcreateBat.py渡して実行、と言うことになります。main()createBat.py解説run.batを作成する処理です。sys.argv[1]がDrag&Dropで渡されたパスが入ります。ちなみに現状の設定だとmaya.exeで処理が走るようになっているのでUIがいらない処理であればmayabatch.exeにしてくださいあとはほとんどがディレクトリ操作なので省略します。runCmd;runCmd.run('C:/project/autoBat/runFiles/sphere.mb')")"runBat.py解説createBat.pyで作られたbatファイルです。このbatファイルを実行すれば自動処理が動き出します。ここでやっていることは順番にmaya.exeを立ち上げてscriptを実行。途中で終了したい場合はコマンドプロンプトを閉じてから、mayaを閉じてください。runCmd;runCmd.run('C:/project/autoBat/runFiles/sphere.mb')")ここの部分はPYTHONPATHに通っているパスのpythonが走ります。pythonにしていますがもちろんmelでも大丈夫です。なにか適当に自動処理を書いてください。#maya.exeで処理していた場合にmayaを終了させる。cmds;cmds.quit(f=1)')こんな感じで書いています。別名保存したいなどいろいろあるかと思いますが挑戦してみてください。今回はMayaを例にしましたが中身を書き替えればMayaでなくても関係なく動きます。これで時間がかかる単純処理は全部マシンに任せて時間を有効活用できますね!それでは、またソースコードはこちら。公開している全ての手法・コードの有用性、安全性について、当方は一切の保証を与えるものではありません。これらのコードを使用したことによって引き起こる直接的、間接的な損害に対し、当方は一切責任を負うものではありません。(※必須):Website:Comment:コメントは承認制ですので、即時に反映されません。上に表示された文字を入力してください。月別アーカイブ2018年5月2017年1月2月3月4月6月10月11月2016年1月2月3月4月5月6月7月8月10月11月12月2015年1月2月3月4月5月6月7月8月9月10月11月12月2014年1月2月3月4月5月6月7月8月9月10月11月12月2013年1月2月3月4月5月6月7月8月9月10月11月12月2012年2月3月4月5月6月7月8月9月10月11月12月2011年1月2月3月4月5月6月7月8月9月10月11月12月2010年12月Footer。