mikeo_410


スペキュラ、発光

  金色や鏡面など、ピクセルの色ではない物体の表面の「色」の情報があることがわかってきました。物体の表面の表現はレンダラー(3D描画エンジン)の問題で、BlenderにはBlenderの、XAMLにはXAMLのレンダラーがあります。
  BlenderやPOV-Rayで図を描いても、確実にWPFに持ってくることができるのは形状データで、それ以外は相互のレンダラーを良く知っていないと変換できないものだとわかってきました。
  WPFでは、スペキュラ、発光をどう描くのか見てみます。

  ここにリンクしていたソースがなくなったので、「スペキュラ、発光のサンプル」に代わりになるものを作りました。 

スペキュラ

  <SpecularMaterial> では、ブラシとSpecularPowerの値を設定します。
  ブラシの色は、色そのものではなく、別に指定する描画ブラシの色に対して演算される値のようです。
  SpecularPowerの値でハイライトの範囲が変わります。ただし、デフォルト値や有効範囲はわかりません。

発光

  <EmissiveMaterial> では、ブラシが指定できます。
  物体は、別に指定する描画ブラシの色で描画されますが、影の部分に効果があるようです。
 

金色、銀色

  左図がPOV-Rayの金色と銀色の輪です。
  右は、XAML で似たようなものを描いてみました。

POV-Rayのスクリプト

  1. #include "colors.inc"  
  2. #include "metals.inc"    
  3. global_settings { charset utf8 }
  4. camera { location <0,2,3> right <-0.9975,0,0> look_at <0, 2, 0> } 
  5. light_source {<-2,3,5> White parallel}   
  6.     
  7. object
  8. {  
  9.   torus{0.5,0.2 texture {T_Gold_1A}} rotate <60,0,0> translate <-0.8,2,0>
  10. }  
  11. object
  12. {  
  13.   torus{0.5,0.2 texture {T_Silver_1A}} rotate <60,0,0> translate <0.8,2,0>
  14. }

XAML

POV-Rayの金色の定義

T_Gold_1A の色は、以下のように定義されています。
#declare GoldBase = <1.00, 0.875, 0.575>;
#declare CVect1 = GoldBase  - <0.00, 0.20, 0.40>;
効果オプションは、式で書かれているので、golds.inc を見てください。
 

POV-Rayの銀色の定義

T_Silver_1A の色と効果は以下のような値でした。
#declare P_Silver1   = color rgb <0.94, 0.93, 0.80>;
#declare F_MetalA  =
finish {
    ambient 0.35
    brilliance 2
    diffuse 0.3
    metallic
    specular 0.80
    roughness 1/20
    reflection 0.1
}


mikeo_410@hotmail.com