通常、視錐台はカメラの中心線に対して対称的に置かれますが、必ずしもそうである必要はありません。視錐台を傾斜させ、中心線からの片側の角度を反対側よりも小さくできます。
これにより画像の片側の遠近感がより縮まり、端にあるオブジェクトに視点が近づく印象を与えます。カーレースゲームなどがその使用例です。錐台が端に向かって下に倒れていると、プレイヤーからは道路が近くに見え、スピード感が強調されます。
Camera コンポーネントには、錐台の傾斜を設定するための特別な機能はありませんが、カメラの Physical Camera プロパティを有効にし、Lens Shift を適用するか、または、スクリプトを追加してカメラの射影行列を変更することができます。
注意ビルトインレンダーパイプラインでは、斜めの錐台を使用するカメラはフォワード レンダリングパス のみを使用できます。カメラがディファードシェーディングレンダリングパスを使用するように設定されている場合に錐台を斜めにすると、Unity はそのカメラに強制的にフォワードレンダリングパスを使用します。
カメラの Physical Camera プロパティを公開して、Lens Shift を表示します。これを使用して、X 軸と Y 軸に沿ってカメラの焦点中心をオフセットし、描画した画像の歪みを最小化することができます。
レンズをシフトすると、シフト方向とは反対側の錐台の角度が減少します。例えば、レンズを上にシフトすると、錐台の底とカメラの中心線との間の角度が小さくなります。
Physical Camera オプションの詳細は、Physical Camera に関するドキュメントを参照してください。
以下のスクリプト例は、カメラの射影行列を変更することによって錐台の傾斜を素早く設定する方法を示しています。ゲームが再生モードを実行している間だけ、スクリプトの効果が得られます。
using UnityEngine;
using System.Collections;
public class ExampleScript : MonoBehaviour {
void SetObliqueness(float horizObl, float vertObl) {
Matrix4x4 mat = Camera.main.projectionMatrix;
mat[0, 2] = horizObl;
mat[1, 2] = vertObl;
Camera.main.projectionMatrix = mat;
}
}
C# スクリプトの例
このスクリプトは射影行列の仕組みを理解していなくても使用できます。horizObl と vertObl の値は、それぞれ水平方向と垂直方向の傾斜を設定します。値 0 は傾斜がないことを示します。正の値を指定すると、錐台が右または上にシフトし、左側または下側が平坦になります。負の値を指定すると、左または下にシフトし、錐台の右側または上部が平坦になります。このスクリプトをカメラに追加し、ゲームの実行中にシーンビューに切り替えると、効果を直接確認できます。Inspector で horizObl と vertObl の値を変更すると、カメラの錐台のワイヤーフレーム描画が変化します。いずれかの変数の値を 1 または –1 にすると、錐台の片側が中心線に対して完全に平行になります。この範囲を超えた値も設定できますが、使用することはほとんどありません。