From 539c94a0511fb98fdbae0ce78c815c45a805e36e Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Fri, 18 Nov 2011 15:52:00 +0000 Subject: Camera: some code refactoring, use an intermediate CameraParams struct instead of long list of variables everywhere. Intention is to also let 3d view use this eventually, instead of duplicating code. --- source/blender/blenkernel/BKE_camera.h | 58 ++++++++++++++++++++++++++++------ 1 file changed, 49 insertions(+), 9 deletions(-) (limited to 'source/blender/blenkernel/BKE_camera.h') diff --git a/source/blender/blenkernel/BKE_camera.h b/source/blender/blenkernel/BKE_camera.h index fc0ef0248f3..4a0f38d926c 100644 --- a/source/blender/blenkernel/BKE_camera.h +++ b/source/blender/blenkernel/BKE_camera.h @@ -36,6 +36,8 @@ extern "C" { #endif +#include "DNA_vec_types.h" + struct Camera; struct Object; struct RenderData; @@ -48,16 +50,54 @@ struct Camera *copy_camera(struct Camera *cam); void make_local_camera(struct Camera *cam); void free_camera(struct Camera *ca); -float dof_camera(struct Object *ob); +/* Camera Object */ + +float object_camera_dof_distance(struct Object *ob); +void object_camera_mode(struct RenderData *rd, struct Object *ob); + +/* Camera Parameters: + * + * Intermediate struct for storing camera parameters from various sources, + * to unify computation of viewplane, window matrix, ... */ + +typedef struct CameraParams { + /* lens */ + int is_ortho; + float lens; + float ortho_scale; + + float shiftx; + float shifty; + + /* sensor */ + float sensor_x; + float sensor_y; + int sensor_fit; + + /* clipping */ + float clipsta; + float clipend; + + /* fields */ + int use_fields; + int field_second; + int field_odd; + + /* compute result */ + float ycor; + + float viewdx; + float viewdy; + rctf viewplane; + + float winmat[4][4]; +} CameraParams; + +void camera_params_init(CameraParams *params); +void camera_params_from_object(CameraParams *params, struct Object *camera); +void camera_params_compute(CameraParams *params, int winx, int winy, float aspx, float aspy); -void object_camera_mode(struct RenderData *rd, struct Object *camera); -void object_camera_intrinsics(struct Object *camera, struct Camera **cam_r, short *is_ortho, float *shiftx, float *shifty, - float *clipsta, float *clipend, float *lens, float *sensor_x, float *sensor_y, short *sensor_fit); -void object_camera_matrix( - struct RenderData *rd, struct Object *camera, int winx, int winy, short field_second, - float winmat[][4], struct rctf *viewplane, float *clipsta, float *clipend, float *lens, - float *sensor_x, float *sensor_y, short *sensor_fit, float *ycor, - float *viewdx, float *viewdy); +/* Camera View Frame */ void camera_view_frame_ex(struct Scene *scene, struct Camera *camera, float drawsize, const short do_clip, const float scale[3], float r_asp[2], float r_shift[2], float *r_drawsize, float r_vec[4][3]); -- cgit v1.2.3