小林 未知数の備忘録
povray

PovRayメモ

  •                 sphere{
                      <x,y,z>, // 中心
                      r // 半径
                      pigment{}
                      finish{}
                    }
  • 円柱

                    cylinder{
                      <x,y,z>, // 底面の座標
                      <x,y,z>, // 上面の座標
                      r // 半径
                      open // これを加えると両端面が取り除かれる
                      pigment{}
                      finish{}
                    }
  • 円錐 (矢印の先端を作るのに用いる)

                    cone{
                      <x,y,z>, // 底面の座標
                      r // 底面の半径
                      <x,y,z>, // 上面の座標
                      r // 上面の半径
                      open // これを加えると両端面が取り除かれる
                      pigment{}
                      finish{}
                    }
  • 線分(複数の球体をつなげる)

                    object{
                      sphere_sweep{
                        linear_spline, // 球のつなげかた。他にもcubic_splineやb_splineがある
                        n, // 球の数
                        <x,y,z>, // 球1の座標
                        r // 球1の半径
                        <x,y,z>, // 球2の座標
                        r // 球2の半径
                        ...
                        pigment{}
                      }
                      finish{}
                    }
  • 等値面

                  object{
                    isosurface{
                      function{f(X,Y,Z)} // f(X,Y,Z)=0が表示される
                      contained_by{box{<x1,y1,z1>,<x2,y2,z2>}}, // 表示領域
                      open // これをつけると開曲面となる
                      accuracy // 精度
                      max_gradient // 表示する立体の傾きの最大値
                      pigment{}
                    }
                    finish{}
                  }
  • 媒介変数を用いた曲面

                  object{
                    parametric{
                      function{x(u,v)},
                      function{y(u,v)},
                      function{z(u,v)},
                      <u1,v1>,<u2,v2>
                      contained_by{box{<x1,y1,z1>,<x2,y2,z2>}}, // 表示領域
                      accuracy // 精度
                      max_gradient // 表示する立体の傾きの最大値
                      pigment{}
                    }
                    finish{}
                  }
  • 色の取り扱い

    • color rgbf <赤,緑,青,フィルタ (元色に近い色を通し、離れた色を通さない) >
    • color rgbt <赤,緑,青,透明度 (全ての色を通す) >
    • color rgbft <赤,緑,青,フィルタ,透明度>
  • 仕上げの取り扱い

    • ambient n([0:1]) : 各テクスチャに与える明るさ、あるいは色 (rgb <r,g,b>) を指定することもできる
    • diffuse n([0:1]) : 拡散反射率
    • brilliance n([0:1]) : 光沢
    • crand n([0:1]) : 粗さ
    • phong n([0:1]) : 鏡面反射によって光源が映り込む明るい部分 (ハイライト) の強さ
    • phong_size n([1:250]) : ハイライトのサイズ
    • specular n([0:1]) : 鏡面ハイライトの強さ
    • roughness n([0.0005:1]) : 鏡面ハイライトのサイズ
    • metallic n([0:1]) : 金属表面ハイライトの強さ
    • 他にもreflection (鏡面反射) 、refraction (屈折)、irid (虹色) があるが使ったことがない
  • よく使うカラーマッピング

                    pigment{
                      function{f(X,Y,Z)} // 0 < f < 1となる関数
                      color_map{[0 color Blue] [0.33 color Green] [0.66 color Yellow] [1 color Red]}
                    }
  • 背景画像を透明にしてpng出力をする

                    background{rgbt<0,0,0,1>}
    としておいて、出力の際に+FNと+UAを付ける。例えば
                    povray hoge.pov +FN +UA
  • 出力画像のサイズ指定

    例えば500x400の画像の場合
                    povray hoge.pov +H500 +W400
  • 繰り返し構文の例

                  #declare Q=0;
                  #declare dQ=0.01;
                  #while (Q<100)
                    #declare P=Q*dQ;
                    Pを使ってやりたいこと
                    #declare Q=Q+1;
                  #end
  • 影が気になる

    Povrayは光源と物体の位置によって、物体の影が別の物体に映ることがある。これが気になる場合、影を映す方の物体にno_shadowを与えることによって、影が映るのを防ぐことができる。
  • カメラの縦横比を揃える

                  location <カメラの位置>
                  look_at <見る位置>
                  right <0,1,0>
                  up <0,0,1>