「正式な説明は povdoc.txt を読んでください.」ですが,一応,私が理解
している範囲で説明をしてみます.
POVRAYはシーン記述言語(Scene Description Language)により作成した
テキストファイルにしたがってレイトレーシングによりレンダリングを
行います.
ここでは,モデラーなどを使用しないでエディタで直接シーンファイル
をプログラミング感覚で記述する方法を説明します.
シーン記述言語とは何かというと,絵に書く情景を説明するための言葉です.
例えば
「表面が磨かれた青い球が,茶色と黄色のタイル貼りの床の上にある.
白い光が後方から照らし,青い球を斜め上から見ている絵」
という日本語をPOVRAYが理解できる言葉(シーン記述言語)に書き換える必要が
あります.
まず最初に空間の方向(座標系)について説明しておきます.
右に行くほど X が大きくなり,上にいくと Y が,遠くに行くと Z 座標が増加します.
位置や方向の指定に必要となります.ここで覚えてしまいましょう.
考え方は,シーン中に存在する物体は何かをまず考えます.
上の例では「球」と「床」と「光源」がありますが,もう一つそれらを見てい
るカメラが必要です.
球 : sphare{ 細かい設定 } 床 : plane { 細かい設定 } 光源 : light_source { 細かい設定 } カメラ : camera { 細かい設定 }
光源とカメラはどのシーンにも必要なものですが,球と床は描きたいものに よって変更します.
さて,次は { 細かい設定 } の部分を考えます.それには物体を修飾している
言葉に注目します.
「表面が磨かれた青い球」では
青い 表面が磨かれた
が「球」を修飾していますが,大きさと位置が指定されていません.そこで 大きさは1,位置は原点として補います.
位置 : <0, 0, 0> 大きさ : 1 青い : texture { pigment { color Blue } } 表面が磨かれた : finish { specular 1 roughness 0.01 reflection 0.13 }
sphere { <0,0,0>,1 texture { pigment { color Blue } finish { specular 1 roughness 0.01 reflection 0.13 } } }
これで「表面が磨かれた青い球」が原点にできました.
「茶色と黄色のタイル貼りの床」に注目します.ここで床は水平方向に無限に広がる平面を使います. 平面はplaneオブジェクトを使います.
向き <0, 1, 0> 位置 -1 茶色と黄色のタイル貼り texture { pigment { checker Brown, Yellow }}
向きは平面の法線ベクトル(面に垂直な線)として指定します.この場合 <0,1,0> で,原点からまっすぐ上に距離1の点(x=0,y=1,z=0)を指定しています.
位置は半径1の球が原点にあるため,-1だけ下に下げます.
plane { <0,1,0>,-1
texture {
pigment { checker Brown, Yellow }
finish { reflection .4 ambient 0.2 }
}
}
光源は白い光で上後方で,ここでは適当に以下の設定としました.
light_source { <50,300,-200> color White }
さて,以上のシーン(景色)を写すカメラですが,「斜め上から見ている絵」です
から,位置の指定が必要です.さらに見ている方向も必要となります.
ここも適当に後ろ(Z座標が負)に下がって,ちょっと上から球の中心(原点)を見る
ことにします.
camera {
location <0,0.5,-4>
look_at <0,0,0>
}
光源の位置やカメラの位置は出来上がった絵を確認しながら「適当に」変更すれば
いいと思います.
background { SkyBlue }
の説明をしていませんが,背景が黒ではつまらないので背景色を追加してみました.
以上のシーンの完全なソースを示します.
//-------------------------------------------------------------- #include "colors.inc" #include "textures.inc" camera { location <0,0.5,-4> look_at <0,0,0> } light_source { <50,300,-200> color White } background { SkyBlue } plane { <0,1,0>,-1 texture { pigment { checker Brown, Yellow } finish { reflection .4 ambient 0.2 } } } sphere { <0,0,0>,1 texture { pigment { color Blue } finish {specular 1 roughness 0.01 reflection 0.13} } } //-------------------------------------------------------------- |
このソースを blueball.pov として保存した後,レンダリングします.
$ povray +i blueball.pov +D +w160 +h120
レンダリングした画像はこれです.
たった25行のファイルですが,ペイントツールで描くには大変そうな絵
ができました. オプションの +w160 +h120 を +w640 +h480 等と変更すると
より見映えがする画像となります.
さらに球(sphere)の pigment { color Blue } の部分を,例えば
Jade に変更したり,床(plane)の pigment { checker Brown, Yellow }
の部分を色々変える等,このソースの少しの変更だけでも際限なく遊ぶことができると思います. Enjoy!