6. 光源


6. 光源(light_source)

POV-Rayでは、光源はシーンに光を放射する目に見えない物体として定義されている。 POV-Rayで使用できる光源には点光源と面光源があり、スポットライトと円柱光を作ることもできる。 光源は1つのシーンの中でいくつ指定してもよく、異なるタイプの光源を一緒に使うこともできる。 また、他の物体と同じようにCSGによって組み合わせることもできる。
自然の世界では光は、距離の二乗に反比例して減衰する。しかし、POV-Rayでは「距離による光の減衰は無し」が既定値となっているため注意すること。照明のシミュレーション等にはPOV-Rayは使用できない。
POV-Rayには通常の照明である光源と特殊な照明である光源グループがある。

< light_source の構文>

 light_source {
   <LOCATION>
   color <COLOUR>
   [ spotlight SPOTLIGHT_ITEM ]
   [ cylinder CYLINDER_LIGHT_ITEM ]
   [ parallel PARALLEL_LIGHT_ITEM ]
   [ area_light AREA_LIGHT_ITEM ]

   [ looks_like { OBJECT } ]
   [ shadowless ]
   [ fade_distance Fade_Distance ]
   [ fade_power Fade_Power ]
   [ media_attenuation on|off ]
   [ media_interaction on|off ]
   [ projected_through { OBJECT } ]
 }
light_source 光源を指定するキーワード
<LOCATION> 光源位置の設定、x, y, z座標で指定
color <COLOR> 光源の色・明るさの指定
spotlight SPOTLIGHT_ITEM スポットライトの指定 ⇒「6.1-2 スポットライト」
cylinder CYLINDER_LIGHT_ITEM 円柱光の指定  ⇒「6.1-3 円柱光」
parallel PARALLEL_LIGHT_ITEM 平行光線の指定  ⇒「6.1-4 平行光線」
area_light AREA_LIGHT_ITEM 面光源の指定  ⇒「6.1-5 面光源」
looks_like { OBJECT } 光源に形を与える。⇒「6.1-6 光源のオプション」
shadowless 影なしの指定 ⇒「6.1-6 光源のオプション」
fade_distance FADE_DISTANCE 光の減衰距離の指定 ⇒「6.1-6 光源のオプション」
fade_power FADE_POWER 光の減衰強さの指定 ⇒「6.1-6 光源のオプション」
media_attenuation on|off 光源に与える効果の指定 ⇒「6.1-6 光源のオプション」
media_interaction on|off 光源からの光がメディアに与える効果の指定 ⇒「6.1-6 光源のオプション」
projected_through { OBJECT } 光通過物体の指定 ⇒「6.1-6 光源のオプション」


6.1-1 点光源

点光源は指定された色の光を全方向に同じ強さで出す。 POV-Rayでは特に指定いない限り点光源が使用される。

<点光源の構文>

 light_source {
   <LOCATION>
   color <COLOUR>
   [ LIGHT_MODIFIERS ... ]
 }
light_source 光源を指定するキーワード
<LOCATION> 光源位置の設定、x, y, z座標で指定
color <COLOR> 光源の色・明るさの指定
LIGHT_MODIFIERS ... 光源に与える効果の指定  ⇒「6.1-6 光源のオプション」

図6.1-1 点光源による光と影

●点光源の例(図6.1-1)

light_source{z*5 color 1.5}


6.1-2 スポットライト(spotlight)

スポットライトは円錐形に収束した光を表現するものである。 光はそのコーンの中心付近で最も明るくなり、端にいくほど減衰して暗くなる。 デフォルトでは点光源が使用されるが、面光源とともに使うこともできる。 ⇒「6.1-5 面光源」

< spotlight の構文>

 light_source {
   <LOCATION>
   color <COLOUR>
   spotlight
   [ point_at <POINT_AT> ]
   [ radius RADIUS ]
   [ falloff FALLOFF ]
   [ tightness TIGHTNESS ]
   [ LIGHT_MODIFIERS ... ]
 }
light_source 光源を指定するキーワード
<LOCATION> 光源位置の設定、x, y, z座標で指定
color <COLOR> 光源の色・明るさの指定
spotlight スポットライトを指定するキーワード
point_at <POINT_AT> 光が指す点の指定
radius RADIUS 光が減衰しない角度の指定  0>RADIUS < 90の範囲 [デフォルト:30]
falloff FALLOFF 光が減衰し0となる角度の指定  0>FALLOFF < 90の範囲 [デフォルト:45]
tightness TIGHTNESS 光の輪郭の鋭さの指定  値を大きくすると明るい部分が狭くなり、輪郭がぼやける。 1≦TIGHTNESS≦100の範囲。 [デフォルト:0 ]
LIGHT_MODIFIERS ... 光源に与える効果の指定  ⇒「6.1-6 光源のオプション」

図6.1-2a スポットライトのパラメータ 図6.1-2b falloff 5のときの減衰曲線

図6.1-2aに示されるように、スポットライトは重なった2つの円錐として考えることができる。 内側の円錐は、光が減衰しない範囲であり、外側の円錐は光が減衰していく範囲である。 この円錐の外側の範囲は照らされない。 これら2つのパラメータの値はそれぞれの円錐の頂点の角度の半分であり、どちらの角度も90°より小さくなければならない。 光は(radiusの角度が負でない限り)図6.1-2bのようにradiusとfalloff の間で滑らかに減衰する。

radius 30、falloff 60のとき radiusの角度が負のとき
図6.1-2c tightnessの値による減衰の違い

図6.1-2cにあるようにradiusとfalloffの角度はtightnessのパラメータと互いに影響しあう。ただしradiusの角度が負である場合は、照らされる範囲はfalloffの角度に関係なくtightnessのみに依存するため、tightnessの値でスポットライトの光を制御できる。

図6.1-2d スポットライトによる光と影

●スポットライトの例(図6.1-2d)
          light_source{z*5 color 1.5
            spotlight
            point_at z*1
            radius 5
            falloff 45
            tightness 20
          }

6.1-3 円柱光(cylinder)

円柱光源はスポットライトに似ているが、光線は円錐形ではなく円柱形に収束する。円柱光は点光源または面光源から放射された光線を円柱形に収束するだけであり、平行光線とは異なる。デフォルトでは点光源が使用されるが、面光源とともに使うこともできる。 ⇒「6.1-5 面光源」

< cylinder の構文>

 light_source {
   <LOCATION>
   color <COLOUR>
   cylinder
   [ point_at <POINT_AT> ]
   [ radius RADIUS ]
   [ falloff FALLOFF ]
   [ tightness TIGHTNESS ]
   [ LIGHT_MODIFIERS ... ]
 }
light_source 光源を指定するキーワード
<LOCATION> 光源位置の設定、x, y, z座標で指定
color <COLOR> 光源の色・明るさの指定
cylinder 円柱光を指定するキーワード
point_at <POINT_AT> 光が指す点の指定
radius RADIUS 光が減衰しない範囲の指定。 RADIUS < 90
falloff FALLOFF 光が減衰していく範囲の指定。 FALLOFF < 90
tightness TIGHTNESS 光の輪郭の鋭さの指定。 値を大きくすると明るい部分が狭くなり、輪郭がぼやける。 1≦TIGHTNESS≦100の範囲。 [デフォルト:0 ]
LIGHT_MODIFIERS ... 光源に与える効果の指定  ⇒「6.1-6 光源のオプション」

図6.1-3 円柱光による光と影

●円柱光の例(図6.1-3)
          light_source{z*5 color 1.5
            cylinder
            point_at z*1
            radius 5
            falloff 45
            tightness 20
          }

6.1-4 平行光線(parallel)

平行光線は点光源が無限遠に位置する場合の光源である。POV-Ray3.5で新しくサポートされた。太陽光のある戸外の表現がやりやすくなった。

< parallel の構文>

light_source {
   <LOCATION>
   color <COLOUR>
   [ LIGHT_SOURCE_ITEMS... ]
   parallel
   point_at <VECTOR>
}
light_source 光源を指定するキーワード
<LOCATION> x, y, z座標で位置の指定 (平行光線の方向を決定するための開始座標)
color <COLOR> 光源の色・明るさの指定
LIGHT_MODIFIERS ... 光源に与える効果の指定  ⇒「6.1-6 光源のオプション」
parallel 平行光線を指定するキーワード
point_at <LOCATION> x, y, z座標で位置の指定 (平行光線の方向を決定するための終点座標)。

図6.1-4 平行光線による光と影

●平行光線の例(図6.1-4)

light_source { z*5 color 1.5 parallel }


6.1-5 面光源(area_light)

面光源は大きさを持った光源であり、やわらかい影を作ることができる。 また、POV-rayでは線光源(細長い蛍光灯のような光源)は面光源の一つとして扱う。

POV-Rayで使われる面光源は擬似的な面光源である。影の計算は長方形内に点光源を並べたもので実行するので、点光源の数が多いほどレンダリング時間は増えるがより精度の高い影となる。明るさの計算は長方形の中央点においた1つの点光源で計算する。

< area_light の構文>

 light_source {
   <LOCATION>
   color <COLOUR>
   area_light <AXIS1>, <AXIS2>, SIZE1, SIZE2
   [ adaptive ADAPTIVE ]
   [ jitter ]
   [ circular ]
   [ orient ]
   [ spotlight SPOTLIGHT_ITEM | cylinder CYLINDER_ITEM ]
   [ LIGHT_MODIFIERS ... ]
 }
light_source 光源を指定するキーワード
<LOCATION> 光源位置の設定、x, y, z座標で指定
color <COLOR> 光源の色・明るさの指定
area_light 面光源を指定するキーワード
<AXIS1>, <AXIS2> 光源面となる長方形の対角の座標
SIZE1, SIZE2 光源面に配列する点光源の縦と横の数。 値を大きくすると影が滑らかになるが、レンダリングは遅くなる。※ どちらかを1にすると線光源になる。
adaptive ADAPTIVE 簡易サンプリングの回数の指定。 0以上の整数を指定する。値を大きくするとより正確な影が生成されるが、レンダリングは遅くなる。
jitter 各点光源をランダムに揺らして影の中に生じる縞模様を消すキーワード※ jitterはレンダリングのたびにランダムに変わるのでアニメーションでは使用しないほうがよい。
circular 光源の形である長方形を円・楕円形に変形させるキーワード
orient 球体光源とするキーワード これを使用するときは、正方形光源を指定しcircularと併用する。
spotlight SPOTLIGHT_ITEM スポットライトの指定  面光源による光を円錐形に収束させることができる。 ⇒「6.1-2 スポットライト」
cylinder CYLINDER_ITEM 円柱光の指定  面光源による光を円柱形に収束させることができる。 ⇒「6.1-3 円柱光」
LIGHT_MODIFIERS ... 光源に与える効果の指定 ⇒「6.1-6 光源のオプション」

adaptiveは光の計算を簡略化して計算を速くするために使用する。 デフォルトによって、POV-Rayは配列されたすべての点光源について光の計算を行うため非常に時間がかかるが、adaptiveを指定すると最低限のサンプリングによって近似するため、計算が速くなる。

adaptiveによる簡易サンプリングは、まず光源面の四隅の点について計算することから始まる。 四隅全部から受け取る光の量が近似的に等しい場合は、面光源は完全に見える/完全に遮られているのどちらかだとみなされる。 この場合光の強度は四隅からの光の強度の平均として計算される。

四隅からの光の強度が一定以上異なる場合は、その面光源は部分的に遮られているとみなされ、次に1/4に分割されてそれぞれの部分で同じテストが行われる。 これによって配列内のすべての点光源を計算せずに、面光源の見える範囲をより速く近似することができる。

ADAPTIVEの値はこのテストが繰り返される回数、つまり、面光源の分割数を決定する。 例えば、adaptive 0を指定すると、四隅の点だけで光が計算される。 adaptive 1では9分割、adaptive 2では25分割、... というふうになる。

※ この分割数は、SIZE1とSIZE2で指定した点の数より多くしても無視される。

図6.1-5a 簡易サンプリングのイメージ

面光源ステートメントの中にスポットライトまたは円柱光のパラメータを指定することによって面光源の光を収束させることができる。 これにより必要な部分だけでやわらかい影の計算を行うことができ、レンダリングが速くなる。

図6.1-5b 面光源による光と影

●面光源の例(図6.1-5b)
          light_source{z*5 color 1.5
            area_light
            <2,0,0>,
            <0,2,0>,
            5,5
            jitter
          }

図6.1-5c 面光源+スポットライト

●面光源+スポットライトの例(図6.1-5c)
          light_source{z*5 color 1.5
            area_light
            <2,0,0>,
            <0,2,0>,
            5,5
            jitter

            spotlight
            point_at z*1
            radius 5
            falloff 45
            tightness 20
          }

6.1-6 光源のオプション

下記のようなオプションにより光源に様々な効果を与えることができる。 これらのオプションは各種光源と組み合わせて使用することができる。

(1)光源の形状(looks_like)
(2)影スイッチ(shadowless)
(3)距離による減衰(fade_distance、fade_power)
(4)大気効果スイッチ(media_interaction on|off、media_attenuation on|off)
(5)光通過物体(projected_through)

(1) 光源の形状(looks_like)

通常光源は目に見えないが、 looks_like { OBJECT } を加えることで、光源の形を表現することができる。光源の見かけの形状を与えるだけであり、光源特性は変化なし。

図6.1-6a 光源形状の表現

●光源形状の表現例(図6.1-6a)
          light_source{
            <0,0.5,3.3> color 1.6
            looks_like{
              sphere {<0,0,0>,0.2 
                      texture {finish {ambient 1} pigment{rgb 1}}
              } 
            }
          }
(2) 光源の影スイッチ(shadowless)
光源ステートメントに shadowless を追加することで、物体によって生じる影をなくすことができる。

(3) 距離による光の減衰(fade_distance、fade_power)

デフォルトでは光源からの光は距離によって減衰しないが、 fade_distance fade_power を使って、距離による光の減衰を表現することができる。現実の光は距離の2乗に反比例するが、POV-Rayではそうでないので注意する。

fade_distance FADE_DISTANCEは、光が減衰せずに届く距離を指定する。 減衰の割合はfade_power FADE_POWERによって指定する(例えば、1次と2次の減衰はFADE_POWER をそれぞれ1と2に設定する)。 減衰された光を計算する式は次のものである。

attenuation = 2 / ( 1 + (d / FADE_DISTANCE) ^ FADE_POWER ) (dは物体までの距離)

(4) 大気効果スイッチ

(media_interaction on|off、media_attenuation on|off)

光源からの光が大気効果の影響を受けるかどうかを指定するスイッチ。POV-Ray3.0 では、atmosphere on/off, atmosphere_attenuation on/off が使われていた。

(5) 光通過物体(projected_through)

光源からの光が指定される物体のみを通過する。通常の場合の照明で物体により影ができる部分が、光の当たる部分となる。光源にprojected_throughで物体が指定されると、その光源からの光は、指定された物体に当たる光のみがその物体を通過するようなり、それ以外の光は遮断される。
下記の図は、図6.1-6aの光源形状の表現画像にある、中空に浮かんだ直方体にprojected_throughを適用した例である。

図6.1-6b 光透過物体の使用

●光透過物体の使用(図6.1-6b)
          light_source{
            <0,0.5,3.3> color 1.6
            looks_like{
              sphere {<0,0,0>,0.2 
                      texture {finish {ambient 1} pigment{rgb 1}}
               } 
             }
            projected_through {
              box{<-1,-1,-1>,<1,1,1> scale <0.4,0.3,0.3>  translate<0,1,2> 
              pigment{rgb<0.5,0.7,0.7> } }
            }
          }


6.2 光源グループ(light_group)

光源グループは特殊な照明である。光源グループには光源と物体を所属させることができ、グループ内の光源は同じグループ内の物体のみを照明することができる。光源グループは特定の物体のみを明るくしたいときなどに使用する。

< light_group の構文>

 light_group {
   light_source{ IDENTIFIER }
   object{ IDENTIFIER }
   [ LIGHT_GROUP ]
   [ global_lights on|off ]
 }
light_group 光源グループを指定するキーワード
light_source{ IDENTIFIER } 光源文の記述
object{ IDENTIFIER } 物体文の記述
LIGHT_GROUP 他の光源グループの指定
global_lights on|off このグループに所属する物体がグローバル光源により照らされるか照らされないかのスイッチ。[デフォルト:off ]

※ 光源グループに所属する光源により照らされた物体の影は発生しない。しかし、光源グループに所属する物体は、一般の光源による影が発生する。

※ 光源グループに所属する光源と物体との間に他の物体があると、光源グループの光が遮られることに注意する。

図6.2 通常の照明(左側)と光源グループ使用例(右側)

●光源グループの例(図6.2の右側画像)

          light_source { z*5 color 1.5 parallel point_at <5,-1,0>}  

          light_group {
             light_source { <5,-3,5> color 0.7 }  
             sphere{<-1.5,0,1>,1 pigment{color rgb<0.7,0.5,0.5>*1.5}}
             global_lights on
           }

          light_group {
             light_source { <5,-3,5> color 0.7 }  
             sphere{<1.5,0,1>,1 pigment{color rgb<0.5,0.5,0.7>*1.5}}
             global_lights off
           }

図6.2の左側画像は、平行光線だけの照明であるが、右側画像ではさらに光源グループを使用している。この画像でピンクの球とブルーの球の違いは、global_lightsのon/offの差である。物体にできる影はグローバル光源(この例では平行光線)の影であり、光源グループの光源による影ができていない。
この例は使用することで不自然な感じになっているが、この光源の目的は見せたい物体が暗くて見えにくいときにそれを少し明るくするような補助的な照明として使用することである。