Unity3D技術之相機使用技巧-從相機到給定距離的視錐體大小
阿新 • • 發佈:2019-02-11
從相機到給定距離的視錐體大小
從相機到一定距離的視錐體橫截面在世界空間中定義為一個矩形,將可視區域框在內。有時,這對計算給定距離下該矩形的大小、或找出給定矩形大小時的距離比較有用。例如,如果一臺移動的相機需要始終完整拍攝到一個物件(如玩家),就不能靠得太近,否則物體的一部分拍不到。
在給定距離的視錐體高度(兩者的單位都為世界單位)可通過下列公式得到:-
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;