Version: 6000.3
语言: 中文
使相机透视倾斜
来自相机的光线

计算远距离视锥体的大小

视锥体与相机在场景中创建特定视点图像的组件。输出要么绘制到屏幕上,要么作为纹理捕获。更多信息
请参阅术语表
在世界空间中定义一个矩形,用于框住可见区域。有时计算该矩形在给定距离处的大小,或找到矩形为给定大小的距离很有用。例如,如果移动摄像机需要始终将一个对象(如玩家)完全保持在镜头中,那么它不能靠得太近,以至于该对象的一部分被切断。

给定距离处的视锥体高度(均以世界单位表示)可以使用以下公式获得:

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

…并且可以反向计算给出指定视锥体高度所需的距离:

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

当高度和距离已知时,也可以计算 FOV 角度:

var cameraFieldOfView = 2.0f * Mathf.Atan(frustumHeight * 0.5f / distance) * Mathf.Rad2Deg;

这些计算中的每一个都涉及视锥体的高度,但这可以很容易地从宽度中获得(反之亦然):

var frustumWidth = frustumHeight * camera.aspect;
var frustumHeight = frustumWidth / camera.aspect;
使相机透视倾斜
来自相机的光线