Blender V4.3
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 "BLI_rect.h"
8
13#ifdef __cplusplus
14extern "C" {
15#endif
16
17struct Camera;
18struct Depsgraph;
19struct Main;
20struct Object;
21struct RegionView3D;
22struct RenderData;
23struct Scene;
24struct View3D;
25
26/* Camera Data-block */
27
28void *BKE_camera_add(struct Main *bmain, const char *name);
29
30/* Camera Usage */
31
35float BKE_camera_object_dof_distance(const struct Object *ob);
36
37int BKE_camera_sensor_fit(int sensor_fit, float sizex, float sizey);
38float BKE_camera_sensor_size(int sensor_fit, float sensor_x, float sensor_y);
39
46typedef struct CameraParams {
47 /* lens */
49 float lens;
51 float zoom;
52
53 float shiftx;
54 float shifty;
55 float offsetx;
56 float offsety;
57
58 /* sensor */
59 float sensor_x;
60 float sensor_y;
62
63 /* clipping */
65 float clip_end;
66
67 /* computed viewplane */
68 float ycor;
69 float viewdx;
70 float viewdy;
72
73 /* computed matrix */
74 float winmat[4][4];
76
77/* Values for CameraParams.zoom, need to be taken into account for some operations. */
78#define CAMERA_PARAM_ZOOM_INIT_CAMOB 1.0f
79#define CAMERA_PARAM_ZOOM_INIT_PERSP 2.0f
80
84 const struct Depsgraph *depsgraph,
85 const struct View3D *v3d,
86 const struct RegionView3D *rv3d);
87
89 CameraParams *params, int winx, int winy, float aspx, float aspy);
93void BKE_camera_params_crop_viewplane(rctf *viewplane, int winx, int winy, const rcti *region);
98
99/* Camera View Frame */
100
101void BKE_camera_view_frame_ex(const struct Scene *scene,
102 const struct Camera *camera,
103 float drawsize,
104 bool do_clip,
105 const float scale[3],
106 float r_asp[2],
107 float r_shift[2],
108 float *r_drawsize,
109 float r_vec[4][3]);
110void BKE_camera_view_frame(const struct Scene *scene,
111 const struct Camera *camera,
112 float r_vec[4][3]);
113
120 const struct Scene *scene,
121 struct Object *camera_ob,
122 float r_co[3],
123 float *r_scale,
124 float *r_clip_start,
125 float *r_clip_end);
127 const float (*cos)[3],
128 int num_cos,
129 struct Object *camera_ob,
130 float r_co[3],
131 float *r_scale);
132
133/* Camera multi-view API */
134
138struct Object *BKE_camera_multiview_render(const struct Scene *scene,
139 struct Object *camera,
140 const char *viewname);
145 const struct Object *camera,
146 bool is_left,
147 float r_viewmat[4][4]);
149 const struct Object *camera,
150 const char *viewname,
151 float r_modelmat[4][4]);
153 const struct Object *camera,
154 const char *viewname,
155 float r_modelmat[4][4]);
157 const struct Object *camera,
158 const char *viewname,
159 float r_winmat[4][4]);
161 const struct Object *camera,
162 const char *viewname);
164 struct CameraParams *params,
165 const struct Object *camera,
166 const char *viewname);
168 const struct Object *camera);
169
170/* Camera background image API */
171
173
181 int flag);
182void BKE_camera_background_image_remove(struct Camera *cam, struct CameraBGImage *bgpic);
184
185#ifdef __cplusplus
186}
187#endif
float BKE_camera_sensor_size(int sensor_fit, float sensor_x, float sensor_y)
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)
void * BKE_camera_add(struct Main *bmain, const char *name)
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 CameraParams CameraParams
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)
static float is_left(const float p0[2], const float p1[2], const float p2[2])
const Depsgraph * depsgraph
uiWidgetBaseParameters params[MAX_WIDGET_BASE_BATCH]
ccl_device_inline float3 cos(float3 v)
float ortho_scale
Definition BKE_camera.h:50
float sensor_x
Definition BKE_camera.h:59
float winmat[4][4]
Definition BKE_camera.h:74
float offsetx
Definition BKE_camera.h:55
float offsety
Definition BKE_camera.h:56
float clip_start
Definition BKE_camera.h:64
float clip_end
Definition BKE_camera.h:65
float sensor_y
Definition BKE_camera.h:60
uint8_t flag
Definition wm_window.cc:138