レイトレーシングにおけるカメラ
今回知りたいことは、カメラについてのパラメータが、本来のカメラにおける何に相当するのか、である。カメラ部分のコードは下記の通り。
perspective
カメラタイプを指定するらしい。言葉の意味は、遠近法のことを指している。
location
文字通り、カメラの空間上の位置を示している。
look_at
これも文字通り、カメラの向きを示している。視点を向ける座標を指定する形になっている。
sky
rightとup
view screenの比率を決めるパラメータ。View screenというのが、出来上がる絵のアスペクト比になる。このView screenというのが、カメラでいうところのフィルムサイズの比、あるいはセンサーサイズの比になるというイメージ、なのかな…。デフォルトはright=<1.33,0,0>,up=<0,1,0>で、4:3の比率になっている。画面に出てくる画素数を数えると、512 x 384pixelだったので、20万画素くらいだから、一昔毎前のWebカメラのイメージだろうか。
direction
説明が不可解なのだが、look_atで動く前のカメラの向きを示すらしい。意味はよくわからない。また、その長さは、カメラのlocationとview screenとの間の距離を指定するものらしい。つまり、これが焦点距離を表している事になる。長さを短くすると焦点距離が短く(つまり引いたような広角の画像になる)長さを長くすると焦点距離が長く(つまり望遠のように挟角の画像になる)。
ただ、焦点距離を変えても、下図のようにゆがみ具合が変わらない。普通、カメラのレンズを望遠側にしたら歪みが少なくなり、広角にすると歪みが大きくなる。どうやら、レンズの挙動をシミュレートしているわけではないように見える。
![]() |
| direction <0,0,1> |
![]() |
| direction <0,0,0.5> |
![]() |
| direction <0,0,1.5> |
最初に指定したカメラタイプによってレンズを決定しているが、実際のレンズを選定しているイメージではなく、そのレンズでみえる見え方で表示しているということなのだろうと思う。POV-Rayのリファレンスマニュアルをもう少し読み込んだら、レンズの挙動を再現することができるかもしれない。今回テストしたソースコード全体を記載しておく。



コメント
コメントを投稿