Blender V5.0
BKE_camera.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
7#include "DNA_vec_types.h"
8
13
14struct Camera;
15struct Depsgraph;
16struct Main;
17struct Object;
18struct RegionView3D;
19struct RenderData;
20struct Scene;
21struct View3D;
22
23/* Camera Data-block */
24
25struct Camera *BKE_camera_add(struct Main *bmain, const char *name);
26
27/* Camera Usage */
28
32float BKE_camera_object_dof_distance(const struct Object *ob);
33
34int BKE_camera_sensor_fit(int sensor_fit, float sizex, float sizey);
35float BKE_camera_sensor_size(int sensor_fit, float sensor_x, float sensor_y);
36
43typedef struct CameraParams {
44 /* lens */
46 float lens;
48 float zoom;
49
50 float shiftx;
51 float shifty;
52 float offsetx;
53 float offsety;
54
55 /* sensor */
56 float sensor_x;
57 float sensor_y;
59
60 /* clipping */
62 float clip_end;
63
64 /* computed viewplane */
65 float ycor;
66 float viewdx;
67 float viewdy;
69
70 /* computed matrix */
71 float winmat[4][4];
73
74/* Values for CameraParams.zoom, need to be taken into account for some operations. */
75#define CAMERA_PARAM_ZOOM_INIT_CAMOB 1.0f
76#define CAMERA_PARAM_ZOOM_INIT_PERSP 2.0f
77
81 const struct Depsgraph *depsgraph,
82 const struct View3D *v3d,
83 const struct RegionView3D *rv3d);
84
86 CameraParams *params, int winx, int winy, float aspx, float aspy);
90void BKE_camera_params_crop_viewplane(rctf *viewplane, int winx, int winy, const rcti *region);
95
96/* Camera View Frame */
97
98void BKE_camera_view_frame_ex(const struct Scene *scene,
99 const struct Camera *camera,
100 float drawsize,
101 bool do_clip,
102 const float scale[3],
103 float r_asp[2],
104 float r_shift[2],
105 float *r_drawsize,
106 float r_vec[4][3]);
107void BKE_camera_view_frame(const struct Scene *scene,
108 const struct Camera *camera,
109 float r_vec[4][3]);
110
117 const struct Scene *scene,
118 struct Object *camera_ob,
119 float r_co[3],
120 float *r_scale,
121 float *r_clip_start,
122 float *r_clip_end);
124 const float (*cos)[3],
125 int num_cos,
126 struct Object *camera_ob,
127 float r_co[3],
128 float *r_scale);
129
130/* Camera multi-view API */
131
135struct Object *BKE_camera_multiview_render(const struct Scene *scene,
136 struct Object *camera,
137 const char *viewname);
142 const struct Object *camera,
143 bool is_left,
144 float r_viewmat[4][4]);
146 const struct Object *camera,
147 const char *viewname,
148 float r_modelmat[4][4]);
150 const struct Object *camera,
151 const char *viewname,
152 float r_modelmat[4][4]);
154 const struct Object *camera,
155 const char *viewname,
156 float r_winmat[4][4]);
158 const struct Object *camera,
159 const char *viewname);
161 struct CameraParams *params,
162 const struct Object *camera,
163 const char *viewname);
165 const struct Object *camera);
166
167/* Camera background image API */
168
170
178 int flag);
179void BKE_camera_background_image_remove(struct Camera *cam, struct CameraBGImage *bgpic);
float BKE_camera_sensor_size(int sensor_fit, float sensor_x, float sensor_y)
struct Camera * BKE_camera_add(struct Main *bmain, const char *name)
void BKE_camera_multiview_params(const struct RenderData *rd, struct CameraParams *params, const struct Object *camera, const char *viewname)
struct CameraBGImage * BKE_camera_background_image_new(struct Camera *cam)
bool BKE_camera_view_frame_fit_to_scene(struct Depsgraph *depsgraph, const struct Scene *scene, struct Object *camera_ob, float r_co[3], float *r_scale, float *r_clip_start, float *r_clip_end)
float BKE_camera_multiview_shift_x(const struct RenderData *rd, const struct Object *camera, const char *viewname)
void BKE_camera_background_image_clear(struct Camera *cam)
float BKE_camera_object_dof_distance(const struct Object *ob)
struct Object * BKE_camera_multiview_render(const struct Scene *scene, struct Object *camera, const char *viewname)
int BKE_camera_sensor_fit(int sensor_fit, float sizex, float sizey)
void BKE_camera_params_init(CameraParams *params)
bool BKE_camera_view_frame_fit_to_coords(const struct Depsgraph *depsgraph, const float(*cos)[3], int num_cos, struct Object *camera_ob, float r_co[3], float *r_scale)
void BKE_camera_multiview_view_matrix(const struct RenderData *rd, const struct Object *camera, bool is_left, float r_viewmat[4][4])
void BKE_camera_params_crop_viewplane(rctf *viewplane, int winx, int winy, const rcti *region)
void BKE_camera_multiview_model_matrix(const struct RenderData *rd, const struct Object *camera, const char *viewname, float r_modelmat[4][4])
void BKE_camera_params_from_view3d(CameraParams *params, const struct Depsgraph *depsgraph, const struct View3D *v3d, const struct RegionView3D *rv3d)
void BKE_camera_multiview_model_matrix_scaled(const struct RenderData *rd, const struct Object *camera, const char *viewname, float r_modelmat[4][4])
void BKE_camera_params_from_object(CameraParams *params, const struct Object *cam_ob)
void BKE_camera_params_compute_viewplane(CameraParams *params, int winx, int winy, float aspx, float aspy)
bool BKE_camera_multiview_spherical_stereo(const struct RenderData *rd, const struct Object *camera)
void BKE_camera_multiview_window_matrix(const struct RenderData *rd, const struct Object *camera, const char *viewname, float r_winmat[4][4])
void BKE_camera_view_frame(const struct Scene *scene, const struct Camera *camera, float r_vec[4][3])
void BKE_camera_params_compute_matrix(CameraParams *params)
void BKE_camera_view_frame_ex(const struct Scene *scene, const struct Camera *camera, float drawsize, bool do_clip, const float scale[3], float r_asp[2], float r_shift[2], float *r_drawsize, float r_vec[4][3])
struct CameraBGImage * BKE_camera_background_image_copy(const struct CameraBGImage *bgpic_src, int flag)
void BKE_camera_background_image_remove(struct Camera *cam, struct CameraBGImage *bgpic)
BPy_StructRNA * depsgraph
static float is_left(const float2 &p0, const float2 &p1, const float2 &p2)
#define cos
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
const char * name
float ortho_scale
Definition BKE_camera.h:47
float sensor_x
Definition BKE_camera.h:56
float winmat[4][4]
Definition BKE_camera.h:71
float offsetx
Definition BKE_camera.h:52
float offsety
Definition BKE_camera.h:53
float clip_start
Definition BKE_camera.h:61
float clip_end
Definition BKE_camera.h:62
float sensor_y
Definition BKE_camera.h:57
char sensor_fit
float sensor_y
float sensor_x
uint8_t flag
Definition wm_window.cc:145