获取摄像机的视口区域
透视相机模式
下面展示一些 内联代码片
。
/// <summary>
/// 获取摄像机的视口区域(透视相机模式)
/// </summary>
/// <param name="distance">距离相机的距离</param>
/// <returns></returns>
public static Vector3[] GetCorners(Camera _camera,float distance)
{
Vector3[] corners = new Vector3[ 4 ];
float halfFOV = ( _camera.fieldOfView * 0.5f ) * Mathf.Deg2Rad;
float aspect = _camera.aspect;
float height = distance * Mathf.Tan( halfFOV );
float width = height * aspect;
Transform cameraTransform = _camera.transform;
var position = cameraTransform.position;
var right = cameraTransform.right;
var up = cameraTransform.up;
var forward = cameraTransform.forward;
// UpperLeft
corners[ 0 ] = position - ( right * width );
corners[ 0 ] += up * height;
corners[ 0 ] += forward * distance;
// UpperRight
corners[ 1 ] = position + ( right * width );
corners[ 1 ] += up * height;
corners[ 1 ] += forward * distance;
// LowerLeft
corners[ 2 ] = position - ( right * width );
corners[ 2 ] -= up * height;
corners[ 2 ] += forward * distance;
// LowerRight
corners[ 3 ] = position + ( right * width );
corners[ 3 ] -= up * height;
corners[ 3 ] += forward * distance;
return corners;
}