デフォルトでは,ビュー円錐台はカメラの中心に対して対称的に置かれるが,必ずそうする必要性はありません。円錐代は,“傾斜” させることが可能であり,すなわち片側がその反対側よりも中心線から小さい角度に置くことが出来ます。得られる効果は,プリントした写真の片方の端を切り落とすようなものになります。これによりイメージの片側のパースがより密集し,視点が端に近いオブジェクトに非常に近づいている印象を与えます。活用例をあげると,車のレーシングゲームにおいて,円錐台が下の端において平らにされるようなケースです。これにより視点が道に近い印象を与えて,スピード感を際立たせます。 By default, the view frustum is arranged symmetrically around the camera’s centre line but it doesn’t necessarily need to be.
カメラのクラスが円錐台の傾斜をセットするクラスはありませんが投影マトリクスを変形させることで割と簡単に実現することが出来ます:-
function SetObliqueness(horizObl: float, vertObl: float;) {
var mat: Matrix4x4 = camera.projectionMatrix;
mat[0, 2] = horizObl;
mat[1, 2] = vertObl;
camera.projectionMatrix = mat;
}
有難いことに,投影マトリクスがどのような仕組みで動作するか知らなくとも,活用することが出来ます。horizObl および vertObl の値は水平および垂直方向の傾斜の量を各々セットします。値がゼロということは傾斜なしを示します。正の値は円錐台を右または上方向にシフトさせ,これにより左または下方向を平らにします。負の値により円錐代を左または下方向にシフトさせ,これにより右または上方向を平らにします。得られる効果はこれをカメラに加えて,ゲーム実行中にシーンビューに切り替えて,直接確認出来ます。カメラ円錐台のワイヤーフレーム描画は Inspector 上で horizObl および vertObl の値とともに変化します。いずれかの値を 1 あるいは –1 とすると,円錐台の片側が中心線に関して完全に平行となることを示します。これらの値の範囲を超えて設定することは可能ではありますが,実際に必要であることはあまりありません。