12.3 フィニッシュ(finish)

フィニッシュとは仕上げのことであり、 物体表面の光の反射の特性を指定することによって物体の質感を表現するものである。

< finish の構文>


 finish {

   [ FINISH_IDENTIFIER ]

   [ AMBIENT_ITEM ]

   [ DIFFUSE_ITEM ]

   [ HIGHLIGHT_ITEM ]

   [ REFLECTION_ITEM ]

   [ REFRACTION_ITEM ] 

   [ IRIDESCENCE_ITEM ]

 }

finish フィニッシュを指定するキーワード
FINISH_IDENTIFIER フィニッシュ識別子の指定
AMBIENT_ITEM 表面に与える環境光の設定  ⇒「12.3-1 環境光」
DIFFUSE_ITEM 表面の拡散反射の設定、拡散反射率(diffuse)、光沢(brilliance)、粗さ(crand)が指定できる。 ⇒「12.3-2 拡散反射」
HIGHLIGHT_ITEM 表面に生じるハイライトの設定、フォン・ハイライト(phong)と鏡面ハイライト(specular)が使用できる。 ⇒「12.3-3 ハイライト」
REFLECTION_ITEM 表面の鏡面反射の設定、 物体表面を鏡のようにすることができる。 ⇒「12.3-4 鏡面反射」
REFRACTION_ITEM 旧バージョンの透明物体の光の透過に関する設定なので、使用しないこと。⇒屈折率は「12.11 インテリア」で設定する。
IRIDESCENCE 表面をおおう薄膜の効果の設定  ⇒「12.3-6 虹色」

※ 各パラメータはすべてオプションであり、指定されないパラメータにはデフォルト値が 使用される。

※ 各パラメータは、最後に指定したものが適用される。
フィニッシュはピグメントと同様にtexture{}を省略して物体に直接指定することができる。

例)

          //これは...                            //このように短くできる...

          object {                               object {

            My_Object                              My_Object

            texture {                              pigment {color Purple}

              pigment {color Purple}               finish {phong 0.3}

              finish {phong 0.3}                 }

            }

          }


12.3-1 環境光(ambient)

環境光とは、光源の光が物体などによって散乱された間接光のことである。これは空間の至る所に散乱され、直接光がとどかない影の部分にもわずかに明るさを与える。 環境光を実際に計算することは非常に難しいため、POV-Rayでは各テクスチャに(実際にそのテクスチャが照明されているかどうかに関わらず)わずかな明るさを与えることで環境光を表現する。

< ambient の構文>


 finish {

   [ ambient COLOR ]

 }

finish フィニッシュを指定するキーワード
ambient COLOR 物体表面の環境光の指定、 通常0.0〜1.0 であるがどんな値でも使用でき、色を指定することもできる。 [デフォルト:0.1 ]

※ 環境光は影と影でない範囲の両方に影響するため、ambient の値を大きくする場合は diffuse の値とのバランスを考慮すべきである。

※ ambient は物体の周囲を囲むものの色の影響を処理することができない。 例えば、壁、 床、天井がすべて赤い部屋の中では、白い服は反射した光によって実際はピンクに見え るが、POV-Rayのambientはこれを表現することができない。

実数の代わりにカラー名またはカラー・ベクトルを指定することによって、環境光に色を付けることができる。

例) finish { ambient rgb <0.3,0.1,0.1> } // ピンクの環境光

global_settingのambient_lightを使って、物体の環境光を計算するときに使用されるシーン全体の環境光源を指定することもできる。 ⇒「4.2 環境光源」

図12.3-1はdiffuse 0.6の場合のambientの値による表面の違いを表している。 値を大きくすると全体が明るくなり、陰の部分にも光が当たっているように見えるようになる。

図12.3-1 環境光


●環境光の例(図12.3-1)



     sphere{0,1           // 左の球 

       pigment{color rgb<1,1,0>}

       finish{ambient 0.1}

       translate x*-1.2

     }



     sphere{0,1           // 右の球 

       pigment{color rgb<1,1,0>}

       finish{ambient 0.5}

       translate x*1.2

     }


12.3-2 拡散反射(diffuse)

物体表面での光の反射には2種類あり、鏡面反射と拡散反射と呼ばれる。 鏡面反射とは、光の入射角と反射角が等しい反射のことで、非常に滑らかな表面で起きる。 拡散反射とは、表面の非常に細かい凹凸によって光が全方向に散乱される反射のことで、通常の反射光は大部分がこの反射によるものである。

POV-Ray では拡散反射の成分として、拡散反射率、光沢、粗さが指定できる。

< diffuse の構文>


 finish {

   [ diffuse FLOAT ]

   [ brilliance FLOAT ]

   [ crand FLOAT ]

 }

finish フィニッシュを指定するキーワード
diffuse FLOAT 拡散反射率の指定、 光源からの直接光の強さに対する拡散反射光の強さの割合を制御する。 通常0.0〜1.0であるがどんな値でも使用できる。 [デフォルト:0.6 ]
brilliance FLOAT 表面の光沢の指定、 入射角による拡散反射光の減衰率を制御する。 値を小さくすると浅い入射角でも拡散反射が起こりやすくなる。 また値を大きくすると金属的になる。 brillianceにはどんな値でも使用できる。 [デフォルト:1 ] この効果はハイライトとともに使用すると効果的である。
crand FLOAT 表面の粗さの指定をする。 直接照明の拡散反射の中にランダムに細かい影を作り、石やコンクリートなどのざらざらした表面を表現する。 通常0.01〜0.5程度であるが、どんな値でも使用できる。 [デフォルト:0 ]
※ この効果は視点と物体との距離に関係なく同じように見える。
※ 表面の細かい影はランダムに変わるため、アニメーションでは表面上にちらつきが生じるのでこの効果は使用しない方がよい。

図12.3-2aはambient 0.1の場合のdiffuseの値による表面の違いを表している。 ambientと違い、値を大きくすると直接光が当たる部分だけが明るくなる。

図12.3-2a 拡散反射率


●拡散反射率の例(図12.3-2a)



     sphere{0,1           // 左の球 

       pigment{color rgb<1,1,0>}

       finish{diffuse 0.6}

       translate x*-1.2

     }



     sphere{0,1           // 右の球 

       pigment{color rgb<1,1,0>}

       finish{diffuse 1.0}

       translate x*1.2

     }

図12.3-2bはハイライトとしてspecular 0.7を指定した場合のbrillianceの値による表面の違いを表している。

図12.3-2b 光沢


●光沢の例(図12.3-2b)



     sphere{0,1           // 左の球 

       pigment{color rgb<1,1,0>}

       finish{brilliance 1.0 specular 0.7}

       translate x*-1.2<

     }



     sphere{0,1           // 右の球 

       pigment{color rgb<1,1,0>}

       finish{brilliance 3.0 specular 0.7}

       translate x*1.2

     }

図12.3-2cはcrandの指定による表面の違いを表している。 無数の細かい陰を与えることによって表面の粗さを表現する。

図12.3-2c 粗さ


●粗さの例(図12.3-2c)



     sphere{0,1           // 左の球 

       pigment{color rgb<1,1,0>}

       finish{crand 0.0}

       translate x*-1.2

     }



     sphere{0,1           // 右の球 

       pigment{color rgb<1,1,0>}

       finish{crand 0.3}

       translate x*1.2

     }


12.3-3 ハイライト

ハイライトとは、鏡面反射によって光源が映り込むことで物体表面に生じる明るい部分のことである。 ハイライトを正確に表現するためには、表面の無数の極小面(細かい凹凸)の鏡面反射を計算しなければならないが、POV-Rayではこの計算を行わずに、鏡面(specular)とフォン(phong)という2種類のモデルを使って簡易的にハイライトを表現する。

<ハイライトの構文>


 finish {

   [ phong FLOAT ]

   [ phong_size FLOAT ]

   [ specular FLOAT ]

   [ roughness FLOAT ]

   [ metallic [ FLOAT ] ]

 }

finish フィニッシュを指定するキーワード
phong FLOAT フォン・ハイライトの指定、 通常0.0〜1.0であるがどんな値でも使用できる。 phong 1.0 のとき、ハイライトの中心は光源の色になる。 [デフォルト:0 ](ハイライトは生じない)。
phong_size FLOAT フォン・ハイライトのサイズの指定、通常1〜250であるがどんな値でも使用できる。値を大きくするとハイライトは小さく締まって強く輝き、値を小さくすると大きくぼやけて輝きは弱くなる。 [デフォルト:40 ](プラスティック)。※ phong が指定されなければ phong_size は物体に影響を与えない。
specular FLOAT 鏡面ハイライトの指定、 通常0.0〜1.0であるがどんな値でも使用できる。 specular 1.0のとき、ハイライトの中心は光源の色になる。 [デフォルト:0 ](ハイライトは生じない)。
roughness FLOAT 鏡面ハイライトのサイズの指定、 通常 0.0005 〜 1.0 であるがどんな値でも使用できる。値を大きくするとハイライトは大きくぼやけて輝きが弱くなり、値を小さくすると小さく締まって強く輝く。 [デフォルト:0.05 ](プラスティック)。※ specular が指定されなければ roughness は物体に影響を与えない。
metallic [ FLOAT ] phongまたはspecularとともに使用し、金属表面のハイライトを表現する。 ハイライトに物体表面の色を加えることによって、金属的な表面を表現する。 通常はキーワードのみで使用するが、0.0〜1.0の実数値を付けて効果を制御することもできる。[デフォルト:1 ]
※phongまたはspecularが指定されなければmetallic は物体に影響を与えない。

※ 鏡面ハイライトはフォン・ハイライトとほとんど同じであるが、より現実の鏡面反射に近 く、物体の地平線付近に生じるハイライトをより正確に表現する。

※ 鏡面とフォンのハイライトは同時に使用することができるが、通常はどちらか一方だけ を指定する。

図12.3-3aはフォン・ハイライトの指定による表面の違いを表している。

図12.3-3a フォン・ハイライト


●フォン・ハイライトの例(図12.3-3a)



     sphere{0,1           // 左の球 

       pigment{color rgb<1,1,0>}

       finish{phong 0.0}

       translate x*-1.2

     }



     sphere{0,1           // 右の球 

       pigment{color rgb<1,1,0>}

       finish{phong 1.0}

       translate x*1.2

     }

図12.3-3bはphong_sizeの指定による表面の違いを表している。

図12.3-3b フォン・ハイライトのサイズ


●フォン・ハイライトサイズの例(図12.3-3b)



     sphere{0,1           // 左の球

       pigment{color rgb<1,1,0>}

       finish{phong 0.7 phong_size 40}

       translate x*-1.2

     }



     sphere{0,1           // 右の球

       pigment{color rgb<1,1,0>}

       finish{phong 0.7 phong_size 5.0}

       translate x*1.2

     }

図12.3-3cは鏡面ハイライトの指定による表面の違いを表している。

図12.3-3c 鏡面ハイライト


●鏡面ハイライトの例(図12.3-3c)



     sphere{0,1           // 左の球

       pigment{color rgb<1,1,0>}

       finish{specular 0.0}

       translate x*-1.2

     }



     sphere{0,1           // 右の球

       pigment{color rgb<1,1,0>}

       finish{specular 1.0}

       translate x*1.2

     }

図12.3-3dはroughnessの指定による表面の違いを表している。

図12.3-3d 鏡面ハイライトのサイズ


●鏡面ハイライトの例(図12.3-3d)



     sphere{0,1           // 左の球

       pigment{color rgb<1,1,0>}

       finish{specular 0.7 roughness 0.05}

       translate x*-1.2

     }



     sphere{0,1           // 右の球

       pigment{color rgb<1,1,0>}

       finish{specular 0.7 roughness 0.3}

       translate x*1.2

     }

図12.3-3eはmetallicの指定による表面の違いを表している。

図12.3-3e 金属表面のハイライト


●金属表面のハイライトの例(図12.3-3e)



     sphere{0,1           // 左の球

       pigment{color rgb<1,1,0>}

       finish{specular 0.7 metallic 0.0}

       translate x*-1.2

     }



     sphere{0,1           // 右の球

       pigment{color rgb<1,1,0>}

       finish{specular 0.7 metallic 2.0}

       translate x*1.2

     }


12.3-4 鏡面反射(reflection)

鏡面反射とは、光の入射角と反射角が等しい反射のことである。 物体を鏡のような表面にして、周囲の景色を映り込ませることができる。

< reflection の構文>


 finish {

   reflection {

     [ COLOR_REFLECTION_MIN, ]  COLOR_REFLECTION_MAX

     [ fresnel on|off ]

     [ falloff FLOAT_FALLOFF ]

     [ exponent FLOAT_EXPONENT ]

     [ metallic [ FLOAT_METALLIC ] ]

   }

 }

finish フィニッシュを指定するキーワード
reflection 鏡面反射を指定するキーワード
COLOR_REFLECTION_MIN 物体の最小反射率の指定(角度によって反射率が減少する場合に指定できる。)
COLOR_REFLECTION_MAX 物体表面の反射率の指定、 通常0.0〜1.0であるがどんな値でも使用できる。 [デフォルト:0 ](鏡面反射は生じない)。
※ 実数の代わりにカラー名またはカラー・ベクトルを指定することで、反射光に色を付けることができる。
例) finish { reflection rgb <1,0,0> } // 赤い光を反射する鏡面。
fresnel on|off フレネルの反射スイッチ、onで有効にできる。このスイッチを有効にしたときは、インテリアで屈折率を指定する必要がある。[デフォルト:off ]
falloff FLOAT_FALLOFF 反射率の減衰指数を指定する。反射率がn乗して適用される。通常は1.0以上を指定する。
exponent FLOAT_EXPONENT 反射率の指数によるコントロールで、芸術的な表現を目的とした実験的な実装である。[デフォルト:1.0 ]
metallic [FLOAT_METALLIC] 金属のような反射を表現する。0.0〜1.0の実数値で反射光に対する物色の影響の割合を指定することもできる。反射はフレネルの式が使用される。[デフォルト:1.0 ]

※ テクスチャに鏡面を指定すると追加の光線をトレースしなければならなくなるため、レンダリングの時間は長くなる。

図12.3-4は鏡面反射の指定による表面の違いを表している。 右の球には左の球と空、床が映り込んでいる。

図12.3-4 鏡面反射


●鏡面反射の例(図12.3-4)



     sphere{0,1           // 左の球 

       pigment{color rgb<1,1,0>}

       finish{reflection 0.0}

       translate x*-1.2

     }



     sphere{0,1           // 右の球 

       pigment{color rgb<1,1,0>}

       finish{reflection 0.5}

       translate x*1.2

     }


12.3-5 屈折(refraction)

※ 屈折(ior, fade_distance, fade_power, caustics)は、インテリアで設定する。フィニッシュで指定しても旧バージョン互換のため一応動作するが、使用しないこと。 ( 「12.4 インテリア」 を参照)

屈折とは、透明物体の中を光が通り抜けるときに光線の進路が曲げられる現象のことである。 通常 POV-Ray における透明物体は光を屈折させないが、フィニッシュに refraction 1 を加えることで屈折を起こすことができる。

< refraction の構文>


 finish {

   [ refraction FLOAT ]

   [ ior FLOAT ]

   [ fade_distance FLOAT ]

   [ fade_power FLOAT ]

   [ caustics FLOAT ]

 }

finish フィニッシュを指定するキーワード
refraction FLOAT 屈折のスイッチ、 refraction 1またはrefraction onで屈折が起きる。
※ refractionのキーワードは物体を透明にするわけではない。透明の指定はピグメントのfilterまたはtransmitによって行う。
※ 屈折光の明るさはピグメントのfilterまたはtransmitで指定する。
ior FLOAT 屈折率の指定、 どんな値でも使用できる。 [デフォルト:1 ](屈折は起こらない)。
※ 標準インクルードファイルのconsts.incにいくつかの値が定義されているので参照せよ。
fade_distance FLOAT 透過光が減衰する距離の指定。光の強度が1/2になる距離を指定する。
fade_power FLOAT 透過光の減衰特性の指定、現実的な値は1〜2である。 光がどれだけ早く減衰するかを指定する。
caustics FLOAT 透明物体を透過するときに集光される光の指定。 水の入ったグラスがテーブルの上に生じる影のような効果を簡易的に表現する。 値を小さくすると内部反射した屈折光が強くなり、その物体による影の部分が明るくなる。
※ この効果は透明物体の影の範囲にしか生じない。

※ レイヤー・テクスチャでは、refraction と ior のキーワードは最後のテクスチャに指定し なければならない。


12.3-6 虹色(irid)

水たまりの上の油膜や石鹸の泡の表面などの薄膜に生じる虹色を表現することができる。

< irid の構文>


 finish {

   irid {

     AMOUNT

     [ thickness FLOAT ]

     [ turbulence VECTOR ]

   }

 }

finish フィニッシュを指定するキーワード
irid 虹色の縞模様を指定するキーワード
AMOUNT 表面の色に対する虹色の縞模様の効果の強さの指定、 通常0.25(25%)以下で指定するが、どんな値でも使用できる。※ 表面が明るすぎる場合はambientとdiffuseの値を小さくする。
thickness FLOAT 膜の厚さの指定。 値を大きくすると縞模様が細かくなる。
※ このパラメータは物体のスケールに全く反応しない。 物体を拡大する場合は、それに合わせてこの値を調整すべきである。
turbulence VECTOR 縞模様のパターンの乱れの指定。 値を大きくするとパターンの乱れが大きくなる。 [デフォルト:0 ](乱れは生じない)。
※ ここではturbulenceだけしか指定できない。octaves, lambda, omegaの値は自動的に設定される。

このフィニッシュは、光源と表面の間の角度の関数として表面の色を修正する。 その効果は光源と表面の位置と角度に依存するため、ピグメント・パターンとは違った性質を持つ。

バンプ・パターンを使って物体表面に凹凸を表現することによって、さらに変わった効果を与えることができる。

図12.3-6aはthickness 1.0の場合のAMOUNTによる表面の違いを表している。

図12.3-6a 虹色


●虹色の例(図12.3-6a)



     sphere{0,1 // 左の球

       pigment{White*0.8}

       finish{

         irid{0.2 thickness 1.0 turbulence 1.0}

       }

       translate x*-1.2

     }



     sphere{0,1 // 右の球

       pigment{White*0.8}

       finish{

         irid{1.0 thickness 1.0 turbulence 1.0}

       }

       translate x*1.2

     }

図12.3-6bはAMOUNT=1.0の場合のthicknessによる表面の違いを表している。

図12.3-6b 膜の厚さ


●膜の厚さの例(図12.3-6b)



     sphere{0,1           // 左の球

       pigment{White*0.8}

       finish{

         irid{1.0 thickness 0.2 turbulence 1.0}

       }

       translate x*-1.2

     }



     sphere{0,1           // 右の球

       pigment{White*0.8}

       finish{

         irid{1.0 thickness 1.0 turbulence 1.0}

       }

       translate x*1.2

     }


12.3-7 halo

haloは、POV-Ray 3.1で廃止され、Media に置き換わった。詳しくは 「8. メディア」 を参照。