Unity 中相机大小与相机矩形大小的关系详解
在 Unity 中,相机的大小(Size)与相机矩形大小(Viewport Rect)是两个密切相关但概念不同的属性,它们共同决定了相机的渲染范围和显示效果。
核心概念解析
1. 相机大小(Camera Size)
-
正交相机:Camera.orthographicSize
属性
-
定义:相机视图的半高(从中心到顶部的距离)
-
单位:世界单位(World Units)
-
实际高度 = orthographicSize * 2
-
实际宽度 = orthographicSize * 2 * Camera.aspect
(aspect 为宽高比)
-
透视相机:没有直接的 "Size" 属性
-
通过 Camera.fieldOfView
(FOV)控制视角大小
-
FOV 与显示大小的关系取决于物体与相机的距离
2. 相机矩形大小(Viewport Rect)
-
Camera.rect
属性
-
定义:相机渲染画面在屏幕上的位置和范围
-
格式:(x, y, width, height)
,归一化坐标(0-1)
-
示例:
-
(0,0,1,1)
:全屏
-
(0,0,0.5,0.5)
:屏幕左下角四分之一区域
-
(0.5,0.5,0.5,0.5)
:屏幕右上角四分之一区域
1. 正交相机的关系公式
实际渲染宽度 = 2 * orthographicSize * aspect * rect.width
实际渲染高度 = 2 * orthographicSize * rect.height
2. 透视相机的关系公式
实际视角宽度 = 2 * distance * tan(fieldOfView * 0.5 * Mathf.Deg2Rad) * aspect * rect.width
实际视角高度 = 2 * distance * tan(fieldOfView * 0.5 * Mathf.Deg2Rad) * rect.height
3. 视觉大小对比表
设置 | 正交相机效果 | 透视相机效果 |
---|
增加 Size/FOV | 显示更多场景内容 | 显示更多场景内容 |
增加 Rect 宽度 | 横向拉伸画面 | 横向拉伸画面 |
增加 Rect 高度 | 纵向拉伸画面 | 纵向拉伸画面 |
Size 不变,Rect 缩小 | 画面内容不变,显示区域变小 | 画面内容不变,显示区域变小 |
Rect 不变,Size 增加 | 显示更多内容,物体变小 | 显示更多内容,透视感增强 |