POV言語の本当に適当な解説

POV-Rayではテキストでシーンを記述するということは、サンプルや六角Superが吐き出したものを見ればわかると思います。
これはPOV-Rayを使う上での第一の関門を言っても良いもので、特にCGをあつかおうなんて人はGUIじゃなきゃ無理、みたいな人が多いようです。
確かにテキストベースのPOV-Rayは英語(?)とか数字とか沢山ならんでて面倒臭そうですが、実際面倒臭いです(笑)

でも、恐れることはありません。

面倒なことは六角大王Super様が全部やってくれます。単に静止画をレンダリングするだけならカメラや光源などみんな六角大王Superが生成してくれるので数字をいじることもほとんど無いと思います。

じゃあなんにもしないでレンダリングだけすれば良いじゃんという気もしますが、実際には光源をちょっと変えたいとかPOV-Rayの関数テクスチャを使うとか色々いじりたくなることがあるものです。
そこでとりあえず言語の基本構造を書いておきます。これさえわかっていれば後は自分で調べるのもほとんど苦では無いと思いますし。

ファイルについて

まず、POV-Rayではレンダリングするオブジェクトを記述したファイルをシーンファイルと呼びます。拡張子が『 .pov 』のファイルは普通このシーンファイルです。
シーンファイルにはカメラや光源、オブジェクトが記述されていて、それをレンダリングすることで画像を得ることができます。
六角大王Superが出力するのもこのシーンファイルです。
他にオブジェクトや色のみを宣言したインクルードファイルというものもあります。拡張子が『 .inc 』のファイルは普通このインクルードファイルです。
インクルードファイルはシーンファイルの中で『 #include "colors.inc" 』というようにして読み込むことで使用されます。

POV-Ray言語の本当の基礎の基礎

基本構造

キーワード {
  キーワードに対応した設定項目1
  キーワードに対応した設定項目2
  .....
}

とりあえずこれだけ。とにかく『キーワード』から『{』と『}』に囲まれた部分が何かしらの意味をもっています。
これさえ解っていればキーワードと中の項目の働きを調べてやれば自分で全部できると言っても過言ではないかと。
とはいえ設定項目が複数あるのは当然として、キーワードが入れ子状になっていることもあります。
要はキーワード1の設定項目が他のキーワードを使ったものになっていることもあるというわけです。テクスチャなんかが良い例です

キーワード1 {
  キーワード1に対応した設定項目1
  キーワード2 {
    キーワード2に対応した設定項目
    //こんな感じに入れ子になってたり
  }
  キーワード3 {
    //さらにもう1つあったり
    キーワード3に対応した設定項目
    キーワード4 {
      キーワード4に対応した設定項目
      //さらに入れ子になってたり
    }
  }
  キーワード1に対応した設定項目2
  //おまけに1の項目が最後にいくつか追加があったり。
}

こういう入れ子になっているものを自分で書く場合は閉じ括弧の『}』をどっかで忘れてたりすることがあるので注意。
読む場合はとにかく『{』と『}』の対応を頭に入れていきましょう。
具体的な例として恐らく一番解りやすいライトの設定。適当に六角大王で出力したものをひっぱてきてみました。

light_source{
  <-11.5380,55.9193,-82.0969>
  color White * 0.7000
}

細かいことは後で説明しますが、light_sourceはライト(点光源)の設定だと言うことを表すキーワード。{ があって、2行目の<>に囲まれた数字はライトの位置。左からx座標、y座標、z座標、を表します。そしてcolorはライトの色。最後に } で閉じて設定完了。
基礎の基礎の目次へ

ベクトル

さて、今もでてきましたが、POV-Rayの言語でもう1つ避けて通れないのがベクトル表現。ベクトルと言えば高校あたりで習う物理や数学では矢印で表現したりしますが、あんなものは頭の中からうっちゃって下さい。
ここではベクトルとは単にいくつかの実数をまとめて1セットとした表現と思って下さい。POV-Rayではさっきあったように『<』で始まり、『 , 』で数字を区切って指定し、最後に『>』で閉じて表現します。

ベクトルの例
< -11.5380 , 55.9193 , -82.0969 >

計算を入れることもできる(かけ算は*で表します)
< 10.0+0.5 , 25.5-30.2 , 15*2.3 , 11/3 >

ベクトル同士の計算も可能。各成分ごとに計算されます。足し算以外も同様。かけ算もこのように計算される。
< 1 , 5 , 2 > + < 10 , 12 , 13 >  = < 1+10 , 5+12 , 2+13 > = <11 , 17 , 15 >

実数との計算も可能。この時、実数は全ての成分がその数のベクトルだと識別される。
< 2.3 , 1.8 , 0.2 > + 0.8 (= < 2.3 , 1.8 , 0.2 > + < 0.8 , 0.8 , 0.8 > ) = < 3.1 , 2.6 , 1.0 >

また、成分の数が違う場合は足りない分に0があるものとして計算される。
< 1.0 , 2.0 , 1.5 , 0.3 > - < 0.5 , 0.2 > (= < 1.0-0.5 , 2.0-0.2 , 1.5-0 , 0.3-0 > ) = <  0.5 , 1.8 , 1.5 , 0.3 > 

計算結果などが一般の数学とは異なる場合があるので理系の人は要注意。
ベクトルは3次元座標の指定に良く使われるため3つ数字を指定するのが一番多いです。
また、POV-Rayでは他に色指定でも使用します。rgb<1.0 , 0.0 , 0.0>というように使われています。
基礎の基礎の目次へ

その他

それから、六角Superが吐き出すPOVファイルには// --------- RokuLayer 1 --------というような部分があります。//はコメントと言ってこの記号からこの行の終わりまでは気にしないでねという記号。
プログラムなどと同じくPOV-Rayは巨大なシーンになるとはっきりいってどこに何を書いたのか解らなくなってくるので、これで注釈を入れておくことができます。

コメントの例
// この記号から行末までが無視されます。
/* また、このように書くとこの記号(「/*」から「*/」)の中身がそっくり無視されますので
複数行に渡るコメントを書くことができます。*/

最後に、POVのシーンファイルに記述される主なものをまとめておくと、

となります。とりあえずこれだけ知っていればどうにかなるんじゃないかと思います。
基礎の基礎の目次へ


もどる

inserted by FC2 system