4. グロ-バル設定

グローバル設定ではシーン全体に関わるパラメータの設定を行う。この global_settings 文は他のステートメント内でなければどこに記述してもよく、記述した場所に関係なくシーン全体に適用される。また、1つのシーン内で複数の global_settings 文を記述した場合、最後に設定した値が有効になる。

< global_settings の構文 >

global_settings { [ adc_bailout FLOAT ] [ ambient_light <COLOR> ] [ assumed_gamma FLOAT ] [ hf_gray_16 ] [ irid_wavelength <COLOR> ] [ charset ascii | utf8 | sys ] [ max_intersections INTEGER ] [ max_trace_level INTEGER ] [ number_of_waves INTEGER ] [ noise_generator NUMBER ] [ radiosity { RADIOSITY_ITEMS... } ] [ photon { PHOTON_ITEMS... } ] [ subsurface on|off ] }
global_settings グローバル設定のキーワード
adc_bailout FLOAT 反射・屈折計算の精度の設定  [デフォルト:1/255 ](約0.0039) ▷「4.1 ADC_bailout」参照
ambient_light <COLOR> 環境光係数(環境光の調整値) [デフォルト: <1,1,1> ] ▷「4.2 ambient_light」参照
assumed_gamma FLOAT ガンマ補正、 通常PCでは2.2、Macでは1.8を設定 [デフォルト:2.2 ] ▷「4.3 assumed_gamma」参照
hf_gray_16 ハイトフィール用の画像出力キーワード ▷「4.4 hf_gray_16」参照
irid_wavelength <COLOR> irid(虹色)の波長の設定  [デフォルト:<0.25,0.18,0.14> ]  ▷「4.5 irid_wavelength」参照
charset ascii | utf8 | sys 文字コードセットの選択、ascii (アスキー)、utf8 (ユニコード)、sys (システム)から選択 [デフォルト:ascii ]
max_intersections INTEGER 光線と物体の交点の最大数の設定  [デフォルト:64 ] ▷「4.6 max_intersections」参照
max_trace_level INTEGER 最大反射・屈折回数の設定  [デフォルト:5 ] 「4.7 max_trace_level」参照
number_of_waves INTEGER waves, ripplesの波紋の数の設定  [デフォルト:10 ] ▷「4.8 number_of_waves」参照
noise_generator NUMBER ノイズ発生機能の番号(1,2,3)の設定 [デフォルト:2 ]
radiosity {RADIOSITY_ITEMS...} ラジオシティ(相互反射計算)の設定 ▷「10. ラジオシティ」参照
photon { PHOTON_ITEMS... } フォトンマッピング(集光模様の計算)の設定 ▷「9. フォトンマッピング」参照
subsurface on|off 表面下散乱スイッチ [デフォルト:off]

※ 各パラメータはすべてオプションであり、記述は任意の順序でよい。

※ 2回以上設定されたパラメータは最後の設定が有効になる。

※ グローバル文の主なディフォルト設定値(省略するとこの設定値が使用される。)

global_settings { adc_bailout 1/255 ambient_light <1,1,1> hf_gray_16 off irid_wavelength <0.25,0.18,0.14> charset asc max_intersections 64 max_trace_level 5 number_of_waves 10 noise_generator 2 subsurface off }


4.1 反射・屈折計算の精度(adc_bailout)

反射表面が多いシーンでは鏡面の相互反射(鏡を2枚向かい合わせたときのような反射の繰り返し)が起きることがある。光は reflection(反射率)の値に比例して次第に減衰していくが、判別できないほど減衰した光の計算は終了することが効率的である。 adc_bailout により反射・屈折の計算をコントロールする。

< adc_bailout の構文 >

global_settings { [ adc_bailout FLOAT ] }
global_settings グローバル設定のキーワード
adc_bailout FLOAT 反射・屈折計算の精度の設定、反射(屈折)光が設定した値まで減衰すると計算を終了する。(値が小さいほど精密)[デフォルト:1/255 ](約0.0039)

adc_bailout はデフォルト値が適切であり、通常は設定する必要はない。

(a) adc_bailout 0.5 (b) adc_bailout 1/255(デフォルト)
図4.1 鏡面反射光の減衰による違い

//-------------------- Fig. 4.1a/b adc_bailout #version 3.7 #include "colors.inc" #include "textures.inc" global_settings{ assumed_gamma 2.2 // adc_bailout 0.5 // <<<--------------a-- adc_bailout adc_bailout 1/255 // <<<--(default)---b-- adc_bailout } camera{ location<0,-5.5,2.2> sky<0,0,1> right <-image_width/image_height,0,0> look_at<0,-0.5,0> } light_source {<80,-500,1000> color White} sky_sphere{ pigment{ wrinkles color_map{ [0.3 color rgb<0.3,0.3,1.0>] [0.5 White] } scale 0.2 } } //--------------------------------------- 2 Mirrors #declare MIL = union{ difference { box{0,1 scale<3,0.2,1.5> } box{0,1 scale<2.8,0.5,1.3> translate<0.1,-0.1,0.1> } pigment{Brown} } box{0,1 scale<2.8,0.1,1.3> translate<0.1,0.05,0.1> pigment{White} finish{reflection 0.7} } } object{MIL rotate z*-45 } object{MIL rotate z*-135 } //------------------------------------ object sphere{0,0.3 scale 1 pigment{color rgb<0.3,1.0,0.7>} finish{reflection 0.5} translate <-1,-2,0.3> } cylinder{0,z*0.6,0.3 pigment{color rgb<0.3,1.0,0.7>} finish{reflection 0.5} translate <1,-1.8,0> } //--------------------------------field disc{0,z, 20 pigment{brick White*1.2, color rgb<0.8,0.6,0.3> scale 0.1} }

4.2 環境光係数(ambient_light)

環境光は、光源の光が物体などの反射散乱により生じる間接光である。この光は空間の至る所に散乱され、光源からの直接光がない影の部分でも環境光でわずかに明るくなる。正確な環境光の計算は複雑なため、POV-Ray では各物体に環境光として一定の明るさを与えることができる。グローバル設定の ambient_light は、シーンの全物体の環境光の調整係数になっており、ambient_light の設定値が各物体のambientの値に掛け合わされる。

< ambient_light の構文 >

global_settings { [ ambient_light <COLOR> ] }
global_settings グローバル設定のキーワード
ambient_light <COLOR> 全体の環境光の強さを調整する係数、0 以上の値を設定 [デフォルト: color rgb <1,1,1> ](ラジオシティ使用時は無効)

※ 実際に各物体に適用される環境光は(グローバル設定の ambient_light )と(フィニシュの ambient )を掛け合わした値になるため、ambient_light が 1 より小さいとシーン全体がが暗くなり、1 より大きいとシーン全体が明るくなる。各物体に適用される環境光は次式となる。

ambient = ambient * ambient_light

※ グローバル設定の環境光係数により、シーン全体に影響を与えることができる。ambient_light は影と影でない範囲の両方に影響するため、個々の物体の ambient と diffuse の値とのバランスにも注意する。

環境光(間接光)について

ambient_light 環境光係数
環境光係数、物体すべての ambient 値に掛け合わされる調整係数、ラジオシティ使用時は無効
ambient 環境光
それぞれ物体ごとに設定する環境光、ラジオシティ使用時は無効
(フィニッシュ)▷「12.3-1 環境光」参照
emission 発光
それぞれ物体ごとに設定する環境光、ラジオシティ使用時も有効である。ラジオシティを使用しないときは、ambient とほぼ同じ働きをし、ambient と emission を同時に使うと2つを合わせた明るさになる。ただし、 emission は ambient_light の影響を受けない。
(フィニッシュ)▷「12.3-1 環境光」参照
 


4.3 ガンマ補正(assumed_gamma)

モニターに画像を表示する時、RGB の値に従ってモニター表面にある発光素子を光らせるが、発光素子の性質によって通常は RGB の値と実際の輝度は比例しない。この輝度のズレを補正するのがガンマ補正である。POV-Rayではグローバル設定の assumed_gamma を使ってガンマ補正を行う。これによりシーンファイルの映像が異なったディスプレイでもより正確に表示できるようになる。

< assumed_gamma の構文 >

global_settings { [ assumed_gamma FLOAT ] }
global_settings グローバル設定のキーワード
assumed_gamma FLOAT ガンマ値の設定、1.0 以上の数値を設定する。値を大きくすると表示色が濃くなっていく。通常はPCでは 2.2、Macでは 1.8 を使用する。[デフォルト:2.2 ]

※ Windowsで使用する場合は2.2でよいが、出力される画像ファイルがWindows専用となる。


4.4 グレイスケール変換(hf_gray_16)

hf_gray_16 は、シーンの色をグレイスケールに変換して、ハイトフィールド用のイメージを作るために使用する。この設定をするとモノクロ画像の出力が得られる。

▷「11.1-18 ハイトフィールド」参照

< hf_gray_16 の構文 >

global_settings { [ hf_gray_16 ] }
global_settings グローバル設定のキーワード
hf_gray_16 シーンの色をグレイスケールに変換して出力するためのキーワード。後ろに論理値(on、off、1、0など)をつけて設定を明示することもできる。

グレイスケールでは各ピクセルの色(輝度)は次のように高さに変換される。NTSC方式におけるのカラー信号のモノクロ変換式を使用している。

height(高さ)= 0.3*red + 0.59*green + 0.11*blue


4.5 虹色の波長(irid_wavelength)

(物体表面上などの)薄膜干渉による虹色は、赤、緑、青の光の原色の主要な波長に依存して計算される。irid_wavelength を使ってその値を調整できる。

▷「12.3-5 虹色」参照

< irid_wavelength の構文 >

global_settings { [ irid_wavelength <COLOR> ] }
global_settings グローバル設定のキーワード
irid_wavelength <COLOR> 虹色の波長の設定 [デフォルト:<0.25,0.18,0.14> ]
※ filter、transmitは設定しても無視される。


4.6 交点の最大数(max_intersections)

POV-Ray は光線と物体の交点をI-Stacksというスタックに記憶する。max_intersections はこのスタックのサイズ、交点の最大数を設定する。

< max_intersections の構文 >

global_settings { [ max_intersections INTEGER ] }
global_settings グローバル設定のキーワード
max_intersections INTEGE 交点の最大数の設定 [デフォルト:64 ]

複雑なシーンでは I-Stacks がオーバーフローしてシーンが正しく描かれない場合がある。POV-Ray がレンダリングを終えたときに、" I-Stack Overflows " というメッセージがあった場合は、このパラメータの値を大きくする。


4.7 最大反射・屈折回数(max_trace_level)

max_trace_level は反射・屈折回数(トレース・レベル)の最大値を設定する。例えば、光線が反射面に当たると、その点において反射光線が生成され、トレース・レベルは 1 となる。この光線がさらに別の反射面に当たって新たな光線を生じればトレース・レベル 2 となる。むだな反射・屈折計算を防ぐために最大反射・屈折回数の設定がある。

< max_trace_level の構文 >

global_settings { [ max_trace_level INTEGER ] }
global_settings グローバル設定のキーワード
max_trace_level INTEGER 反射・屈折回数の最大値の設定 [デフォルト:5 ]

(a) max_trace_level 5(デフォルト) (b) max_trace_level 11
図4.7 最大反射・屈折回数による違い

上記の図は、光がガラス板を最大5枚通過する。max_trace_level 5(デフォルト)では、ガラス板2枚まではOKである。それ以上になる場合は、max_trace_level による調節が必要になる。ガラス板における単純な光の通過であれば、max_trace_level = ガラス板の枚数 * 2 + 1 を基本に考える。

//------------------Fig. 4.7a/b max_trace_level #version 3.7 #include "colors.inc" #include "textures.inc" global_settings{ assumed_gamma 2.2 // max_trace_level 5 // <<<--(default)-a-- max_trace_level max_trace_level 11 // <<<------------b-- max_trace_level } camera{ location<1.2,-2.2,1> sky<0,0,1> right <-image_width/image_height,0,0> look_at<1.2,0,1> } light_source {<300,-100,1000> color White*0.5} light_source {<300,-200,1000> color White*0.5} background{color White*1.5} sky_sphere{ pigment{ wrinkles color_map{ [0.3 color rgb<0.5,0.5,1.0>] [0.5 White] } scale 0.2 } } //------------------------------glass #declare R=0.05; #declare C=0; #while (C<5) box{0,1 //--------------------glass material{M_Green_Glass} scale<1+C*0.5,0.1,2> translate <0,C*0.5,0> } #declare CX=1+C*0.5; #declare CY=C*0.5; sphere_sweep { linear_spline 5 <0,CY,0>,R <CX,CY,0>,R <CX,CY,2>,R <0,CY,2>,R <0,CY,0>,R pigment{White*1.2} finish{phong 1 reflection 0.5} } #declare C=C+1; #end //---------------------------------------floor #declare CA=rgb<1.0,1.0,0.7>*0.8; #declare CB=rgb<0.7,0.3,0.1>*0.5; plane{z,0 pigment{checker CA CB scale 0.3} finish{phong 1 reflection 0.5} clipped_by{sphere{0,5}} }

4.8 波紋の数(number_of_waves)

waves と ripples のパターンはシーンの中にいくつもの波紋を生成する。number_of_waves はこれらのパターンによって生じる波紋の中心の個数を設定する。この値は1つのシーン内のすべての waves と ripples に適用される。パターンごとに設定することはできない。

▷「13.1-40 波(waves)」▷「13.1-31 波紋 (ripples)」 参照

< number_of_waves の構文 >

global_settings { [ number_of_waves INTEGER ] }
global_settings グローバル設定のキーワード>
number_of_waves INTEGER 波紋の中心の個数の設定 [デフォルト:10 ]

 


(End) 4.グロ-バル設定