Blender 3.1.0
static float rna_Camera_angle_get(PointerRNA *ptr)
{
Camera *cam = (Camera *)ptr->owner_id;
float sensor = BKE_camera_sensor_size(cam->sensor_fit,
cam->sensor_x,
cam->sensor_y);
return focallength_to_fov(cam->lens, sensor);
}
Camera.sensor_fit
# Auto
$ .\target\release\blend_info -n Camera.sensor_fit untitled.blend
Camera.sensor_fit = 0
# Horizontal
$ .\target\release\blend_info -n Camera.sensor_fit untitled.blend
Camera.sensor_fit = 1
# Vertical
$ .\target\release\blend_info -n Camera.sensor_fit untitled.blend
Camera.sensor_fit = 2
Camera.sensor_[xy]
$ .\target\release\blend_info -n Camera.sensor_x untitled.blend
Camera.sensor_x = 36_f32
$ .\target\release\blend_info -n Camera.sensor_y untitled.blend
Camera.sensor_y = 24_f32
BKE_camera_sensor_size
float BKE_camera_sensor_size(int sensor_fit, float sensor_x, float sensor_y)
{
/* sensor size used to fit to. for auto, sensor_x is both x and y. */
if (sensor_fit == CAMERA_SENSOR_FIT_VERT) {
return sensor_y;
}
return sensor_x;
}
focallength_to_fov
/* lens/angle conversion (radians) */
float focallength_to_fov(float focal_length, float sensor)
{
return 2.0f * atanf((sensor / 2.0f) / focal_length);
}