2014年5月10日土曜日

【FireFly】 レンダリングのメモリ不足解消

レンダリングが思いのほか大変だった
この画像、Poser10の標準レンダーFireFlyでレンダリングしたものです。
一見、何の変哲もない美人ロキシーの顔アップ画像ですが、実はここまでたどり着くのに思いのほか苦労してしまいました。
ライティングのテストのつもりで、ライトを6個まで増やし、髪の毛を物理演算で散らした後、FireFlyでレンダリングしようとすると、レンダリングが勝手に途中で終了したり、Poser自身が突然異常終了したりと、不安定な動作を繰り返し、レンダリングができなくなってしまいました。
確かに、髪の毛一本一本に反射&透過する光を全て計算するとなると、扱うデータ量が大きくなるということは想像できます。
実際にどれくらいメモリを使っているのだろうと思い、Windowsのタスクマネージャーで確認してみました。
すると、使用中メモリの値がだいたい5.0GBを超えるあたりでレンダリングが異常終了することがわかりました。
Poser10は32bitアプリケーションなので、扱えるメモリの限界値が約4.0GBなのですね。
せっかく64bit版のWindows8.1に16GBのメモリを搭載したPCを使っているのに、これはあまりにも悲しい。
やっぱり64bit版があるPoser Pro 2014にグレードアップしないといけないのかな……などと思いながら、レンダリングの設定をできるだけメモリを使わないようにいろいろ変えて試していると、
「メモリ不足で異常終了しました。FireFryは分割レンダリングができます。設定を変えて試してください」
というような趣旨のメッセージが表示されました。
ひとりで「ああ、それをやろうとしてるんだけどね」とつぶやきながらも、このメッセージを見て、やっぱり一からマニュアルを読み返してみるかと思い立ち、FireFryの項目に目を通してみました。
ただ、Poserに限らずこのマニュアルという本、話の重複を避けるためだとは思いますが、文章の途中に「〇〇については××の項目を参照」という記述が多い。
あっちへ飛ばされこっちへ飛ばされしているうちに、レンダリングの設定ウィンドウとは違うところで決定的な設定を見つけました。
Poser10付属のマニュアルのP38環境設定の「レンダリングタブ」の項目です。
ここの「別に処理」というオプションに関する記述を読むと、このオプションはデフォルトではOFFになっていると書かれており、詳細は再びP408に飛ばされます。
P408の「別に処理」の項目を読むと、
別に処理:デフォルトでは、PoserアプリケーションとFireFlyレンダリングエンジンは、ひとつのプロセスとしてCPU で処理されます。つまり、アプリケーションとレンダリングエンジンは、ひとつのプロセスに割り当てられた最大メモリ量を分け合うことになります。「別に処理」機能を使うと、レンダリングエンジンがこのメモリを独占的に使えるようになるため、コンピュータに搭載されているメモリ容量によっては、複雑なシーンのレンダリング時間が大幅に短縮されます。さらに、プロセスが個別化されるため、メモリ管理も効率化され、システムが安定するという利点もあります。
おいおい、なんでこんな大事なオプションがデフォルトでOFFなんだよ。
一応、マニュアルには言い訳として、こう書かれています。
その反面、プロセスを分けるための処理が新たに発生し、その分、余計にメモリを消費します。したがって、範囲レンダリングや、小さくて単純なシーンのレンダリングを数多く行う場合には、「別に処理」の恩恵がオーバーヘッドで相殺されてしまうため、お勧めできません。
えーっと……小さくて単純なシーンは、少々効率が悪くても短時間で終わるのではないですか?
しかも、効率が悪くても結果はでるのでしょう?
長時間かかる処理が不安定になるほうが、製品の品質てして決定的にまずいとは思わなかったのでしょうか。長時間待たされたあとで、結果が出ずに異常終了する可能性を残した状態に、わざわざ設定して販売する感覚が理解できません。
普通なら、こういうオプションはデフォルトでON。マニュアルの中に、単純なシーンをもっと高速にレンダリングする方法として記述するべきじゃないでしょうか。
ついでに言うなら、こんなのシーンのデータ量に応じて自動で切り替えてくれるモードがあってもよさそうなものです。

なにはともあれ、速攻でこのオプションをONにしてレンダリングしてみました。OKです。これです。
メモリの使用量を減らそうとして変更していた他のオプションを全部もとに戻しても余裕です。
タスクマネージャーで確認しても、メモリの使用量が8.0GBを超えていますが全く問題なし。
しかも速い。

まぁ、「あれれぇ、はじめにマニュアル読まなかったの? マニュアルってのは使い始める前に読むものなんだよ~」と言われればそれまでで、ろくにマニュアル読まずに勝手に使い始めた自分のせいなのですが、このオプション一つのために、結構な時間を無駄にしてしまいました。

ですので、32bit版Poserをお使いの皆さま、レンダリング動作が不安定になったら、決して「レンダリング設定」タブで数字をゴチャゴチャ調整するのではなく、まず第一に、「環境設定」の「レンダリング」タブを開いて「別に処理」の設定をONにしてください。これ一択です。
マニュアル曰く「複雑なシーンのレンダリング時間が大幅に短縮されます。さらに、メモリ管理も効率化されシステムが安定するという利点もあります」とのことです。(´・ω・`)

0 件のコメント:

コメントを投稿

人気の投稿(過去7日間)