static void rna_Camera_angle_set(PointerRNA *ptr, float value) { Camera *cam = ptr->id.data; float sensor = camera_sensor_size(cam->sensor_fit, cam->sensor_x, cam->sensor_y); cam->lens = fov_to_focallength(value, sensor); }
void camera_params_compute_viewplane(CameraParams *params, int winx, int winy, float xasp, float yasp) { rctf viewplane; float pixsize, viewfac, sensor_size, dx, dy; int sensor_fit; /* fields rendering */ params->ycor= yasp/xasp; if (params->use_fields) params->ycor *= 2.0f; if (params->is_ortho) { /* orthographic camera */ /* scale == 1.0 means exact 1 to 1 mapping */ pixsize= params->ortho_scale; } else { /* perspective camera */ sensor_size= camera_sensor_size(params->sensor_fit, params->sensor_x, params->sensor_y); pixsize= (sensor_size * params->clipsta)/params->lens; } /* determine sensor fit */ sensor_fit = camera_sensor_fit(params->sensor_fit, xasp*winx, yasp*winy); if (sensor_fit==CAMERA_SENSOR_FIT_HOR) viewfac= winx; else viewfac= params->ycor * winy; pixsize /= viewfac; /* extra zoom factor */ pixsize *= params->zoom; /* compute view plane: * fully centered, zbuffer fills in jittered between -.5 and +.5 */ viewplane.xmin = -0.5f*(float)winx; viewplane.ymin = -0.5f*params->ycor*(float)winy; viewplane.xmax = 0.5f*(float)winx; viewplane.ymax = 0.5f*params->ycor*(float)winy; /* lens shift and offset */ dx= params->shiftx*viewfac + winx*params->offsetx; dy= params->shifty*viewfac + winy*params->offsety; viewplane.xmin += dx; viewplane.ymin += dy; viewplane.xmax += dx; viewplane.ymax += dy; /* fields offset */ if (params->field_second) { if (params->field_odd) { viewplane.ymin-= 0.5f * params->ycor; viewplane.ymax-= 0.5f * params->ycor; } else { viewplane.ymin+= 0.5f * params->ycor; viewplane.ymax+= 0.5f * params->ycor; } } /* the window matrix is used for clipping, and not changed during OSA steps */ /* using an offset of +0.5 here would give clip errors on edges */ viewplane.xmin *= pixsize; viewplane.xmax *= pixsize; viewplane.ymin *= pixsize; viewplane.ymax *= pixsize; params->viewdx= pixsize; params->viewdy= params->ycor * pixsize; params->viewplane= viewplane; }
static float rna_Camera_angle_get(PointerRNA *ptr) { Camera *cam = ptr->id.data; float sensor = camera_sensor_size(cam->sensor_fit, cam->sensor_x, cam->sensor_y); return focallength_to_fov(cam->lens, sensor); }