技術

Blenderのライトマップパックのパック品質の意味

Screenshot 2013.03.24 12.05.34

メモ。
ソースを読んだわけじゃなくてあくまでも観察した結果。
バージョンは2.66a。

パック品質は初期値12、最小値1、最大値48。

値を小さくすると3次元空間上で隣り合ってるポリゴンはUV空間でも隣になる傾向が高まる。
その代わりライトマップに無駄な空白が出来る傾向も高まる。

値を大きくするとその逆になる。

あくまでも傾向であって、最小値の1を設定しても3次元空間上で隣り合ってるポリゴンが常にUV空間でも隣になるわけじゃない。
(まぁこれは単体の立方体の展開図を考えただけでもあり得ない事だと分かるし当然の事。)

ベイクしたライトマップをリアルタイムレンダリングで利用する場合、ミップマップによってUV空間におけるとなりの面の色がはみ出してきてエッジ付近の見た目が汚くなる場合がある。
(以降この問題を「はみ出し問題」と呼ぶ。)
これはもちろんライトマップパックの余白を大きくとることで直接的に軽減できる。
(ちなみにベイクパネルの方の余白は、ベイク後に各面の色をその範囲外に広げる広さに相当するので、この値を大きくするとエッジ付近の見た目が汚くなる問題が逆にひどくなる場合がある。)

ただ余白を大きくとるとテクスチャの画素数的に無駄も大きくなるので、出来るだけ小さくしたい。
そこで上記のパック品質の設定が生きてくる。

パック品質の値を小さくする→3次元空間上で隣り合ってるポリゴンがUV空間でも隣になる→ライトマップ上での色の変化がなだらかになる

以上のような仕組みではみ出し問題が軽減、というかはみ出しても人の目から見て目立たなくなる可能性が高まる。
あくまで可能性。
Blenderのライトマップパックによる自動展開のされ具合によってはパック品質の値を大きくした方が偶然にもよりマッチする場合もあるし、そもそも隣り合った面でも極端に色が変わるようなものを含むシーンでは余白を大きくとる以外に楽な解決方法はない。

まぁとにかくパック品質でどのくらい変わるかテスト。
Blenderでステージをモデリングしベイクしたライトマップを使ってiPhone 3GS上でリアルタイムレンダリング。
ベイクしたテクスチャを貼っつけてるだけでライティングはしてない。

サムネイルだと分からないけど、実寸で見てみると真ん中の緑の球(icosphere、スムーズシェーディング)のポリゴンのエッジ付近の不自然さがパック品質の値が小さくなるにつれて目立たなくなってるのが分かる。
上からパック品質=48、12、1の場合(クリックで実寸表示)。
Screenshot 2013.03.24 11.45.41
Screenshot 2013.03.24 11.55.55
Screenshot 2013.03.24 12.05.34

次に、こちらもサムネイルだと分からないけど、実寸で見てみると、画像の左上の光が当たってない部分に微かに明るい筋みたいなものが見える。
これもポリゴンのエッジ付近に出た不自然さであるが、パック品質1のときは全く目立たなくなってるのがわかる。
(タッチ操作でカメラの角度を変えたため、それぞれ表示範囲が微妙に違ってる。)
上からパック品質=48、12、1の場合(クリックで実寸表示)。
Screenshot 2013.03.24 11.46.12

Screenshot 2013.03.24 11.56.14

Screenshot 2013.03.24 12.05.46

以下は実際に生成されたライトマップテクスチャ。
たまたま影になってる面に相当する部分と、ライトマップの未使用領域がどちらも黒で区別しづらいが、パック品質が小さくなるにつれて同じオブジェクトの面同士がまとまる度合いが大きくなり、逆にライトマップの未使用領域は増えてるのが分かる。
黄色の矩形が大量にある部分は燭台部分に相当。
元ファイル1024×1024を512×512に縮小。
上からパック品質=48、12、1の場合。
stage48

stage12

stage1

個人的には、ライトマップの解像度は1024、パック品質は1、余白は0.2、ベイクパネルの方の余白は2、がとりあえず基本になる気がする。

ただ、Blenderの間接照明ってかなり微妙で、ただのレイトレよりリアルとは言え、他の物理ベースのレンダラと比べるとGI感がとても不自然。
このまま最終的なプロダクトに利用するかどうかはまだ悩み中。
Cyclesレンダーがベイク対応してくれると最高なんだけど。

Parthenonっていう、GI感に優れ収束もやたら早くベイクも出来るフリーのレンダラがあるけど、少々制限が多くて実用は手間がかかる感じ。

なので最近は、物理ベースのレンダラというかベイカーを自作しようかなんて考えてたりする。

コメントを残す

メールアドレスが公開されることはありません。



※画像をクリックして別の画像を表示

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください