// 質感表現の実験用シーンファイル // finish の効果(パラメータ値による見え方のちがい)を調べるため, // パラメータ値の異なる多数の物体を配置してみる. #include "colors.inc" #include "shapes.inc" // ポーン(チェスの歩兵) #declare Pawn = merge { object { Sphere scale 1.0 translate 3.0*y } object { Cone_Y scale <1.0, 2.0, 1.0> translate 2.0*y } object { Cube scale <1.0, 0.40, 1.0> translate 0.40*y } scale 0.25 } // ポーンを二次元的に整列配置 #declare M = 5; // z 方向(奥行き方向)の個数 #declare N = 5; // x 方向(左右方向)の個数 #declare I = 0; #while ( I <= M ) #declare J = 0; #while ( J <= N ) #declare A = J/N/2; // 環境反射率を 0.0〜0.5 で変化 #declare R = I/M/2; // 鏡面反射率を 0.0〜0.5 で変化 #declare D = 1.0-A-R; // 拡散反射率を 0.5〜1.0 で変化 // とりあえず R+A+D = 1.0 にしたが,そうでなくても良い. // 物体は R+A+D > 1.0 なら明るく,< 1.0 なら暗くなる. object { Pawn pigment { color LightGray } finish { ambient A diffuse D reflection R } translate } #declare J = J + 1; #end #declare I = I + 1; #end // 床平面 object { Plane_XZ pigment { color LightWood } finish { ambient 0.4 diffuse 0.5 reflection 0.1 } } // 座標軸 /* object { Cylinder_X scale 0.05 pigment{color Red} } // x軸 object { Cylinder_Y scale 0.05 pigment{color Green} } // y軸 object { Cylinder_Z scale 0.05 pigment{color Blue} } // z軸 */ // 背景 background { color LightBlue } // 光源 light_source { <25, 50, -100> color White*2.0 parallel point_at <0, 0, 0> } // カメラ camera{ location <5.0, 15.0, -15.0> look_at <0.0, 0.0, 0.0> angle 20 }