0

コマンドラインレンダリング中に基本的に自分の出力を印刷する方法はありますか?

Maya がデフォルトで吐き出す他のすべての出力を必要としない/したくないとしましょう。詳細レベルを変更できることはわかっていますが、出力したい非常に具体的なものがありますが、わかりません。私は現在、詳細出力をファイルにレンダリングしているので、レンダリングが現在行われているフレームを端末 (MAC を使用しています) に出力したいと考えていました。

これは単純なことかもしれませんが、私が試したのは次のとおりです。

Render -preFrame "print `currentTime -q`;" -s 1 -e 20 -rd /render/directory/ maya_file.mb 

明らかに、-preFrameこれはメルコマンドを取ることができるドキュメントによると、文字列を期待していますが、明らかにこれは特定のコマンドに限定されています.currentTimeコマンドはmayaのタイムラインから情報を引き出していると仮定しています。 ...上記のコマンドを実行する-bash: currentTime: command not foundと、すぐにこれが吐き出されます。レンダリングが失敗した/開始されなかった直後。

理想的には、各フレームを開始するときに次を印刷したいと思います。

"Started rendering frame XXXX at TIME GOES HERE"、そうすれば、ターミナルをすばやく見て、レンダラーが失敗したか、動かなくなったか、どこにいて、いつ開始したかを確認できます。

私の質問は、currentTime が Maya 内から使用される mel コマンドであることがわかります。この情報を印刷できる別の方法はありますか?

乾杯、シャノン

4

2 に答える 2

1

この答えを何時間も探した結果、Maya をインタラクティブ シェルとして起動できることがわかりました。こうすることで、スクリプトを開いたときにそのソースを取得し、その時点で Maya を開いているかのように、必要なものをメモリに実行することができました。

/Applications/Autodesk/maya2014/Maya.app/Contents/MacOS/maya -prompt -script "/Volumes/raid/farm_script/setupRender.mel"

ファイルではsetupRender.mel、レンダリングなどのオプションを含む変数を割り当てることができました。これを行う際に、フレーム番号のグローバル変数を作成し、preFrame コールバック中にそれをインクリメントすることもできました。

int $startFrame                 = 100;
int $endFrame                   = 1110;
global int $frameCount         = 0;
string $preRenderStatistics    = "'global int $frameCount; $frameCount = " + $startFrame + ";'";
string $preFrameStatistics     = "'print(\"Rendering frame: \" + $frameCount++)'";
string $additionalFlags         = "";
string $sceneFilePath           = "'/Volumes/path/to/file/intro_video_001.mb'";

system("Render -preRender " + $preRenderStatistics + " -preFrame " + $preFrameStatistics + " -s " + $startFrame + " -e " + $endFrame + " -x " + $additionalFlags + " " + $sceneFilePath);

これは私が現在持っているものの非常に単純化されたバージョンですが、うまくいけば、他の人がそれに出くわした場合に役立つでしょう.

于 2014-01-15T21:33:32.670 に答える
0

Take a look at the pre render layer MEL and/or pre render frame MEL section of the Render Settings.

It expects MEL, so you'll either need to write it in MEL or wrap your python in MEL. For such a simple use, I'd say just write it in MEL:

print `currentTime -q`

enter image description here

于 2014-01-15T04:37:15.777 に答える