線光源と面光源

  • 線光源と面光源とサンプリング
  • ポリゴンメッシュの面を面光源にする
  • 1つ線光源を複数の面光源に分割したときの明るさ

前回は、蛍光灯とダウンライトをモデリングしました。
今回は、モデリングした蛍光灯を使って光源の指定とレンダリングを進めていきます。

蛍光灯の場合は全体が発光することになります。
ここで、いくつかのパターンを確認していきます。

蛍光灯のマテリアル

前回のおさらいです。
蛍光灯のマテリアルは「影を落とさない」「影を表示しない」をオンにしています。

これにより、蛍光灯の内部に線光源などを配置しても光が蛍光灯内で閉じ込められなく届くようになります。
この蛍光灯(光源を指定しない)はアセットとしてshdファイルに保存しています。

舞台となる部屋をモデリング

今後は部屋に照明器具を配置して確認することになるため、部屋を先に作っておくことにします。
建築寄りのモデリングについては、チュートリアルの「建物を作る」もご参照くださいませ。
キッチンルームのモデリング – 床と壁」でも部屋をモデリングしていますのでこれらを参考に部屋をモデリングしていきます。
部屋のサイズは江戸間の12畳、5280mm x 3520mmの広さにしました。

この部屋のモデリングは今までチュートリアルで説明した手順で対処できると思われますので、説明は飛ばしていきます。
この床となる部分を基準とし、ポリゴンメッシュを高さ2700mmとしてXYZ方向のサイズが5280 x 2700 x 3520 mmのポリゴンメッシュの直方体を作成します。

形状編集モード+面選択モードに移行し、対象の面を選択してツールボックスの「編集」-「メッシュ」-「編集」-「分離/複製」-「別形状として分離」を選択し、
「床」「天井」「壁」を別形状に分離します。
それぞれのポリゴンメッシュを「床」「天井」「壁」と名前変更しました。

それぞれの面が内側を向いていないため、ツールボックスの「編集」-「メッシュ」-「編集」-「法線」-「反転」で面が内側を向くようにします。
「壁」の側面の1つを削除し、部屋の内側が見えるようにします。

「壁」を選択し、「ループスライス」を使用して床から50mmの高さの位置に稜線を追加、天井から30mmの高さの位置に稜線を追加します。
これは、幅木と廻りぶちの面を作成しています。

「壁」のすべての面を選択し「厚み」で内側に75mmの厚みを付けます。

床/天井/壁/幅木と廻りぶちにマテリアルを割り当てます。
床と天井、壁のテクスチャはShadeExplorerから素材を割り当てましました。

部屋を正面からとらえるようにカメラを移動し、天井に仮の面光源を配置してプレビューレンダリングすると以下のようになりました。
無限遠光源の明るさ/環境光は0にしています。
これは「パストレーシング+パストレーシング」でレンダリングしています。

レンダリング速度を優先するため「イラディアンスキャッシュ」を無効にしています。
そのため、高周波ノイズが出ています。
見栄えを整えたレンダリング調整については、今回の解説の最後で記載しています。

この部屋に照明器具を配置していきます。
仮で配置した面光源を削除し、いったんこの部屋のシーンをshdファイルとして保存しておきます。

蛍光灯を外部参照としてインポート

メインメニューの「ファイル」-「インポート」-「形状データ」より外部参照として蛍光灯のデータを部屋のシーンに読み込みます。
天井の中央付近に蛍光灯が配置されるように、外部参照のリンクをマニピュレータを使って移動/回転させます。

この状態でプレビューレンダリングすると、まだ光源がないため真っ暗になります。

ここから光源を追加していきます。

線光源を配置

ここで、2つの蛍光灯の内部に線光源を配置しました。

線光源の明るさとして「単位」を「減衰基準距離」、「明るさ」を600としました。

レンダリングすると以下のようになりました。

蛍光灯の光が照明器具の両端でさえぎられているため、影が横に伸びています。
また、壁に落ちる影がシャープになっています。
これは線光源自身は面積を持たないため起きる現象でもありそうです。

線光源でのサンプリング

点光源やスポットライトの場合は1点から光が放射されます。

そのために影の輪郭ははっきり出ます。

線光源の場合は面積はないですが、線形状の方向にサンプリングが行われます。
イメージとしては、以下のように線形状の上に複数の点光源が存在するような状態です。

このサンプリングにより線形状と垂直な方向への影は滑らかになりますが、線形状と水平な方向の影は滑らかにはなりません。

蛍光灯のシーンで壁に落ちる影が滑らかでないのはこの部分が影響していそうです。
次に面光源を使用します。

面光源を配置

蛍光灯の場合は円柱の周りに面積を持った状態で光が放射されるため、「面光源」を使用するとより現実的になります。
照明器具の光源についてはできるだけ面光源を使用するほうがよいかもしれません。
イメージとしては、以下のように面積のある面の上に複数の点光源が存在するような状態です。

このサンプリングにより、影が滑らかになります。

蛍光灯の円柱を面光源にする

蛍光灯は外部参照としてインポートしているため、これは編集せずにそのままにしておきます。
円柱のポリゴンメッシュを蛍光灯に沿って少し内側に配置します。
また、蛍光灯の両端の口金部から少し離すようにしています。
この作業は正確でなくてよいです。

また、ツールパラメータでプリミティブとしての「分割数U」を8、「分割数V」を1としてメッシュを荒くしています。
これは次の段階でポリゴンメッシュの各面を複数の面光源に分解するため、負荷を考えるとできるだけ少ない面光源数のほうがレンダリング速度に貢献するためです。
また、円柱の「上面」「下面」チェックボックスをオフにして側面だけを作るようにします。

ポリゴンメッシュの円柱の作成を確定し、次にツールパラメータの「線形状に変換」ボタンを押してポリゴンメッシュの面を「閉じた線形状」に分解します。

ブラウザでパートを「蛍光灯の面光源」と名前変更しました。
このパート内の「閉じた線形状」をブラウザで選択します。
形状情報ウィンドウで「光源属性」の「明るさ」を600としました。


これで、円柱周りに8方向の面光源からの光が放射されるようになりました。
もう片側の蛍光灯にも「蛍光灯の面光源」と面光源を複製します。
レンダリングすると以下のようになりました。

1つの光源を複数の面光源に分割したときの明るさ (ver.20 -)

以下は、Shade3D ver.20 (リニアsRGB)でのリニアワークフローを考慮したときの説明になります。
1つの光源を複数の光源に分解したとき、明るさはどのような値を指定すればよいでしょうか。

ここでは、線光源を円柱状の複数の面光源に置き換えた場合の計算を行っています。
これ以外のパターンでは計算式は異なります。

線光源のときは、1つの蛍光灯で明るさ(減衰基準距離)を600mmとしていました。
面光源のときは、1つの蛍光灯で8つの面光源を使用し、面光源の明るさ(減衰基準距離)を600mmとしていました。
これを比較すると、面光源を複数配置したほうが明るくなっています。
以下は左が線光源(2つ)を使用、右が面光源(2 x 8つ)を使用しています。

仮に1つの蛍光灯で明るさ(減衰基準距離)600mmを全光束とすると、面光源を使用している場合は明るさを面光源数で割った値を指定する必要があります。

Shade3Dのレンダリング時の計算上、「1つの光源を複数の光源で置き換える」場合は「明るさ」ではなく、「光源の色」を調整したほうが整合性がとりやすいです。
※ 「明るさ」を小さくした場合、レンダリング時に直接照明計算段階で限りなく照度が0になる箇所の切り捨てが起こるようでした。

まずは色補正のゲインを使って、明るさにどれくらいの値を掛ければよいか確認します。
ゲインを使うことで、レンダリングされたイメージの色(輝度)に指定値を掛ける処理を行います。
1つの蛍光灯で線光源を使用し明るさを600mmとしていた場合、置き換えた8つの面光源の明るさもそのまま600mmのままとします。
色補正ウィンドウで、ゲインの値として「1.0 / (分割した面光源数^(1.0/ガンマ値)) = 1.0 / (8^(1.0/2.2)) = 0.38865」を指定します。
「x^y」は「xのy乗」の計算になります。

これは、光源の明るさ(色)を面光源8つ分で割る計算になります。
このとき、リニアワークフローのガンマ計算を考慮します。近似値としてガンマ2.2を使用しました。
リニアワークフローでレンダリングする際は「1.0/分割した面光源数 = 1.0/8.0 = 0.125」を入れるのではない点に注意してください。
また、ガンマ値を使用できるのは色に対して各RGBで0.0-1.0の範囲の場合の補正である点にも注意してください。

これをレンダリングすると以下のようになりました。

左が線光源を使用、右が面光源を使用して色補正のゲインの値を0.38865としています。
全体の明るさはほぼ同じになっているのを確認できます。

次に、ゲインを1.0に戻し、各面光源の「光源の色」を調整して上記の結果に近づけます。
「光源の色」の入れる値は「1.0/(分割した面光源数^(1.0/ガンマ値^2)) = 1.0/(8^(1.0/2.2^2))」として計算しました。
これを計算すると0.6507となります。
この値を、面光源の「光源の色」に指定します。

これをレンダリングすると以下のようになりました。

左が線光源を使用、右が面光源を使用して「光源の色」の値を0.6507としています。
全体の明るさはほぼ同じになっているのを確認できます。

これで、線光源を複数の面光源に分割して明るさも調整できました。
改めて面光源に分割したときの蛍光灯をレンダリングしました。

線光源を使用したときのレンダリングと全体の光の広がり方は同じになり、かつ、壁に落ちる不自然な影はなくなりました。
これをよりリアルにしていくため、蛍光灯の面光源の明るさ調整と補助光源を置いて照らします。

蛍光灯をよりリアルにライティング

「パストレーシング+パストレーシング」でイラディアンスキャッシュをオンにして、
蛍光灯を下から見上げた視点でレンダリングしました。

真っ暗な部屋に1つの蛍光灯で照らしている状態です。

ここでは記載していませんが、複数の光源/照明器具を1つのシーンに配置する場合、
直管形蛍光灯の38Wの場合は約3230(lm)、といった全光束値を使ってより正確な明るさを当てはめるのもよさそうです。
今回は、照明器具は1つのためこの部分は飛ばしました。
照明器具のルーメン値について、光源でルーメンを扱う場合は「ルーメン値をShade3Dのシーンで扱う」もご参照くださいませ。

イラディアンスキャッシュにより、天井のところどころに光の円が広がっています。
補助用の面光源を下からあて、天井のイラディアンスキャッシュによる光の円と、蛍光灯の横に伸びる影を抑えていきます。

面光源の明るさを800(mm)とし、「可視」チェックボックスをオンにしました。

面光源の「可視」は、他の形状への映り込みをリアルにするための大事な要素になります。
面光源使用時は可能な限り「可視」をオンにするようにしたほうがよいかもしれません。
また、蛍光灯部の面光源のまぶしさを抑えるため「明るさ」を600mmから200mmに変更しました。

レンダリングを行うと以下のようになりました。

イラディアンスキャッシュ使用時は、シーン全体で光が局所的にならないように補助光源を置いて光の回り込みを調整することで
意図しないノイズを抑えることができます。
ただし、イラディアンスキャッシュを使用するとレンダリング時間がかかることになるため、
レンダリングを詰める段階ではレンダリングサイズを小さくしてイラディアンスキャッシュをオフにして確認するほうがよいかもしれません。

今回行ったことを以下のようにまとめました。

  • 光源はできるだけ面光源を使うようにする
  • よりリアルにする場合は補助光源(これも面光源)を置く
  • 面光源の「可視」をオンにする

今回はここまでになります。
前回モデリングした蛍光灯を使って、光源としての調整/レンダリング調整までを説明しました。
次回はダウンライトで天井に穴を開ける部分を解説した後、別の照明器具をモデリングしていく予定です。

カテゴリー: 照明器具を作る