6. 光 源
光源はシーンに明るさをもたらす照明である。光源として、点光源やスポットライト、面光源、平行光線などが用意されている。
自然の世界では、光は距離の二乗に反比例して減衰する。しかし、POV-Ray では「距離による光の減衰は無い」がデフォルトとなっている。照明のシミュレーション等には POV-Ray は向いていない。POV-Ray には光源ばかりでなく、光に関して設定できるさまざまなパラメータがあるが、CGによる映像表現のために設けられている便宜的なものも多い。
POV-Ray では、光源はシーンに光を放射する目に見えない物体(オブジェクト)として定義されている。POV-Ray で使用できる光源には、光源数は1つのシーンで最大127で、さまざまなタイプの光源を使うことができる。また、通常の照明である光源と特殊な照明である光源グループもある。
< light_source の構文 >
light_source {
<LOCATION>
color <COLOR>
[ 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 |
光源のキーワード(光源数は最大127) |
<LOCATION> |
光源位置の設定、 <x,y,z> 座標 |
color <COLOR> |
光源色の設定、rgb<r,g,b> (または色名) |
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 |
メディアの光への影響の設定 [デフォルト:off ] ▷「6.1-6 光源のオプション」参照 |
media_interaction on|off |
メディアの光への影響の設定 [デフォルト:on ] ▷「6.1-6 光源のオプション」参照 |
projected_through { OBJECT } |
光通過物体の設定 ▷「6.1-6 光源のオプション」参照 |
6.1 光源
6.1-1 点光源
点光源は設定された色の光を全方向に同じ強さで出す。POV-Ray では光源の設定がなければ点光源が使用される。点光源のキーワードはない。
< 点光源の構文 >
light_source {
<LOCATION>
color <COLOR>
[ LIGHT_MODIFIERS ... ]
}
|
light_source |
光源のキーワード |
<LOCATION> |
光源位置の設定、<x,y,z> 座標 |
color <COLOR> |
光源色の設定、rgb<r,g,b> (または色名) |
LIGHT_MODIFIERS ... |
光源オプションの設定 ▷「6.1-6 光源のオプション」参照 |
 |
図6.1-1 点光源による光と影 |
//--------------- Fig. 6.1-1 point light
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-4,2>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,1>
angle 60
}
//=============================== point light
light_source{<0,0,5> color 1.2 }
//------------------------object
sphere{z*1,0.4
pigment{color rgb<0.5,0.7,0.7>*1.5}
}
//------------------------room
#declare RMTEX = texture{
pigment{brick White*1.2,
rgb<0.8,0.6,0.4> scale 0.1}
normal{brick normal{bumps 0.2},
normal{granite 0.3} scale 0.1 }
finish{phong 1 specular 0.3}
}
box{-1,1 scale<3,5,1> translate <0,0,-1>
texture{RMTEX} }
box{-1,1 scale<1,5,5> translate <-3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<1,5,5> translate <3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<3,1,5> translate <0,5,4>
texture{RMTEX rotate x*90} }
6.1-2 スポットライト(spotlight)
スポットライトは点光源の照射範囲を狭めて、コーン(円錐)状に制限したものである。照射範囲は半球(立体角2π[sr])以下である。スポットライトの外側周辺には光の減衰域が設けられており、ハードエッジからソフトエッジタイプまでさまざまなスポットライトが表現できる。
< spotlight の構文 >
light_source {
<LOCATION>
color <COLOR>
spotlight
[ point_at <POINT_AT> ]
[ radius RADIUS ]
[ falloff FALLOFF ]
[ tightness TIGHTNESS ]
[ LIGHT_MODIFIERS ... ]
}
|
light_source |
光源のキーワード |
<LOCATION> |
光源位置の設定、<x,y,z> 座標 |
color <COLOR> |
光源色の設定、rgb<r,g,b> (または色名) |
spotlight |
スポットライトのキーワード |
point_at <POINT_AT> |
スポットライトが照らす中心点、<x,y,z> 座標 [デフォルト:<0,0,0> ] |
radius RADIUS |
光が減衰しない範囲の設定、角度 0 ~ 90 度 [デフォルト:30 ] |
falloff FALLOFF |
光の照射範囲の設定、角度 0 ~ 90 度 [デフォルト:45 ] |
tightness TIGHTNESS |
光の照射中心点からの減衰設定、値を大きくすると減衰が大きくなる。0 ~ 100 の範囲 [デフォルト:0 ] |
LIGHT_MODIFIERS ... |
光源オプションの設定 ▷「6.1-6 光源のオプション」参照 |
 |
図6.1-2a スポットライトのパラメータ |
図6.1-2a に示すように、スポットライトの照射範囲の周辺部分には光の減衰域があり、その外側は光は照射されない。falloff がスポットライトの照射範囲の角度、radius が光が減衰しない角度となる。これらの角度は 両方とも90度以下である。スポットライトの falloff と radius の差が小さければ、ハードエッジとなり、その差が大きいほどソフトエッジとなる。
スポットライトのもう1つのパラメータ、tightness は、照射の中心点からの減衰をコントロールする。0 だと影響なし、値が大きくなるにつれて減衰も大きくなる。スポットライトの照射はこの3つのパラメータにより調節する。tightness を設定すると、radius に優先して適用される。
※ radius 0 、falloff 90 と設定すると、スポットライトの光は、完全な tightness のみのコントロールとなる。
 |
 |
(a) ハードエッジ |
(b) ソフトエッジ |
図6.1-2b スポットライトによる光と影
//--------------- Fig. 6.1-2b (a)/(b) spot light
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-4,2>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,1>
angle 60
}
//================================ spot light
light_source{z*5 color 1.2
spotlight
point_at z*1
radius 20 // <<<------(a) hard edge shadow
// radius 10 // <<<------(b) soft edge shadow
falloff 20
}
//------------------------object
sphere{z*1,0.4
pigment{color rgb<0.5,0.7,0.7>*1.5}
}
//------------------------room
#declare RMTEX = texture{
pigment{brick White*1.2,
rgb<0.8,0.6,0.4> scale 0.1}
normal{brick normal{bumps 0.2},
normal{granite 0.3} scale 0.1 }
finish{phong 1 specular 0.3}
}
box{-1,1 scale<3,5,1> translate <0,0,-1>
texture{RMTEX} }
box{-1,1 scale<1,5,5> translate <-3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<1,5,5> translate <3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<3,1,5> translate <0,5,4>
texture{RMTEX rotate x*90} }
6.1-3 円柱光(cylinder)
円柱光源は、光を円柱(円筒)内に制限したものである。機能的には、光をコーン内に制限するスポットライトと同じである。円柱光源には点光源が使われいて、この光は平行光線ではない。レーザービームのような表現を想定して開発された。
< cylinder の構文 >
light_source {
<LOCATION>
color <COLOR>
cylinder
[ point_at <POINT_AT> ]
[ radius RADIUS ]
[ falloff FALLOFF ]
[ tightness TIGHTNESS ]
[ LIGHT_MODIFIERS ... ]
}
|
light_source |
光源のキーワード |
<LOCATION> |
光源位置の設定、<x,y,z> 座標 |
color <COLOR> |
光源色の設定、rgb<r,g,b> (または色名) |
cylinder |
円柱光のキーワード |
point_at <POINT_AT> |
円柱光が照らす中心点の設定、<x,y,z> 座標
[デフォルト:<0,0,0> ] |
radius RADIUS |
光が減衰しない範囲の設定、円柱の半径 [デフォルト:0.75] |
falloff FALLOFF |
光の照射範囲の設定、円柱の半径 [デフォルト:1 ] |
tightness TIGHTNESS |
光の照射中心点からの減衰設定、値を大きくすると減衰が大きくなる。0 ~ 100 の範囲 [デフォルト:0 ] |
LIGHT_MODIFIERS ... |
光源オプションの設定 ▷「6.1-6 光源のオプション」参照 |
 |
図6.1-3 円柱光による光と影 |
//--------------- Fig. 6.1-3 Cylinder light
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-4,2>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,1>
angle 60
}
//=============================== Cylinder light
light_source{z*5 color 1.2
cylinder
point_at z*1
radius 1
falloff 1.2
}
//------------------------object
sphere{z*1,0.4
pigment{color rgb<0.5,0.7,0.7>*1.5}
}
//------------------------room
#declare RMTEX = texture{
pigment{brick White*1.2,
rgb<0.8,0.6,0.4> scale 0.1}
normal{brick normal{bumps 0.2},
normal{granite 0.3} scale 0.1 }
finish{phong 1 specular 0.3}
}
box{-1,1 scale<3,5,1> translate <0,0,-1>
texture{RMTEX} }
box{-1,1 scale<1,5,5> translate <-3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<1,5,5> translate <3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<3,1,5> translate <0,5,4>
texture{RMTEX rotate x*90} }
6.1-4 平行光線(parallel)
平行光線は、あらゆる点を同じ角度で照らす光である。太陽光のある戸外の表現などに向いている。無限遠にある点光源で、POV-Ray3.5で新しくサポートされた。
< parallel の構文 >
light_source {
<LOCATION>
color <COLOR>
[ LIGHT_SOURCE_ITEMS... ]
parallel
[ point_at <LOCATION> ]
}
|
light_source |
光源のキーワード |
<LOCATION> |
平行光線の方向を決める座標1、<x,y,z> 座標 |
color <COLOR> |
光源色の設定、rgb<r,g,b> (または色名) |
LIGHT_MODIFIERS ... |
光源オプションの設定 ▷「6.1-6 光源のオプション」参照 |
parallel |
平行光線のキーワード |
point_at <LOCATION> |
座標1から平行光線の方向にある座標2、<x,y,z> 座標
[デフォルト:<0,0,0> ] |
 |
図6.1-4 平行光線による光と影 |
//--------------- Fig. 6.1-4 parallel light
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<45,-5,55>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,60,0>
angle 70
}
background { SkyBlue }
//================================== parallel light
light_source { <-100,-100,50> rgb 3 parallel }
//------------------------------object
#declare BOX1 =
box{ 0,1 scale <1,1,25>
pigment{color rgb<0.6,0.8,0.6>*1.2 }
}
#for (ii,-30,500,7)
object { BOX1 translate <-1.5,ii,0> }
#end
//--------------------ground
plane{z,0
pigment{rgb<0.8,0.65,0.5>*1.2}
normal{granite 0.3 scale 1}
finish{phong 1 specular 0.3}
}
6.1-5 面光源(area_light)
面光源は大きさを持った光源であり、やわらかい影が生じるのが特徴である。POV-Ray で使われる面光源は、複数の点光源で構成する擬似的なものである。
影の計算は、長方形内に点光源を並べたもので実行する。点光源の数が多いほどレンダリング時間は増えるがより精度の高い影となる。明るさの計算は、長方形の中央点に仮定した1つの点光源で計算される。また、POV-ray では線光源(細長い蛍光灯のような光源)は面光源の1つとして扱う。
< area_light の構文 >
light_source {
<LOCATION>
color <COLOR>
area_light <AXIS1>, <AXIS2>, SIZE1, SIZE2
[ adaptive ADAPTIVE ]
[ area_illumination on|off ]
[ jitter ]
[ circular ]
[ orient ]
[ spotlight SPOTLIGHT_ITEM | cylinder CYLINDER_ITEM ]
[ LIGHT_MODIFIERS ... ]
}
|
light_source |
光源のキーワード |
<LOCATION> |
光源位置の設定、x, y, z座標で設定 |
color <COLOR> |
光源色の設定、rgb<r,g,b> (または色名) |
area_light |
面光源のキーワード |
<AXIS1>, <AXIS2> |
光源面となる長方形の対角の座標 |
SIZE1, SIZE2 |
光源面に配列する点光源の縦と横の数、値を大きくすると影が滑らかになるが、レンダリングは遅くなる。※ どちらかを1にすると線光源になる。 |
adaptive ADAPTIVE |
簡易サンプリングの回数の設定、0 以上の整数を設定する。デフォルトは、最も高いレベルに設定されている。 |
area_illumination on|off |
このキーワードにより面光源の全面拡散光や鏡面反射光が可能になる。on|off で設定 [デフォルト:off ] |
jitter |
各点光源をランダムに揺らして影の中に生じる縞模様を消すキーワード※ jitterはレンダリングのたびにランダムに変わるのでアニメーションでは使用しないほうがよい。 |
circular |
光源の形である長方形を円・楕円形に変形させるキーワード |
orient |
球体光源とするキーワード、これを使用するときは、正方形光源を設定しcircularと併用する。 |
spotlight SPOTLIGHT_ITEM |
スポットライトの設定、面光源を構成する点光源の代わりに使うときに設定する。▷「6.1-2 スポットライト」参照 |
cylinder CYLINDER_ITEM |
円柱光の設定、面光源を構成する点光源の代わりに使うときに設定する。▷「6.1-3 円柱光」参照 |
LIGHT_MODIFIERS ... |
光源オプションの設定 ▷「6.1-6 光源のオプション」参照 |
adaptive による計算の高速化について
adaptive 設定は光の計算を簡略化して計算を速くする。デフォルトでは、設定されたすべての点光源について光の計算を行うため、点光源の数が多いと時間がかかる。adaptive を設定すると簡易サンプリング計算により計算が速くなる可能性がある。
 |
図6.1-5a レベルとサンプリング |
[計算概要]
ある物体表面上の光の計算点において、
レベル0:光源面の4隅の点からの光について計算を行う。4点からの光の強さがほぼ同じ場合は、すべての点の光が当たっている(または影)としてその平均値が、その計算点の光の強さとなり終了する。
レベル1:計算点において4点の光の強さが異なっていると、この4点内側が縦横2分割され、4つの格子ができ、各格子に新しい点光源が設定される。新しい格子に対してレベル0と同じテストを行う。
レベル2:レベル1で計算が終了しなかった格子を分割し、各格子でレベル1と同様なテストを行う。
このようにしてレベルが上がるにつれて精密な計算となっていく。光線数は面光源の行と列で設定した点光源数以下であり、それ以上の光線数となるレベルは実行されない。例えば、3 x 3 の点光源だと、実行されるレベルは最大1(光線数9)となる。
このようなサンプリングにより部分的に影と思われる部分で細かく計算し、そうではない部分で計算が簡略化され、計算時間の短縮化が行われる。
 |
図6.1-5b 面光源による光と影 |
//--------------- Fig. 6.1-5b area light
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-4,2>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,1>
angle 60
}
//================================== area light
light_source{z*5 color 1.2
area_light
<2,0,0>,
<0,2,0>,
9,9
jitter
// adaptive 3
}
//------------------------object
sphere{z*1,0.4
pigment{color rgb<0.5,0.7,0.7>*1.5}
}
//------------------------room
#declare RMTEX = texture{
pigment{brick White*1.2,
rgb<0.8,0.6,0.4> scale 0.1}
normal{brick normal{bumps 0.2},
normal{granite 0.3} scale 0.1 }
finish{phong 1 specular 0.3}
}
box{-1,1 scale<3,5,1> translate <0,0,-1>
texture{RMTEX} }
box{-1,1 scale<1,5,5> translate <-3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<1,5,5> translate <3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<3,1,5> translate <0,5,4>
texture{RMTEX rotate x*90} }
面光源の中で、スポットライトや円柱光を使うと、点光源と異なり光の照射範囲が狭くなるので計算が早くなる。これで必要な部分だけでやわらかい影の計算を行うことも可能である。
 |
図6.1-5c 面光源+スポットライト |
//------------ Fig. 6.1-5c area + spot light
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-4,2>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,1>
angle 60
}
//============================== area + spot light
light_source{z*5 color 1.2
area_light
<2,0,0>,
<0,2,0>,
9,9
jitter
spotlight
point_at z*1
radius 30
falloff 35
}
//------------------------object
sphere{z*1,0.4
pigment{color rgb<0.5,0.7,0.7>*1.5}
}
//------------------------room
#declare RMTEX = texture{
pigment{brick White*1.2,
rgb<0.8,0.6,0.4> scale 0.1}
normal{brick normal{bumps 0.2},
normal{granite 0.3} scale 0.1 }
finish{phong 1 specular 0.3}
}
box{-1,1 scale<3,5,1> translate <0,0,-1>
texture{RMTEX} }
box{-1,1 scale<1,5,5> translate <-3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<1,5,5> translate <3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<3,1,5> translate <0,5,4>
texture{RMTEX rotate x*90} }
6.1-6 光源のオプション
下記のようなオプションにより光源に様々な効果を与えることができる。これらのオプションは各種光源と組み合わせて使用できる。
(1) 光源の形状(looks_like)
(2) 影スイッチ(shadowless)
(3) 距離による減衰(fade_distance、fade_power)
(4) 大気効果スイッチ(media_interaction、media_attenuation)
(5) 光通過物体(projected_through)
(1) 光源の形状(looks_like)
通常光源は目に見えないが、 looks_like { OBJECT } を加えることで、光源の形を表現できる。光源の見かけの形状を与えるだけであり、光源には影響しない。
 |
図6.1-6a 光源形状の表現 |
//--------------- Fig. 6.1-6a looks_like
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-4,4>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,2>
angle 60
}
//============================ point light + looks_like
light_source{<0,0.5,3.3> color 1.2
looks_like{
sphere {<0,0,0>,0.2
texture {finish {ambient 1}
pigment{rgb 1}}
}
}
}
//--------------------- object
box{-1,1 scale <0.4,0.3,0.3>
translate<0,1,2>
pigment{rgb<0.5,0.7,0.7>}
}
//------------------------room
#declare RMTEX = texture{
pigment{brick White*1.2,
rgb<0.8,0.6,0.4> scale 0.1}
normal{brick normal{bumps 0.2},
normal{granite 0.3} scale 0.1 }
// finish{phong 1 specular 0.3}
}
box{-1,1 scale<3,5,1> translate <0,0,-1>
texture{RMTEX} }
box{-1,1 scale<1,5,5> translate <-3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<1,5,5> translate <3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<3,1,5> translate <0,5,4>
texture{RMTEX rotate x*90} }
(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、media_attenuation)
光源からの光が大気効果の影響を受けるかどうかを設定するスイッチ。POV-Ray3.0 では、atmosphere , atmosphere_attenuation が使われていた。
(5) 光通過物体(projected_through)
光源からの光が設定される物体のみを通過する。通常の場合の照明で物体により影ができる部分が、光の当たる部分となる。光源に projected_through で物体が設定されると、その光源からの光は、設定された物体に当たる光のみがその物体を通過するようなり、それ以外の光は遮断される。
下記の図は、図6.1-6aの光源形状の表現画像にある、中空に浮かんだ直方体に projected_through を適用した例である。
 |
図6.1-6b 光透過物体の使用 |
//----------- Fig. 6.1-6b projected_through
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-4,4>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,2>
angle 60
}
//========================== point light + projected_through
light_source{<0,0.5,3.3> color 1.2
looks_like{
sphere {<0,0,0>,0.2
texture {finish {ambient 1}
pigment{rgb 1}}
}
}
projected_through {
box{-1,1 scale <0.4,0.3,0.3> translate<0,1,2>
pigment{rgb<0.5,0.7,0.7> } }
}
}
//--------------------- object
box{-1,1 scale <0.4,0.3,0.3>
translate<0,1,2>
pigment{rgb<0.5,0.7,0.7>}
}
//------------------------room
#declare RMTEX = texture{
pigment{brick White*1.2,
rgb<0.8,0.6,0.4> scale 0.1}
normal{brick normal{bumps 0.2},
normal{granite 0.3} scale 0.1 }
// finish{phong 1 specular 0.3}
}
box{-1,1 scale<3,5,1> translate <0,0,-1>
texture{RMTEX} }
box{-1,1 scale<1,5,5> translate <-3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<1,5,5> translate <3,0,4>
texture{RMTEX rotate x*90} }
box{-1,1 scale<3,1,5> translate <0,5,4>
texture{RMTEX rotate x*90} }
6.2 光源グループ(light_group)
光源グループは特殊な照明である。光源グループには光源と物体を所属させることができ、グループ内の光源は同じグループ内の物体のみを照明する。光源グループは特定の物体のみを明るくしたいときなどに使用する。
< light_group の構文 >
light_group {
light_source{ IDENTIFIER }
object{ IDENTIFIER }
[ LIGHT_GROUP ]
[ global_lights on|off ]
}
|
light_group |
光源グループのキーワード |
light_source{ IDENTIFIER } |
光源 light_source 文の記述 |
object{ IDENTIFIER } |
物体 object 文の記述 |
LIGHT_GROUP |
他の光源グループの設定 |
global_lights on|off |
このグループに所属する物体がグローバル光源により照らされるか照らされないかのスイッチ [デフォルト:off ] |
※ グローバル光源:光源グループに所属していない通常の光源
※ 光源グループに所属する光源により照らされた物体の影は発生しない。しかし、光源グループに所属する物体は、一般の光源による影が発生する。
※ 光源グループに所属する光源と物体との間に他の物体があると、光源グループの光が遮られることに注意する。
 |
 |
(a) 通常の照明 |
(b) 光源グループの追加 |
図6.2 光源グループ使用例
//------------------ Fig. 6.2a
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-40,20>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,1>
angle 8
}
//========================================== pont light
light_source { z*5 color 1.2 parallel point_at <5,-1,0>}
//------------------- FLOOR
plane{z,1
pigment{rgb<0.7,0.7,0.6>*1.5}
normal{granite 0.2 scale 0.5}
finish{phong 1 specular 0.3}
}
//--------------------------------- object
sphere{< 1.5,0,1>,1 pigment{color rgb<0.5,0.7,0.5>*1.5}
finish{phong 1 specular 0.3}
translate <-1.5,-3,0.5>
}
#declare SPH2= union{
sphere{<-1.5,0,1.5>,1 pigment{color rgb<0.7,0.5,0.5>*1.5}
finish{phong 1 specular 0.3}
}
sphere{< 1.5,0,1.5>,1 pigment{color rgb<0.5,0.5,0.7>*1.5}
finish{phong 1 specular 0.3}
}
}
//--------------- Fig. 6.2b light_group
#version 3.7
#include "colors.inc"
#include "textures.inc"
global_settings
{assumed_gamma 2.2}
camera{
location<0,-40,20>
sky<0,0,1>
right <-image_width/image_height,0,0>
look_at<0,0,1>
angle 8
}
//=========================================== pont light
light_source { z*5 color 1.2 parallel point_at <5,-1,0>}
//---------------------- FLOOR
plane{z,1
pigment{rgb<0.7,0.7,0.6>*1.5}
normal{granite 0.2 scale 0.5}
finish{phong 1 specular 0.3}
}
//------------------------------------------- object
sphere{< 1.5,0,1>,1 pigment{color rgb<0.5,0.7,0.5>*1.5}
finish{phong 1 specular 0.3}
translate <-1.5,-3,0.5>
}
#declare SPH2= union{
sphere{<-1.5,0,1.5>,1 pigment{color rgb<0.7,0.5,0.5>*1.5}
finish{phong 1 specular 0.3}
}
sphere{< 1.5,0,1.5>,1 pigment{color rgb<0.5,0.5,0.7>*1.5}
finish{phong 1 specular 0.3}
}
}
//=========================================== ligth-group
light_group {
light_source { <5,-3,7> color 0.7 }
object{ SPH2 }
global_lights on
}
図6.2の左側画像は、平行光線だけの照明であるが、右側画像ではさらに光源グループを使用している。この画像でピンクの球とブルーの球の違いは、global_lights の on/off の差である。物体にできる影はグローバル光源(この例では平行光線)の影であり、光源グループの光源による影ができていない。
この例は使用することで不自然な感じになっているが、この光源の目的は見せたい物体が暗くて見えにくいときにそれを少し明るくするような補助的な照明として使用することである。
(End) 6.光源