4. グロ−バル設定


4. グロ−バル設定(global_settings)

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

< 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... } ]

 }

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を指定する。 ⇒「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(システム)から選択する。[デフォルト:asc ]
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.フォトンマッピング」

※ 各パラメータはすべてオプションであり、どんな順序で指定してもよい。

※ 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

    }


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

反射表面が多いシーンでは鏡面の相互反射(鏡を2枚向かい合わせたときのような反射の繰り返し)が起きることがある。 その場合、光はreflection(反射率)の値に比例して次第に減衰していくが、この鏡面反射をすべて計算するとレンダリングが非常に遅くなってしまう。 このような場合、判別できないほど減衰した光について計算することは無意味であるため、適当なところで反射計算を終了させた方が効率的である(屈折に関しても同様である)。 POV-Rayでは反射・屈折計算の精度を制御するためにADC(Adaptive Depth Control)というシステムを使用しており、グローバル設定のadc_bailoutの設定によって、反射・屈折光がどこまで減衰したら計算を終了するかを指定することができる。

< adc_bailout の構文>


 global_settings { 

   [ adc_bailout FLOAT ]

 }

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

通常は上記のデフォルト値が最も適切であり、これより値を小さくしても24ビットのイメージでは表示できないため、変更する必要はない。

adc_bailout 0.5 adc_bailout 0.0039
図4.1 adc_bailoutの値による鏡面反射の違い

図4.1は2枚の鏡を直角に置いたときの鏡面反射の例である。 この場合、adc_bailout 0.5(左)では反射光がもとの光の0.5つまり50%まで減衰した時点で反射計算を終了しているため、鏡面の相互反射は表現されない。 右側の図はデフォルト値0.0039の状態で、この場合はかなり精密に表現される。

※ adc_bailout 0と設定するとADCは無効になり、生成される光線の数の最大値は完全に max_trace_levelに依存する。 ⇒「4.7 max_trace_level」参照。

※ ADCは減衰する光に対して働くため、完全な鏡面や完全に透明な表面ではあまり効率 的ではない。


4.2 環境光(ambient_light)

ambient_lightは、シーン全体の環境光の色と強さを制御する。 環境光とは、直接光が物体や大気などで反射・散乱された間接光のことであり、これによって物体の陰の部分もわずかに明るくなる。 しかし実際の環境光を計算するのは難しいため、通常は物体に一定量の光を与えることで表現することが多い。 POV-Rayでは、シーン全体の調整する環境光の係数(ambient_light)と個々に設定する環境光の強さ(ambient)の2つで環境光が決まる。

※ 物体の環境光については「12.3 フィニッシュ」「12.3-1 環境光」を参照せよ。

< ambient_light の構文>


 global_settings { 

   [ ambient_light COLOR ]

 }

global_settings グローバル設定を指定するキーワード
ambient_light COLOR 全体の環境光の強さを調整する係数、 0以上の値で指定 [デフォルト: color rgb <1,1,1> ](調整なし)

実際に各物体に適用される環境光はグローバル設定のambient_lightとフィニシュのambientを掛け合わされたものとなる。グローバル設定のambient_lightは全体の環境光を調整する係数の役割であるため、デフォルトが1となっている。フィニシュのambientのデフォルトは0.1である。環境光は次式となる。

AMBIENT = FINISH_AMBIENT * GLOBAL_AMBIENT

グローバル設定の環境光を調整することで、シーンに様々な効果を与えることができる。


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専用になってしまうことに注意する。インターネット等で公開するときにはPCで見るとは限らない。


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

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

※ ハイトフィールドについては「11.1-17 ハイト・フィールド」を参照せよ。

< 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-6 虹色」を参照せよ。

< 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 " というメッセージがあった場合は、このパラメータの値を大きくしたほうがよい。 再度レンダリングして " I-Stack Overflows " が残ったままであれば、メッセージが出なくなるまでこの値を大きくせよ。


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

max_trace_levelは反射・屈折回数(トレース・レベル)の最大値を指定する。 これは、簡単にいえば1つの光線が連続して反射(または屈折)する回数を指定することである。 例えば、光線が反射面に当たったとき、その面が反射面であることを表すための別の光線が生じる。 このときトレース・レベルは1となる。 この光線がさらに別の反射面に当たって新たな光線を生じればトレース・レベル2となる。 屈折に関しても同様である。

< max_trace_level の構文>


 global_settings {

   [ max_trace_level INTEGER ]

 }

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

※ トレース・レベルがmax_trace_levelよりも大きくなると、その部分は真っ黒になってしまう。 図4.7はガラスを5枚並べた例である。 この例では、屈折面の数に対してmax_trace_levelが小さすぎたために黒い部分が生じている。 反射・屈折表面の中にこのような黒い部分が現れたときは、max_trace_levelを大きくせよ。

max_trace_level の値は制限されていないため、時間とメモリが許す限りどんな値にでも設定できるが、あまり大きくしすぎると " I-Stack Overflow "やプログラムのクラッシュの原因となる場合があるため、注意すべきである(adc_bailoutとともに使用するとある程度は効率的になる)。

※ adc_bailout 0と設定するとADCは無効になり、生成される光線の数の最大値は完全にmax_trace_levelに依存する。 ⇒「4.1 adc_bailout」参照。

図4.7 max_trace_levelが小さすぎる場合に生じる黒い部分


4.8 波紋の数(number_of_waves)

wavesとripplesのパターンはシーンの中にいくつもの波紋を生成する。 number_of_wavesはこれらのパターンによって生じる波紋の中心の個数を決定するために使用する。

波(waves)波紋(ripples)については「13.1 パターン・タイプ」を参照せよ。

< number_of_waves の構文>


 global_settings {

   [ number_of_waves INTEGER ]

 }

global_settings グローバル設定を指定するキーワード
number_of_waves INTEGER 波紋の中心の個数の指定。 [デフォルト:10 ]

※ この値は1つのシーン内のすべてのwavesとripplesに適用される(パターンごとに設 定することはできない)。