光源はプリムをどう照らすのか

VoidLing

2007年06月23日 22:09


まず、前置きを。
光源の表示は、OSやハード(ビデオカード等)に依存する部分が大きいので
人によって見え方が違う場合があります。
この記事と同じ検証を行っても、すべての人が「同じ結果を得られる」という確証はありませんので
あらかじめご了承ください。


というわけで、本題です。

光源数の制限に関する検証を行おうと、そのための装置を作っていて
光源からの「プリムの照らされ方」にムラがあることに気づきました。

フェイスライトを作っているときにも「どの設定値が照明効果にどのような影響をもたらすのか」が
イマイチわかりにくかったので、光源数の制限に関する検証を始める前に、単体光源について
基本的な情報を集めてみることにします。(・・・かなり大雑把ですが
まず最初に作った装置がコレ(A)。

ボックスプリムから横幅10Mの白い板をつくって、1Mごとに目盛となる棒状のプリムを配置
したものです。これによって自分から光源プリムの距離とその明滅を確認しようという、簡単なもの。


で、実際に1個の光源プリムを10M離れた距離から1M毎に近づけてみると、画像(B)のように
「明らかに照らされ方にムラがある」ということがわかりました。
これはおそらく、この10Mの板を作成するために、もっともポリゴン数(平面のみで構成されている
ためサブディビジョンでもほとんど分割されない)の少ないボックスプリムを使ったことが原因だろう
と思います。(おそらく分割面の頂点が照明効果の基点になっているため)

※このムラの発生、SLworld内での光源そのものの位置が原因である可能性も考えられたので
 光源を固定して「板のほうを動かす」方法でも確認してみましたが、結果はBとまったく同じでした。

多くの皆さんは、SL内での建築物作成にボックスプリムによる板を使用しているでしょうから、
もう少しこの「板の照明効果のムラ」について確認することにしました。
(曲面をもったプリムの場合はここまで照明効果のムラは出ないだろうと予測できますが
今回はその点の確認はスルーで^^;)

とりあえず、この確認のために使用した環境を列挙。

 ●4x4mのボックスプリムから作成した板(1m間隔で棒状のプリムを縦横に配置)
 ●光源1個(xyzすべて0.1m/テクスチャなし/プリム色=白/光源色=黄/強度1/半径1/弱さ0)
 ●環境光(=夜の明るさ)0
 ●公式の標準Viewer(1.17.0.12)
 ●WinXP Home SP2
 ●DX9世代のGeForce


Cの画像は、左側が光源の無い状態の確認用装置。
右側が光源を置いた状態です。(装置の形がわかるように、トーンカーブをいじって画像加工してます)


Dの画像は、板と光源の距離による照明効果の比較。
1個の光源を縦横1Mずつ数値入力で移動させてSSを撮り、後でPhotoShopのレイヤーとして
すべて取り込み、レイヤー特性を「比較(明るい)」に変更して合成したものです。
(合計25個の照明を一度に当てることは出来ませんからね^^;)

このDの一番右側の画像、もっとも顕著にムラが出ていますね。
板の中央(縦横の真ん中の目盛が交差している部分)のそばに光源が置いてあるのに
板はそれほど明るくなっていません。
このことから、照明効果を発揮する場所が「光源から一番近いプリムの面」ではないことが
わかります。


Dの一番右の画像の「明るく照らされている箇所」をさらにわかりやすくするために、トーンカーブを
いじってみたものがEの画像です。
縦横に3等分された箇所が明るくなっていることがわかります。
この記事の最初のほうで述べた「おそらく(サブディビジョンの)分割面の頂点が照明効果の
基点になっている」という仮説が正しいのではないかと思われます。
(つまり、光学的な計算で照明効果を表現しているのではなく、いわゆる頂点シェイダーを
 利用しているということですね。)

今回わかったことは・・・
照明効果の対象となるプリムに光源を近づければ近づけるほど、「面上に点在する各頂点」と
「光源」との距離に差ができるのでムラがでやすい。
逆に言うと、対象のプリムから光源を離し、光源そのものの強度等を上げることでムラをでにくく
することができる、ということでした。

次回は、光源の各設定値による照明効果の違いを確認してみたいと思います。
Prim&Object