1. 程式人生 > >Unity3D技術之相機使用技巧-從相機到給定距離的視錐體大小

Unity3D技術之相機使用技巧-從相機到給定距離的視錐體大小

從相機到給定距離的視錐體大小

從相機到一定距離的視錐體橫截面在世界空間中定義為一個矩形,將可視區域框在內。有時,這對計算給定距離下該矩形的大小、或找出給定矩形大小時的距離比較有用。例如,如果一臺移動的相機需要始終完整拍攝到一個物件(如玩家),就不能靠得太近,否則物體的一部分拍不到。

在給定距離的視錐體高度(兩者的單位都為世界單位)可通過下列公式得到:-

var frustumHeight = 2.0 * distance * Mathf.Tan(camera.fieldOfView * 0.5 * Mathf.Deg2Rad);

……該過程可顛倒,計算出獲得指定視錐體高度的所需距離:-

var distance = frustumHeight * 0.5 / Mathf.Tan(camera.fieldOfView * 0.5 * Mathf.Deg2Rad);

已知高度和距離,計算 FOV 角度也是可行的:-

var camera.fieldOfView = 2 * Mathf.Atan(frustumHeight * 0.5 / distance) * Mathf.Rad2Deg;

每個計算式都包含視錐體高度,而這個值可通過寬度輕易獲得(反之亦然):-

var frustumWidth = frustumHeight * camera.aspect;
var frustumHeight = frustumWidth / camera.aspect;