POV-Rayの基礎


シーンファイル

座標系は左手系。

         y
         |
         |
         +---------z
        /
       /
      x

各軸回りの回転は、回転軸の正の方向からみて右回り。

座標変換は3種類
    平行移動 translate <x, y, z>  それぞれの軸方向の変位を指定する
    拡大縮小 scale <x, y, z>  それぞれの軸方向の倍率を指定する
    回転     rotate <x, y, z> それぞれの軸の回りの回転角度を指定する
                回転の順番は x軸→y軸→z軸の順番

平面の向きは法線で決まる。法線の向いている側が表。

色はRGB, CMY, HSV, 名前などで指定できる。RGBの指定の場合は
    color rgb <r, g, b>  Red,Green,Blue要素それぞれを0〜1.0の間で指定する


シーンは次の3つの要素から成る。
    オブジェクト(物体)
    ライト(光源)
    カメラ

オブジェクトは次の2つの要素から成る。
    形状
    質感

質感は次の2つの要素から成る。
    テクスチャ(物体表面の質感)
    インテリア(物体内部の状態)

形状は次の2つの要素から成る。
    ソリッドプリミティブ (中身が詰まっている)
    パッチプリミティブ (表面だけで中身がない)

ソリッドプリミティブの例
    blob,box,cone,cylnder,height_field,julia_fractal,lathe,prism,sphere,
    superellipsoid,sor,text,torus,plane,poly,quadric,cube,quartic

パッチプリミティブの例
    bicubic_patch, disc, mesh, polygon, triangle, smooth_triangle

CSG (Constructive Solid Geometry)操作は5種類
    Union
    Merge
    Difference
    Intersection
    Inverse

Unionの記述方法
    union {
        物体の指定
        物体の指定
        ...
    }
Mergeの記述方法
    merge {
        物体の指定
        物体の指定
        ...
    }
Differenceの記述方法
    difference {
        くり抜かれる元の物体の指定
        くり抜く物体の指定
        くり抜く物体の指定
        ...
    }
Intersectionの記述方法
    intersection {
        物体の指定
        物体の指定
        ...
    }
Inverseの記述方法
    object {
        形状の指定
        inverse
    }

テクスチャは次の3つの要素から成る。
    pigment (ピグメント、色に関すること)
    finish (フィニッシュ、光の反射や屈折に関すること)
    normal (ノーマル、表面の細かい凹凸に関すること)

テクスチャの記述方法
    texture {
        pigment {
            色に関する指定
        }
        finish {
            反射や屈折に関する指定
        }
        normal {
            小さな凹凸に関する指定
        }
    }

テクスチャの平行移動/拡大縮小/回転
    texture {
        pigment {
            色に関する指定
        }
        finish {
            反射や屈折に関する指定
        }
        normal {
            小さな凹凸に関する指定
        }
        テクスチャ全体の平行移動/拡大縮小/回転を指定
    }


ピグメントの記述方法
    pigment {
        color rgb <r, g, b>      r,g,bはそれぞれ0〜1.0の間の数値
        color rgbf <r, g, b>     フィルタの指定(省略可能)
        color rgbft <r, g, b>    トランスミットの指定(省略可能)
    }

ピグメント
    単色でベタ塗り(solid color pigment)
      pigment {
          color 色の指定
      }
    複数色の組合せ
        一定のパターンで塗り分け(color list pigment)
          pigment {
            brick color 色の指定, color 色の指定
          }
          pigment {
            checker color 色の指定, color 色の指定
          }
          pigment {
            hexagen color 色の指定, color 色の指定, color 色の指定
          }
        一定のパターンで滑らかに塗り分け(colormap)
          agate(めのう)        bozo(ボウゾウ)      abumps(凸凹)
          crackle(細かいひび)  dents(くぼみ)       gradient(勾配)
          granite(花崗岩)      leopard(豹柄)       mandel(マンデル)
          marble(大理石)       onion(タマネギ)     quilted(キルト)
          radial(放射)         ripples(波紋)       spiral1(螺旋1)
          spiral2(螺旋2)       spotted(スポット)   waves(波)
          wood(木)             wrikles(しわ)
    イメージマップ
      pigment {
        image_map {
          画像ファイルの形式    "画像ファイル名"
          map_type   数値
            ...
        }
      }


map_typeの指定
    map_type 0     平面マッピング
    map_type 1     球面マッピング
    map_type 2     円筒状マッピング
    map_type 3     ドーナツ状マッピング

ピグメントの中でもピグメントは使える
    colorキーワードで指定する「色」の代わりに「ピグメント」が使える
    例
      pigment {
        brick
        pigment { ピグメントの記述 }
        pigment { ピグメントの記述 }
      }
ピグメントも平行移動/拡大縮小/回転できる
    例
      pigment {
        ...
        ピグメント全体の平行移動/拡大縮小/回転を指定
      }


反射や屈折の指定はフィニッシュ(finish)

フィニッシュ(finish)
    鏡面反射に関すること
    拡散反射に関すること
    ハイライトに関すること
    環境光に関すること
    その他の特殊なもの

鏡面反射の設定
  物体の滑らかな表面でそのまま反射した光
  例
  finish {
    reflection  数値  ←数値は0.0〜1.0の間。
  }

拡散反射の設定
  物体表面の小さな凹凸で乱反射した光
  例
  finish {
    diffuse  数値  ←数値は0.0〜1.0の間。(デフォルト値は0.6)
  }
  または
  finish {
    diffuse  数値  ←数値は0.0〜1.0の間。(デフォルト値は0.6)
    brilliance  数値←数値は1より大きくても可。(デフォルト値は1)
  }

ハイライトの設定
    滑らかな物体で鏡面反射した光がちょうど目に入って特に明るく見えること
    例
    finish {
      phong  数値 ←数値は0.0〜1.0の間
      phong_size  数値  ←数値は1〜250程度。デフォルト値は40
    }
    または
    finish {
      specular  数値 ←数値は0.0〜1.0の間
      roughness  数値  ←数値は0.05〜1.0程度。デフォルト値は0.05
    }

環境光の設定
    空気による乱反射によって光が直接当たっていない部分も薄暗く見えること。
    これを利用して、発光物体を表現することも可能。
    例
    finish {
      ambient 数値 ←数値は0.0〜1.0の間。デフォルト値は0.1
    }
    または
    finish {
      ambient 色の指定
    }
「その他の特殊なもの」の設定
    irid(薄膜干渉) ... 真珠の表面に見える虹色の模様
    crand(細かいくぼみ) ... コンクリートの表面のような細かい凸凹



小さな凸凹の指定はノーマル(normal)
    平面の法線のことをノーマルと言います。
    法線の方向を変化させることで表面の凸凹を表現します。

ノーマル
    最も基本的な凸凹パターン(傾斜マップは使えない)
    凸凹を自分で指定できるパターン(傾斜マップを使う)←説明は省略
    バンプマップ

ノーマルの「最も基本的な凸凹パターン(傾斜マップは使えない)」の設定方法
    normal {
      パターン名   数値
    }
   パターン名は次の種類がある。
      bumps(凸凹) dents(窪み) ripples(波紋) waves(波)  wrinkles(皺)  
      quilted(キルト) brick(レンガ) checker(チェッカー) hexagon(六角形)

ノーマルの「バンプマップ」の設定方法
    画像ファイル(GIF,JPG,IFF,PPM,PGM,PNG,SYS)で凸凹の状態を表現する。
    normal {
      bump_map {
        画像ファイルの形式   "画像ファイル名"
        bump_size   数値   ←0.1〜1.0程度。凸凹の具合を指定。
        bump_type   数値   ←マッピングの種類(0=平面,1=球面,2=円筒,5=ドーナツ)
        ...
      }
    }

ノーマルの平行移動/拡大縮小/回転
    normal {
      ...
      ノーマル全体の平行移動/拡大縮小/回転
    }


---------------------インテリアで設定するもの---------------------------
屈折の設定
    例
    interior {
      ior   屈折率  ←デフォルト値は1。大きくすると効果がでる。水は1.3
    }
    または
    interior {
      ior   屈折率  ←デフォルト値は1。大きくすると効果がでる。水は1.3
      fade_distance  数値  ←光の強さが物体の中で半分になる距離
      fade_power  数値   ←光の弱まり方の様子を1(緩)〜2(急)の間の数値で指定。
    }

caustics(火線) ... プールの底にゆらゆら映る光の模様


-----------------------------------照明------------------------------
シーンファイルの中での照明の記述方法。
    light_source {
      各種照明の設定をする
    }

照明は4種類
    点光源
    スポットライト
    面光源
    円筒状光源


点光源
    もっとも基本的な照明。あらゆる方向を照らす。
    light_source {
      ライトの位置
      color  ライトの色
    }
    例
    light_source {
      <10, 15, 20>
      color  White * 0.5
      area_light   <14,0,0>, <0,6,0>, 7, 3
    }
面光源(エリアライト)
    面の形に点光源を並べたもの。影のふちをぼんやりさせる効果がある。
    light_source {
      ライトの位置
      color        ライトの色
      area_light   面の横方向,面の縦方向,横方向の数,縦方向の数
    }
    例
    light_source {
      <10, 15, 20>
      color  White * 0.5
    }
スポットライト
    点光源だが照らす方向を制限できる。
    light_source {
      ライトの位置
      color       ライトの色
      spotlight
      point_at    照らす位置
      radius      完全に明るく照らす角度
      falloff     完全に暗くなるまので角度
      tightness   暗くなっていく様子(1〜100程度の数値、デフォルトは10)
    }
    例
    light_source {
      <10, 15, -20>
      color       White
      spotlight
      point_at    <2, 0, 4>
      radius      30
      falloff     45
    }
円筒状光源
    光の「軌跡」が円筒状になっている光源。
    他はスポットライトと同じ。平行光線ではない。
    light_source {
      ライトの位置
      color       ライトの色
      spotlight
      point_at    照らす位置
      radius      完全に明るく照らす角度
      falloff     完全に暗くなるまので角度
      tightness   暗くなっていく様子(1〜100程度の数値、デフォルトは10)
    }

光源を見えるようにする
    light_source {
      今まで通りに光源を設定する
      looks_like {
        光源を割り当てる物体の形状
        texture {
          ..
          finish { ambient   大きめの数値   } ←0.7〜1.0ぐらいだと「輝く」
          ..
        }
      }
    }

よりリアルな照明のために
    距離が離れるにしたがって光が弱まる様子を表現するには
    light_source {
      ...
      ...
      fade_distance  colorで指定した通りの明るさになる距離
      fade_power     変化の度合を表す数値←1.0(緩)〜2.0(急)の間の数値。
    }

    光の減衰の度合 = 1/(1 + (光の進んだ距離 / fade_distance)^fade_power)


-----------------------------------カメラ------------------------------
カメラの記述方法
    cameara {
      location  カメラを置く位置
      look_at   レンズで狙う角度
      angle     撮影する範囲(角度)
    }
    例
    cameara {
      location  <5, 5, -20>
      look_at   <0, 0, 0>
      angle     20
    }

angleの数値を大きくし過ぎると周辺部が歪んで撮影されてしまうので注意する。

画像の縦横比を変更するにはカメラの指定の中のupとrightで行う。
    レンダリング条件でサイズを指定しても、もとの画像を無理矢理伸ばしたもの
    にしかならないことに注意。
    cameara {
      location  カメラを置く位置
      right     <横の比, 0, 0>
      up        <0, 縦の比, 0>
      look_at   レンズで狙う角度
      angle     撮影する範囲(角度)
    }
    例
    cameara {
      location  <5, 5, -20>
      look_at   <0, 0, 0>
      angle     20
    }