FC2ブログ

Reality その8:Memory Conservativeオプションの効果

Category : Reality
DAZ Studio(以下DS)用のLux Renderエクスポータ『Reality』バージョン1.2の新オプションとして、「Memory conservative mode(メモリ節約モード)」というのがあります。これは、使用メモリ制限の厳しい32bitWindowsOSなどのために、LuxRenderでのメモリ使用量を20%以上減らすことができるものです。
今回は、実際にそれが効果的に働くのか、どんなシーンがメモリに優しいのかを調べてみました。

計画停電の実施など節電意識の高まっている時勢ではありますが、電気は貯められない(参考:電気なるほどノート|東北電力)ということは、地域の電力消費量が一定以上になる時間にいかに節電するかという問題ですよね。なので節電意識は持ちつつ、長時間のレンダリングは日中や夕食時のピーク時を避けて行っていきたいと思います。日常を取り戻すのも大切なことですし、テレビのニュースばかり見ていると不安になりますからね。

Reality8b SS

■メモリ節約モードの使い方

使い方はごく簡単です。
RealityプラグインのOutputタブで、Options欄の「Memory conservative」にチェックを入れるだけです。
Reality8 Memory Conservativeオプション


■背景プロップでの検証

実際に通常モードとメモリ節約モードでレンダリング時のメモリ使用量を比較してみました。
メモリ使用量の観測にはタスクマネージャを使い、プロセスタブでのDAZStudio.exeおよびluxrender.exeのメモリを記録しました。また、シーン構築毎にDSを起動し直しています。

まずは背景プロップを使ったシーンとして、『Urban Sprawl 2 The Big City』を用意しました。
Reality8 Urban Sprawl 2 preview

この製品は市街地の隣接した4ブロックがモデリングされているもので、オブジェクトとテクスチャの使用量がかなり多く、また、それぞれのブロックを個別に読み込むことができるので、今回の調査には最適だと判断したものです。カメラの位置や視野は4つとも同じで、初期位置からNE方向に向けたものです。

それぞれの項目の測定方法は以下の通りです。
 総マテリアル数: Relaityの表示で確認。
 総テクスチャ数: LuxRenderのLogで確認。
 DSメモリ使用量(シーン読み込み時): タスクマネージャのDAZStudio.exeプロセス
 DSメモリ使用量(Reality起動時): シーン読み込み時と同じ
 LuxRenderメモリ使用量(通常モード): 5S/pレンダリング時のタスクマネージャのluxrender.exeプロセス
 LuxRenderメモリ使用量(メモリ節約モード): 通常モードと同じ
 LuxRenderメモリ節約量: LuxRenderメモリ使用量(通常モード) - LuxRenderメモリ使用量(メモリ節約モード)
 節約率: ( LuxRenderメモリ節約量 / LuxRenderメモリ使用量(通常モード)) * 100

※LuxRenderに関する各値は変動して見極めにくいので、だいたいの値になっております。

(A) 1ブロック(NE)
総マテリアル数: 379
総テクスチャ数: 153
DSメモリ使用量(シーン読み込み時): 175,176K
DSメモリ使用量(Reality起動時): 769,804K
LuxRenderメモリ使用量(通常モード): 766,000K
LuxRenderメモリ使用量(メモリ節約モード): 619,000K
LuxRenderメモリ節約量: 147,000K
節約率: 19%


(B) 2ブロック(NE+NW)
総マテリアル数: 774
総テクスチャ数: 197
DSメモリ使用量(シーン読み込み時): 247,252K
DSメモリ使用量(Reality起動時): 1,433,316K
LuxRenderメモリ使用量(通常モード): 1,163,000K
LuxRenderメモリ使用量(メモリ節約モード): 802,000K
LuxRenderメモリ節約量: 361,000K
節約率: 31%


(C) 3ブロック(NE+NW+SE)
総マテリアル数: 1095
総テクスチャ数: 200
DSメモリ使用量(シーン読み込み時): 304,052K
DSメモリ使用量(Reality起動時): 2,130,972K
LuxRenderメモリ使用量(通常モード): 1,222,000K
LuxRenderメモリ使用量(メモリ節約モード): 902,000K
LuxRenderメモリ節約量: 320,000K
節約率: 26%


(D) 4ブロック(NE+NW+SE+SW)
総マテリアル数: 1284
総テクスチャ数: 202
DSメモリ使用量(シーン読み込み時): 337,356K
DSメモリ使用量(Reality起動時): 2,393,260K
LuxRenderメモリ使用量(通常モード): 1,263,000K
LuxRenderメモリ使用量(メモリ節約モード): 952,000K
LuxRenderメモリ節約量: 311,000K
節約率: 25%


説明通り20%程度~それ以上のメモリが節約されています!!
1ブロックの場合と2ブロックの場合ではLuxRenderのメモリ節約量が倍以上違いますが、それ以降はあまり変動していません。ある程度以上オブジェクトが増えた場合は、メモリ節約の効果があまり無いということでしょうか。
改めて考えると、3ブロックと4ブロックの場合は完全にカメラの外にオブジェクトが増えるためか、それらは除外され、通常モードでもLuxRenderでのメモリ使用量は増えていないということですね。

ただ、気になるのはReality起動時のDSメモリ使用量ですが、これはDSを終了してからレンダリングを始めることで解決します。
それにはまず、Realityプラグインで「Export only」にチェックを入れてから「Render Frame」を実行することでファイルのみを出力します。
Reality8 Export onlyオプション
その後DSを終了し、luxrender.exeを起動して File > Open で先ほど出力したファイルを開きます。ファイルの場所はRealityプラグインのOutputタブで確認して下さい。


■フィギュアでの検証

今度はフィギュアを使ったシーンとして、Victoria4を一体用意しました。
幸いV4にはテクスチャ解像度の違う『Sample-Res』『Standard-Res』『Hi-Res』の3種類のマテリアルがありますので、それぞれでメモリ使用量を調べてみました。V4とカメラはどちらも初期位置で、全身が視界に入っている状態です。

(A) Sample-Res
総マテリアル数: 28
総テクスチャ数: 8
DSメモリ使用量(シーン読み込み時): 340,352K
DSメモリ使用量(Reality起動時): 456,112K
LuxRenderメモリ使用量(通常モード): 356,000K
LuxRenderメモリ使用量(メモリ節約モード): 255,000K
LuxRenderメモリ節約量: 101,000K
節約率: 28%


(A) Standard-Res
総マテリアル数: 28
総テクスチャ数: 16
DSメモリ使用量(シーン読み込み時): 341,188K
DSメモリ使用量(Reality起動時): 459,368K
LuxRenderメモリ使用量(通常モード): 411,000K
LuxRenderメモリ使用量(メモリ節約モード): 304,000K
LuxRenderメモリ節約量: 107,000K
節約率: 26%


(A) Hi-Res
総マテリアル数: 28
総テクスチャ数: 16
DSメモリ使用量(シーン読み込み時): 339,928K
DSメモリ使用量(Reality起動時): 456,892K
LuxRenderメモリ使用量(通常モード): 878,000K
LuxRenderメモリ使用量(メモリ節約モード): 773,000K
LuxRenderメモリ節約量: 105,000K
節約率: 12%


LuxRenderのメモリ節約量はほぼ同じで、テクスチャの容量には関係が無いようです。逆にテクスチャ容量がLuxRenderのメモリ使用量に占める割合が多くなるほど、節約率が下がっています。


■メモリ節約モードの仕組みと効果

メモリ節約モードでは通常モードに比べてどのような違いがあるのかというと、レンダリング設定に関係しているようです。具体的には、Acceleratorという項目(LuxRender wiki - Render Settings)が違います。
この項目、シーン内のどのオブジェクトが光線の計算に考慮されないかを判断する方式を決定するもののようで、レンダリング速度に関わってくる設定です。通常モードではこれは「kd-tree」が使われますが、メモリ節約モードでは「QBVH」が使われます。「QBVH」は「kd-tree」と同等の速度を出すためにより少ないメモリしか必要としません。wikiでは「QBVH」がベストな選択だと書かれていますね。

一方、LuxRenderのログ(手動でレンダリングを開始した場合に出力されます)で確認しても使用するテクスチャの容量は変化しませんので、テクスチャを削減するオプションではないことがわかります。

実際に通常モードとメモリ節約モードである程度レンダリングしたシーンを比較してみました。

 ・通常モード
ポートレート LuxRender 通常モード

Character:ZhangXi
Skin:V4 EliteTexture: Natasha
Hair:Melody Hair , Luminous Melody
Renderer:LuxRender with Reality plugin

LuxRenderメモリ使用量: 1,322,280K
サンプル数: 500S/p
レンダリング時間: 1時間56分6秒

 ・メモリ節約モード
ポートレート LuxRender メモリ節約モード

LuxRenderメモリ使用量: 1,105,504K
サンプル数: 500S/p
レンダリング時間: 1時間48分37秒

ライトにはメッシュライトが1灯と、加えてIBLをほんのり効かせてみました。
ノイズののり方が違うぐらいで、レンダリング品質的にはほぼ同じように見えます。若干ですがメモリ節約モードの方がレンダリング時間も短いです。

メモリ節約モードにすることで、一定量のメモリが(シーンのオブジェクトの複雑さによっては大幅に)節約できるというのは確かです。
また、メモリ節約モードとは関係ないのですが、Realityプラグインはマテリアル数に比例して使用メモリ量が増大するようです。これはRealityプラグインを起動するたびに増大していき、ちょっと使いすぎなのではと思うくらいです。この値はシーンのオブジェクトを削除しても減りませんが、一度シーンを保存して、DS再起動後に読み込み直すことで現在のシーンに無いマテリアル情報は削除され、メモリ使用量も適当な値まで減ります。



今回のツールと画像の素材はこちら
AD Reality 2 for DAZ Studio
Reality 2 for DAZ Studio


ZhangXi

V4 EliteTexture: Natasha

Melody Hair

Luminous Melody

Urban Sprawl 2 The Big City

Victoria 4 Skin Maps (Std Res)

Victoria 4 Skin Maps (High Res)




Comment

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます
非公開コメント

著書
カレンダー
09 | 2019/10 | 11
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -
検索フォーム
プロフィール

Kotozone

Author:Kotozone
製品の取扱説明書を読むのが大好きです

FC2ブックマーク
最新記事
カテゴリ
タグリスト

DSプラグイン V4 ライト マテリアル DSシェーダ DS基本 セール Genesis IBL アニメーション タブ解説 iray LuxRender ダイナミッククロス スクリプト Genesis2 ShaderMixer セットアップ バージョンアップ Download レタッチ カスタマイズ トゥーン SSS Photoshop ウェイトマップ NGM ファー 物理シミュレーション ERC D-Form Miki2 IDL 大気 M4 カラーコレクション ボリューム Hexagon Terrain パーティクル Genesis3 モーフセット Genesis8 V5 カメラ アナグリフ インスタンス GIMP 3Dプリント ロボット RAMDisk SLG ダイナミックヘア K4 V8 Python モーションキャプチャ Linux 日本語訳 

最新コメント
リンク
月別アーカイブ
ご意見ご感想はこちらに

名前:
メール: 
件名:
本文: 

ブロとも申請フォーム

この人とブロともになる

最新トラックバック
FC2カウンター