JSLで透視投影のシーンを構築するには、Perspectiveコマンドを表示に送ります。
Perspective (angle, near, far)
•
|
•
|
nearに対するfarの比は小さくする必要があります。小さい方が、レンダリングエンジンが各要素をシミュレートする時、他の要素の「手前」に描くべき要素を効率よく判定するからです。near引数の値はゼロより大きくなければなりません。
|
scene << Perspective( 45, 3, 7 ); // カメラを定義する
視角は、カメラの広角レンズまたは望遠レンズと同じ働きをします。視角が小さければ図が拡大され、大きければ縮小されます。つまり、視角が小さければ、小さい大きさのシーンに3次元空間が写されるので、シーンのなかの要素が大きく見えます。視角が大きければ、大きな大きさのシーンに3次元空間が写されるので、シーンのなかの要素が小さく見えます。したがって、シーンにおける要素の大きさは、Perspective関数のangle引数を使って操作できます。次の図は、角度を45度と90度に設定した透視投影による「hello world」スクリプトの例です。
図13.6 投影法の変更
Perspectiveコマンドの代わりに、Frustumコマンドで視野の四角錐台を定義することもできます。
Frustum(left, right, bottom, top, near, far);
四角錘台における近い方の平面の左下隅と右上隅の(x, y, z)座標が、(left, bottom, near)と(right, top, near)で定義されます。nearには近いクリップ平面までの距離を、farには遠いクリップ平面までの距離を指定します。