カメラの視点がよくわらない
参考にしたサイトです。 [lucille](http://lucille.sourceforge.net/docs/japanese/tutorial/tutorial1.html) レンダラの一つです。 フォトリアリスティックな表現を高速に行うことができるGIレンダラーということで「lucille」っていうのが紹介されていました。最初に、lucilleを取得するつもりはないです。
ただ、カメラの視点っていうのがわからないので、理解しやすかったページを載せているだけです。。
座標について
RenderManは左手座標系(left-handed coordinate system)でジオメトリの位置を定義しているそうです。 左手座標系ってこんなイメージ 親指がX軸、人差し指がY軸、中指がZ軸カメラの設定やライトの設定がRIBファイルに記載していなくても、デフォルトの設定が持ちいられるので画像が出力されるとのことです。
例えば、こんなソースだとデフォルト設定ってことです。
# sample2.rib : sample2 rib file
Display "sample2.tiff" "file" "rgba"
WorldBegin
Color [ 0.2 0.4 0.6 ]
Polygon "P" [ 0.5 0.5 0.5 #右上
0.5 -0.5 0.5 #右下
-0.5 -0.5 0.5 #左下
-0.5 0.5 0.5 ] #左上
WorldEnd
デフォルトでは、
・カメラは原点 (0,0,0) 、(0,0,1) の方向
・平行投影カメラ
Polygonは多角形表示するそうです。
"P" は position 頂点の位置を意味してます。
角括弧の中の数値は、スペースで区切ります。[]でくくらないとエラーになります。
四角形を作っているので、頂点は4箇所。XYZ軸なので、3 つの組が必要です。
# sample2.rib : sample2 rib file
Display "sample2.tiff" "file" "rgba"
# カメラの設定
Projection "perspective" "fov" [90.0]
WorldBegin
Surface "constant"
Color [ 0.2 0.4 0.6 ]
Polygon "P" [ 0.5 0.5 0.5 #右上
0.5 -0.5 0.5 #右下
-0.5 -0.5 0.5 #左下
-0.5 0.5 0.5 ] #左上
WorldEnd
Projectionによって、投影方法を指定できます。
・平行投影("orthographic") <-デフォルトはこっち
・透視投影("perspective") <-今回こっち
ここでは投影方法だけを指定しているので、カメラは原点にあり、z軸正方向を向いているそうで、どうやら、原点 (0,0,0) 、(0,0,0) の方向ってことで大きくなったみたいです。
数値は視野角で [0, 180] の間で度数で設定できます。
角度の値を小さくすると望遠レンズ、大きくすると魚眼レンズとなるみたいです。
# sample2.rib : sample2 rib file
Display "sample2.tiff" "file" "rgba"
# カメラの設定
Projection "perspective" "fov" [90.0]
Translate 0.0 0.0 1.0
WorldBegin
Surface "constant"
Color [ 0.2 0.4 0.6 ]
Polygon "P" [ 0.5 0.5 0.5 #右上
0.5 -0.5 0.5 #右下
-0.5 -0.5 0.5 #左下
-0.5 0.5 0.5 ] #左上
WorldEnd
TranslateのZ軸の方向に1.0を設定すると、最初のデフォルトの表示と同じになりました。
Translateを (0,0,-1) 移動する、画面手前(負のz軸)に移動させるとシーンはカメラから遠ざかるので、画像が消えます。
2次元の平べったい四角なので。。。
回転を加えてみる
# sample2.rib : sample2 rib file
Display "sample2.tiff" "file" "rgba"
# カメラの設定
Projection "perspective" "fov" [90.0]
Translate 0.0 0.0 1.0
# 回転
Rotate 45.0 1.0 0.0 0.0
WorldBegin
Surface "constant"
Color [ 0.2 0.4 0.6 ]
Polygon "P" [ 0.5 0.5 0.5 #右上
0.5 -0.5 0.5 #右下
-0.5 -0.5 0.5 #左下
-0.5 0.5 0.5 ] #左上
WorldEnd
Rotateは原点を中心にして回転させてます。
1番目に回転量(度)、その後ろに、回転軸(x,y,z軸)
X軸に45度回転
Rotate 45.0 0.0 1.0 0.0
Rotate 45.0 0.0 0.0 1.0
なんとなくわかったかな。。