finishで光の反射やハイライトを設定する


身の回りのものとみると,金属やプラスチック,木や紙など,それぞれ材質によって表面の反射やハイライトが違っているのがわかると思います。finish{ }内では,オブジェクトのそのような光の反射やハイライト,環境光などについて設定できます。まずは光の反射とハイライトについてみていきましょう。


光の反射とハイライト

光の反射とハイライトに関する設定には次のような指定ができます。デフォルト値とともに示します。

finish {
 diffuse 0.6 //拡散反射
 reflection { 0.0 } //鏡面反射
 phong 0.0 //ふつう0から1の間で指定する
 phong_size 40 //ふつう1から250の間で指定。phongの値が0だと意味なし
 specular 0.0 //ふつう0から1の間で指定する
 roughness 0.05 //specularの値が0だと意味なし
}

拡散反射と鏡面反射〜diffuseとreflection

上から2行が反射に関する指定です。身の回りにあるものは全て,光を反射することによって目で見ることができています。diffuse(拡散反射)とreflrection(鏡面反射)の両方を0にすると,光を反射しない設定になってしまいますので,オブジェクトが真っ黒になってしまいます。reflrection(鏡面反射)は,鏡とか磨きあげられた金属などのような,表面が非常に滑らかなものを表現するときに使います。値を大きくするほど周囲が映り込んできます。reflrection(鏡面反射)を使うとき,ほとんどの場合diffuse(拡散反射)と一緒に指定します。

拡散反射や鏡面反射などのことばについて詳しく知りたい方は,検索エンジンなどで調べてみて下さい。検索すると結構出てきます。

ハイライト〜phongとspecular

オブジェクト表面のハイライトは,phongまたはspecularで指定します。これらは厳密には違いがあるようですが,どちらもにたような結果になります。phongではphong_size,specularではroughnessでハイライトの大きさを指定します。

プラスチック等では,ハイライトの色はオブジェクトの色に関係な光源の色になります。ところが金属の場合は,光源の色ではなくオブジェクトの色になります。デフォルトではハイライトの色は光源の色になっていますので,金属の質感にしたいときには「metallic」というオプションを追加します。

 finish {
  diffuse 0.7
  phong 0.75
  phong_size 80
  reflection {0.25}
  metallic
 }

いくつかサンプル画像をつくりましたので,ご覧下さい。


環境光〜ambient

finishに何も指定しないでレンダリングすると,例えば次のような画像ができます。

この画像では,球体の陰の部分が真っ黒になっています。身の回りにあるものを見てみると,このように陰の部分が真っ黒ということはまずありません。暗いところも多少は見えているはずです。上のような状況なら,床に反射した光が球体の陰の部分を照らすからです。ambient(環境光)を使うと,それを手っ取り早く表現できます。

 finish {
  ambient 0.3
 }

ambientのサンプル画像はこちらをご覧下さい。


戻る