2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

V-RayをレンダリングエンジンにしてMayaでレンダリングした際に、メモリーが開放されない問題について

Last updated at Posted at 2016-05-17

#現象
V-RayをレンダリングエンジンでDeadlineやBackburnerといったディスパッチを経由して、Mayabatchでレンダリングをした際にメモリーが開放されない。

レンダリングマシン環境

  • Windows7pro 64bit

  • RAM : 32GB

  • CPU :Corei7

  • V-Ray 3.x

  • V-Ray 3.30.01 for Maya2016

  • V-Ray 3.30.01 for Maya2015

  • V-Ray 3.30.01 for Maya2014

  • Maya

    • Maya2016
    • Maya2015 SP6
    • Maya2015 SP4
  • Deadline 7.22.02

#レンダリングプロセスのおさらい
Maya上でのV-Rayのディスパッチャを利用したレンダリングプロセスとしては...
1.Deadline/Backburnerがシーンパスなどを合わせてジョブをサブミットする。
2.レンダーノードのmayabatch.exeがシーン(.ma/mb)ファイルを読み込む。
3.MayaがシーンファイルをV-Rayのネイティブシーンファイル(.vrscene)に変換する。
4.vray.exeに変換したシーンを転送。
5.リファレンスしているファイルを転送。
6.V-Rayレンダリング
7.Mayaにレンダリングしたバッファ(.vrimage)をV-Ray VFBに転送、または任意のフォーマットで指定のフォルダに書き出す。

V-Rayに限らずディスパッチャー使った大体のレンダリングはざっくりとはこの7工程になります。

ここでメモリーを利用する工程としては2,3,5,6,7です。

  • mayabatch.exeがシーン(.ma/mb)ファイルを読み込む
  • ネイティブシーンファイルの変換
  • レンダリングしたバッファ

これらの何処かで問題が起きていると予測されます。

#今までの推測と対応
前々から睨んでいたところとしては「2.mayabatch.exeがシーン(.ma/mb)ファイルを読み込む」「5.リファレンスしているファイルを転送。」じゃないかと思っていました。

Mayaがレンダリング終了した時点でもバックグラウンドで起動し続けたりリファレンスしたファイルメモリーを保持し続けてるのだと思っていなのです。
しかし長期的にマシンを起動し続けていると、どんどんメモリーを消費していくのですが「タスクマネージャー」などではmayabatch.exeは確認できないためマシンごと再起動する他ありませんでした。

#おかしい様子
もう一度「タスクマネージャー」をよく見てみるとずっとvray.exeが起動しているのが確認できました。
V-RayにはDistribution Renderingという分散レンダリングのために、「Register V-Ray render slave as a service」というサービス設定が可能です。
これはマシン起動時にDistribution Rendering用にvray.exeをサーバーモードで起動させるためのものになります。

従来の僕の考えでは、Maya側から呼び出すV-RayとDistribution Rendering用のvray.exeは別物だと思っていました。

しかし、どうやらそうではなくこのDistribution Rendring用のvray.exeがバッチレンダリングで走らせていた際のvrsceneを何らかの原因でキャッチしてしまったようです。

#検証でわかった現象:追記2016/05/17
このDistribution Rendring用のvray.exeは例えばMaya2015でレンダリングした場合、それ以外のMayaバージョンのSpwnerとして起動しているvray.exeでも保持し続けて利用なので、複合的な問題が絡んでいそうです。

#解決方法

そして、このvray.exeはそのままサービスとして起動はされ続けるので、そこでメモリーを消費し続けていたというのが、ことの全貌のようです。

結論としてはこの問題の解決として、レンダリングマシンで「Remove V-Ray render slave as a service」を実行してvray.exeをサービス・プロセスから終了することで解決しました。

この問題に関してDistribution Rendering用のサーバーと通常のバッチレンダリングのサーバーが同一の場合に発生し易い問題になりますので、代理店経由にて現象を報告して修正依頼等を開発元に申請してもらう予定です。

若干モヤモヤしますが、とりあえずDistributionとバッチレンダリングを併用することはないので、当面はこの形で運用しようと思います。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?