IR+QMCについて

CINEMA 4DおよびBodyPaint 3Dに関する一般的な議論や情報交換をするフォーラムです。

IR+QMCについて

投稿記事by tofuji » 火 6 05, 2012 4:03 pm

 先日私はTwitterに「IR+QMCは使える」と書きましたが、間違いだったので訂正し、理由を説明します。

 元ネタはコンノさんのブログです。
http://kowloo.net/hirotsu/mt/archives/2 ... qmc_1.html


 このシーンには次のような事情があったため、例外的に「IR+QMC」の方が「IR」より速くなりました。

1. 「拡散反射回数= 1」以降の光の影響がほとんどわからない(つまり奥まった部分が目立たない)シーンに対して拡散反射回数= 3を指定した。

2. シーンに細かい曲面が多数存在するため、「拡散反射回数= 1」以降の光の分岐計算が難しかった。


 しかし、ほとんどのケースでは次のような理由からIRの方が速く、画質も良好です。

1a. 拡散反射回数= 1にすれば、どんなシーンでもIRの方が速い。

1b. 拡散反射回数= 1以降の光の影響がよくわかるシーンに対してIR+QMCを適用すると、どんな設定にしてもまともな絵を生成できない。

2a. シーンが単純であれば、拡散反射回数= 3にしてもIRの方が速い。


---

 次に、「IR」、「QMC」、「IR+QMC」がどんな計算をしているのかについて説明します。

1. IRは、まず「分岐する光」を使って「IR(シーンの明るさを一定の間隔で測定したデータ)」を計算し、IRを「補間」してGIをレンダリングします。
 拡散反射回数= 3の場合、光は3回分岐します。短時間できれいな絵を生成できます。レンダリング時間は「11秒」。

画像


2. QMCは、「分岐しない光」を使って直接GIをレンダリングします。
 IRがないため、全てのピクセルに対して多数の光を飛ばす必要があり、非常に遅く、砂目状のノイズが出ます。
 レンダリング時間は「98秒」。

画像


3. IR+QMCは、まず分岐する光によってIRを計算します。ただし、拡散反射回数は1までしか計算されません。
 同時に、明るさの変化の激しい部分だけをQMCで計算し、その結果をIRに入れます。
 IRを使っているので、QMCよりは高速ですが、IRよりは遅くなります。レンダリング時間は「24秒」。
 また、拡散反射回数= 1以降の光がQMCに依存しているため、奥まった部分にムラ(砂目状のノイズをボカしたもの)がでます。

画像


サンプルシーン
http://www2.11moon.com/sample_files2012 ... C_test.zip

HDR画像
http://www2.11moon.com/sample_files2012 ... b/HDRs.zip


---

 結論として、どんな状況でも「IR+QMC」ではなく「IR」を使うことを私はお勧めします。

 コンノさんのブログに書いてあるようにIR+QMCの方が速くなることはありますが、それは稀で、画質は確実に低下します。
そして、画質の低下が許容範囲内かどうかはレンダリングが終わるまでわかりません。そんなことに悩んでいるよりはIR一本に絞った方が効率よく作業できます。


 確かにIRにも弱点はありますが、それはそれなりに対策できます。別の言い方をすれば、少なくともQMCやIR+QMCの弱点を対策するよりはずっと簡単です。

1. 今回問題になったシーンには細かい曲面が多数存在するため、「拡散反射回数= 1」以降の光の分岐計算が難しいという問題が発生しました。
 これは、光を分岐させるIR特有の弱点です。特に光を分岐させる際の「最適化」の部分でレンダラーが悩んでいました。

 つまり、サンプル密度の「半径」と「最小半径」の間のどの値にするかで悩んでいたわけですが、「全部半径にしろ」と命令すれば悩むこともありません。
「レコード密度 -> 密度コントロール」の値を「0」にするとレコード密度の最適化が行われず、このシーンのレンダリング速度は5倍になります。

 それでもIR+QMCの1/3の速度ですが、上の図でもわかる通りその分画質はよくなっています。


2. IR(静止画)には「アニメーションがちらつく、ふらつく」という弱点があります。これはIRに限った問題ではなく、
実はQMCやスカイサンプラーでも発生しているのですが、QMCやスカイサンプラーではピクセル単位で発生するため、細かくて気になりません。
しかしIRでは数〜数十ピクセル単位の大きなムラが発生するため目出ちます。
 さらに、IR+QMCではIRの中にQMCの粗い砂目ノイズが混ざって拡大されるので、「最もアニメーションに向いていないGIモード」と言えます。

a. この問題を解決するには、まず「ストカスティックサンプル」と「レコード密度」の値を最適化することが重要です。
 これらの値が適切でなかったら、他のどんなパラメータをいじってもまともな絵はできません。

b. もし、シーンのコントラストが高い場合は、発光するオブジェクト等に「オーバーサンプリング」や「GIポータル」を指定します。

c. もし、白い壁等でちらつきが目立つ場合は、「コンポジットタグ -> GI」を使ってその部分だけ計算精度を上げます。

 GIのアニメーションについても参照してください。


3. マニュアルによると、IR+QMCの利点は「面が折れた部分のコントラストがハッキリ出る」ということだそうです。
 また、IRを使った場合でも「細部強調」という似たような機能を使えます。

 しかし、面が折れた部分のコントラストをハッキリ出したいのであればAOで十分です。
AOは照明とは関係ありませんが、絵的には同じ効果を期待でき、しかも次のような利点があります。

a. GIよりも設定が簡単でレンダリングが速い。

b. シーン全体ではなく、オブジェクトやマテリアル単位で適用できる。

c. オブジェクトやマテリアル単位で「グラデーション」や「レイの距離」、「計算精度」を変えられる。
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html
tofuji
 
記事: 796
登録日時: 木 3 10, 2011 10:41 am
お住まい: 東京都渋谷区

Re: IR+QMCについて

投稿記事by tofuji » 水 6 06, 2012 11:47 pm

 ムービーについても検証してみました。

 昨年GIのアニメーションをテストした時はコンピューターが非力で断念したのですが(Core2DuoのMacBookAirだった)、
今年はCore i7のMacMiniがあるおかげで何とか終えることができました。結果は以下の通りです。


1. IR(静止画)モードのGIを使えば、作例のような難しいシーンでも、現実的な時間で、許容範囲内の画質のアニメーションを作成できる。
レンダリング時間は142分/ 600フレーム。MacMini quadで1フレーム約25秒です

画像

ムービー
http://www2.11moon.com/sample_files2012/20120531b/IR_animation_2Mbps.mp4



2. IR+QMC(NET)モードのGIを使うと、IR(静止画)の5倍の時間がかかり、しかも画質は比較にならない程悪い。
というか完全に壊れている。レンダリング時間は723分/ 600フレーム。

 また、1フレーム目のレンダリングがスタートするまでに1時間以上かかる。

画像

ムービー
http://www2.11moon.com/sample_files2012/20120531b/IR+QMC_animation_2Mbps.mp4


サンプルファイル
http://www2.11moon.com/sample_files2012/20120531b/GI_animations.zip


---

 私は「IR+QMC」モードはCINEMA 4Dから削除すべきだと思います。

 特に、アニメーションを含めて一番汎用性のある「IR(静止画)」モードに「静止画」という限定を付け、
逆に一番使えない「IR+QMC」に「フルアニメーション」とか「NET Render」なんていうおいしそうな名前をつければ、
誰でも「GIのアニメーションをレンダリングする時はIR+QMCモードを使うんだ」と誤解します。

 かくいう私も誤解しました。そして2週間を無駄にしました。

 とはいっても、私は2週間でIR+QMCに見切りを付けられたので、まだ幸せな方です。
ほとんどの人は「IR(静止画)モードが一番GIのアニメーションに向いている」ということに気がつかず、
IR+QMCを使い続けて苦しんでいるか、GIのアニメーションそのものを諦めてしまったでしょう。


 一番問題なのは、マニュアルに以下のように記述されていることです。

1. ライトやオブジェクトが動く場合はフルアニメーションモードを使わなくてはならない
(そして、フルアニメーションという名前がついたGIモードはIR+QMCしかない)。

2. フルアニメーションモードを使えば、全くちらつきのないアニメーションを現実的な時間で生成できる。

3. R11以前の「オブジェクト」GIモードと異なり、R12以降のIR+QMC(フルアニメーション)モードを使えば、
1枚当たりのレンダリング時間を静止画より短くできる。


 これらの記述は全て嘘です。理由は以下の通り。

1a. 「IR+QMC(フルアニメーション)」及びそれと同じだと書いてある「IR+QMC(NET Render)」以外にも、
「IR(静止画)」や「QMC」、「スカイサンプラー」を使ってライトやオブジェクトが動くシーンを表現できます。

2a. 技術的な話をする以前に、「全くちらつきのないアニメーションを現実的な時間で生成できる」という表現自体が嘘です。
GIのアニメーションは、少なくとも現在のところ「レンダリング時間とちらつきのトレードオフ」の上に成立するものです。

3a. これは、シーンによっては事実です。また、コンノさんのサンプルにある通り、
静止画モード同士で比較してもIR+QMCの方がIRより速くなる場合があります。
 ただし画質が低下し、特に奥まった部分が破綻するので、「それが目立たない絵にしか使えない」という条件を付ける必要があります。
そして私の経験によれば、そんな絵は1%もありません。


 その他にも、マニュアルには以下のような記述があり、非常に頭に来ます。

1. 古いバージョンのGIではちらつきに悩まされたが、それはもう過去の話だ。


 この文章を書いた人間は、自分が将来「R13のGIは最低だったが、R15のGIは完璧だ」とか、「R15の
GIは糞だったが、R17のGIは神だ」と書くことを予測できていないからです。
 そういう人間にマニュアルを書かせてはいけない。
最後に編集したユーザー tofuji [ 日 6 17, 2012 8:26 pm ], 累計 2 回
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html
tofuji
 
記事: 796
登録日時: 木 3 10, 2011 10:41 am
お住まい: 東京都渋谷区

Re: IR+QMCについて

投稿記事by tofuji » 土 6 16, 2012 3:41 am

 さて、GIのアニメーションについてさらに追求してみました。

 最終版のムービーは以下の通りです。

ムービー
http://www2.11moon.com/sample_files2012 ... _2Mbps.mp4

サンプルファイル
http://www2.11moon.com/sample_files2012 ... tion13.zip


 ちらつきはずいぶん収まりましたが、多少残っています。しかし、レンダリング時間が4倍になっているので、
このあたりが実用的に使える限界だと判断しました。MacMini quadで1フレーム約100秒です。


---

 このシーンでは、溝の上端部分に最後までノイズが残りました。この部分は「開いた面」なので、GIは「明るさの変化が少ないだろう」と予想し、
計算を省略します。しかし、実際には溝の内部からの光が急激に減衰するので、この部分で明るさが大きく変化します。


 以下、私が行った対策の内容と、その効果に対する感想を書きます。

1. ストカスティックサンプル

 ノイズが発生している部分が3〜5次光なのでストカスティックサンプルの値は非常に重要です。
ちなみに、拡散反射回数は「6」になっています。

 この値は200まで指定できるのですが、普通(つまり1〜2次光に対して)90以上にあげることはありません。
理由は結果が変らないからです。しかし、より高次の光に対しては150〜180にあげても変化があります。
 最終的には、この値を150にし、さらにコンポジットタグで3倍に強化して使っています。


2. レコード密度

 レコード密度の値も非常に重要ですが、結果的には比較的普通の「半径= 16」、「密度コントロール= 50」を使いました。

 「密度コントロール」の値について詳細な情報はありませんが、私の推測によると、少なくとも次の三つのパラメータに影響します。

a. 「半径」のスケール。
b. オブジェクトの形状に対する、「半径(と最小半径)」のバランス。
c. 低次の光と高次の光に対する、「半径」のバランス。

 したがって、低次の光しかない場合は密度コントロールの値を変える必要はなく、半径の値だけで全体を調整できます。

 ただし、高次の光が存在する場合は、高次の光の重要性に応じて密度コントロールの値を調整する必要があります。
また、このスレッドの冒頭にあるように、レンダラーが悩むような状況が発生した場合もこの値を下げる必要があります。

 なお、英語マニュアルにはドイツ語でこの値を「下げると精細になる」と説明してありますが、正しくは「下げると粗くなる」です。
日本語でどう書いてあるかは知りませんが。


3. スムージング

 今回は細かい陰影がなく、ちらつきが気になるシーンだったので、「最強」にしました。

 多少の変化はありますが、画質を大きく増減する力はありません。


4. キャッシュの改善

 キャッシュの改善は、明るさの変化の大きいサンプルポイントの間にサンプルポイントを追加して画質を改善していく機能です。
最初期待したのですが、結果的には使いませんでした。

 理由は、この機能が「陰影の細かさ」を改善する機能であって、「陰影の正確さ(つまりちらつきのなさ)」を改善する機能ではないからです。
不正確なサンプルポイントを追加してもちらつきは減らず、むしろ強調されます。


5. オーバーサンプリング

 キャッシュの改善に対して、オーバーサンプリングは陰影の正確さを改善する機能です。

 しかし、この機能は発光する部分が小さい場合にしか効果がありません。発光する部分が大きい場合、
ストカスティックサンプルの値を大きくするのと同じ結果になります。

 かなりいろいろなやり方を試したのですが、結局使いませんでした。


6. コンポジットタグ

 コンポジットタグを使うと「オブジェクト単位」でGIの精度を変更できます。

 しかし、今回のシーンにオブジェクトは1個しかなく、コンポジットタグを使う意味がありません。

 ところが絵をよく見ると、ノイズが発生しているのはオブジェクトの上端部分だけです。
したがって、もしこの部分だけを別オブジェクト化し、コンポジットタグを適用すれば、
レンダリング時間をあまり増加させずに、ノイズを低減できるはずです。

 とは言っても、普通にオブジェクトを切り分けるとその部分に必ず「つなぎ目」が発生します。
そして、それをごまかすためにエッジにアルファをかけたりすると、
それを原因としてまた別のノイズが発生したり、レンダリング時間が増加します。

 というわけで、今回は上端のポリゴンを選択し、別オブジェクトに分離し、
「0.001だけ押し出す」という非常に原始的な方法を使いました。

 CINEMA 4Dは、R12以降ポリゴンの精度が64bit化されました。
その結果、ポリゴンを微妙に編集し、それを正確にレンダリングできます。

 
 オブジェクトの外側上端に適用したコンポジットタグの中で、ストカスティックサンプルの値を300%、レコード密度の値を200%にしています。
また、比較的ちらつきの少ない内側上端に適用したコンポジットタグの中では、ストカスティックサンプルとレコード密度の値を200%にしています
---

Toshio Fuji<gtofuji@gmail.com>

掲示板に書いたサンプルのまとめサイト
http://www2.11moon.com/index_as.html
tofuji
 
記事: 796
登録日時: 木 3 10, 2011 10:41 am
お住まい: 東京都渋谷区


Return to ユーザフォーラム

オンラインデータ

このフォーラムを閲覧中のユーザー: Google [Bot] & ゲスト[3人]

cron