超ど素人がRendarManをいじってみる~RIBファイルのカメラの視点編~

<h1>カメラの視点がよくわらない</h1>
参考にしたサイトです。
[lucille](http://lucille.sourceforge.net/docs/japanese/tutorial/tutorial1.html)　
レンダラの一つです。
フォトリアリスティックな表現を高速に行うことができるGIレンダラーということで「lucille」っていうのが紹介されていました。

最初に、lucilleを取得するつもりはないです。
ただ、カメラの視点っていうのがわからないので、理解しやすかったページを載せているだけです。。

<h1>座標について</h1>
RenderManは左手座標系(left-handed coordinate system)でジオメトリの位置を定義しているそうです。
左手座標系ってこんなイメージ
![スクリーンショット 2015-04-09 17.17.03.png](https://qiita-image-store.s3.amazonaws.com/0/39911/6cba00ae-9c6f-f35f-a7b5-a899a51054bb.png)親指がX軸、人差し指がY軸、中指がZ軸

カメラの設定やライトの設定がRIBファイルに記載していなくても、デフォルトの設定が持ちいられるので画像が出力されるとのことです。

例えば、こんなソースだとデフォルト設定ってことです。

```lang:sample2.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
```
![スクリーンショット 2015-04-09 17.36.25.png](https://qiita-image-store.s3.amazonaws.com/0/39911/7d775693-9131-5bfd-13d8-bce760348cd8.png)

デフォルトでは、
・カメラは原点 (0,0,0) 、(0,0,1) の方向
・平行投影カメラ

Polygonは多角形表示するそうです。
 "P" は position 頂点の位置を意味してます。
角括弧の中の数値は、スペースで区切ります。[]でくくらないとエラーになります。
四角形を作っているので、頂点は４箇所。XYZ軸なので、3 つの組が必要です。

```lang:sample2.rib
#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
```
![スクリーンショット 2015-04-09 18.06.36.png](https://qiita-image-store.s3.amazonaws.com/0/39911/68e5b14c-1735-057e-0dc4-5f66228d5ee5.png)

Projectionによって、投影方法を指定できます。
・平行投影("orthographic")　<-デフォルトはこっち
・透視投影("perspective")　　<-今回こっち
ここでは投影方法だけを指定しているので、カメラは原点にあり、z軸正方向を向いているそうで、どうやら、原点 (0,0,0) 、(0,0,0) の方向ってことで大きくなったみたいです。
数値は視野角で [0, 180] の間で度数で設定できます。
角度の値を小さくすると望遠レンズ、大きくすると魚眼レンズとなるみたいです。

```lang:sample2.rib
#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
```
![スクリーンショット 2015-04-09 17.36.25.png](https://qiita-image-store.s3.amazonaws.com/0/39911/7d775693-9131-5bfd-13d8-bce760348cd8.png)

TranslateのZ軸の方向に1.0を設定すると、最初のデフォルトの表示と同じになりました。
Translateを (0,0,-1) 移動する、画面手前(負のz軸)に移動させるとシーンはカメラから遠ざかるので、画像が消えます。
２次元の平べったい四角なので。。。

<h1>回転を加えてみる</h1>

```lang:sample2.rib
#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は原点を中心にして回転させてます。
１番目に回転量(度)、その後ろに、回転軸(x,y,z軸)
X軸に45度回転
![スクリーンショット 2015-04-09 19.12.51.png](https://qiita-image-store.s3.amazonaws.com/0/39911/a324f5e9-3c1e-9eee-1d75-5dab77bc7e7f.png)

```
Rotate 45.0 0.0 1.0 0.0
```
今度はY軸に45度回転に指定してみます。
![スクリーンショット 2015-04-09 19.14.48.png](https://qiita-image-store.s3.amazonaws.com/0/39911/672c77df-fb01-6d76-4730-73a764e29059.png)

```
Rotate 45.0 0.0 0.0 1.0
```
今度はZ軸に45度回転に指定してみます。
![スクリーンショット 2015-04-09 19.16.00.png](https://qiita-image-store.s3.amazonaws.com/0/39911/c816c7f3-a8d3-6515-c22c-d4f82aa9f943.png)


なんとなくわかったかな。。