Blender  V3.3
Classes | Macros
camera.c File Reference
#include <stddef.h>
#include <stdlib.h>
#include "DNA_ID.h"
#include "DNA_camera_types.h"
#include "DNA_defaults.h"
#include "DNA_light_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_view3d_types.h"
#include "BLI_listbase.h"
#include "BLI_math.h"
#include "BLI_rect.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_action.h"
#include "BKE_anim_data.h"
#include "BKE_camera.h"
#include "BKE_idtype.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_lib_query.h"
#include "BKE_main.h"
#include "BKE_object.h"
#include "BKE_scene.h"
#include "BKE_screen.h"
#include "BLT_translation.h"
#include "DEG_depsgraph_query.h"
#include "MEM_guardedalloc.h"
#include "BLO_read_write.h"

Go to the source code of this file.

Classes

struct  CameraViewFrameData
 

Macros

#define DNA_DEPRECATED_ALLOW
 

Functions

Camera Usage
voidBKE_camera_add (Main *bmain, const char *name)
 
float BKE_camera_object_dof_distance (const Object *ob)
 
float BKE_camera_sensor_size (int sensor_fit, float sensor_x, float sensor_y)
 
int BKE_camera_sensor_fit (int sensor_fit, float sizex, float sizey)
 
Camera Parameter Access
void BKE_camera_params_init (CameraParams *params)
 
void BKE_camera_params_from_object (CameraParams *params, const Object *cam_ob)
 
void BKE_camera_params_from_view3d (CameraParams *params, const Depsgraph *depsgraph, const View3D *v3d, const RegionView3D *rv3d)
 
void BKE_camera_params_compute_viewplane (CameraParams *params, int winx, int winy, float aspx, float aspy)
 
void BKE_camera_params_compute_matrix (CameraParams *params)
 
Camera View Frame
void BKE_camera_view_frame_ex (const Scene *scene, const Camera *camera, const float drawsize, const bool do_clip, const float scale[3], float r_asp[2], float r_shift[2], float *r_drawsize, float r_vec[4][3])
 
void BKE_camera_view_frame (const Scene *scene, const Camera *camera, float r_vec[4][3])
 
Camera Multi-View Matrix
static void camera_model_matrix (const Object *camera, float r_modelmat[4][4])
 
static void camera_stereo3d_model_matrix (const Object *camera, const bool is_left, float r_modelmat[4][4])
 
void BKE_camera_multiview_view_matrix (const RenderData *rd, const Object *camera, const bool is_left, float r_viewmat[4][4])
 
static bool camera_is_left (const char *viewname)
 
void BKE_camera_multiview_model_matrix (const RenderData *rd, const Object *camera, const char *viewname, float r_modelmat[4][4])
 
void BKE_camera_multiview_model_matrix_scaled (const RenderData *rd, const Object *camera, const char *viewname, float r_modelmat[4][4])
 
void BKE_camera_multiview_window_matrix (const RenderData *rd, const Object *camera, const char *viewname, float r_winmat[4][4])
 
bool BKE_camera_multiview_spherical_stereo (const RenderData *rd, const Object *camera)
 
static Objectcamera_multiview_advanced (const Scene *scene, Object *camera, const char *suffix)
 
ObjectBKE_camera_multiview_render (const Scene *scene, Object *camera, const char *viewname)
 
static float camera_stereo3d_shift_x (const Object *camera, const char *viewname)
 
float BKE_camera_multiview_shift_x (const RenderData *rd, const Object *camera, const char *viewname)
 
void BKE_camera_multiview_params (const RenderData *rd, CameraParams *params, const Object *camera, const char *viewname)
 
Camera Background Image
CameraBGImageBKE_camera_background_image_new (Camera *cam)
 
CameraBGImageBKE_camera_background_image_copy (CameraBGImage *bgpic_src, const int flag)
 
void BKE_camera_background_image_remove (Camera *cam, CameraBGImage *bgpic)
 
void BKE_camera_background_image_clear (Camera *cam)
 

Camera View Frame Fit to Points

#define CAMERA_VIEWFRAME_NUM_PLANES   4
 
#define Y_MIN   0
 
#define Y_MAX   1
 
#define Z_MIN   2
 
#define Z_MAX   3
 
typedef struct CameraViewFrameData CameraViewFrameData
 
static void camera_to_frame_view_cb (const float co[3], void *user_data)
 
static void camera_frame_fit_data_init (const Scene *scene, const Object *ob, const bool do_clip_dists, CameraParams *params, CameraViewFrameData *data)
 
static bool camera_frame_fit_calc_from_data (CameraParams *params, CameraViewFrameData *data, float r_co[3], float *r_scale, float *r_clip_start, float *r_clip_end)
 
bool BKE_camera_view_frame_fit_to_scene (Depsgraph *depsgraph, const Scene *scene, Object *camera_ob, float r_co[3], float *r_scale, float *r_clip_start, float *r_clip_end)
 
bool BKE_camera_view_frame_fit_to_coords (const Depsgraph *depsgraph, const float(*cos)[3], int num_cos, Object *camera_ob, float r_co[3], float *r_scale)
 

Camera Data-Block

IDTypeInfo IDType_ID_CA
 
static void camera_init_data (ID *id)
 
static void camera_copy_data (Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
 
static void camera_free_data (ID *id)
 
static void camera_foreach_id (ID *id, LibraryForeachIDData *data)
 
static void camera_blend_write (BlendWriter *writer, ID *id, const void *id_address)
 
static void camera_blend_read_data (BlendDataReader *reader, ID *id)
 
static void camera_blend_read_lib (BlendLibReader *reader, ID *id)
 
static void camera_blend_read_expand (BlendExpander *expander, ID *id)
 

Macro Definition Documentation

◆ CAMERA_VIEWFRAME_NUM_PLANES

#define CAMERA_VIEWFRAME_NUM_PLANES   4

Definition at line 566 of file camera.c.

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 12 of file camera.c.

◆ Y_MAX

#define Y_MAX   1

Definition at line 569 of file camera.c.

◆ Y_MIN

#define Y_MIN   0

Definition at line 568 of file camera.c.

◆ Z_MAX

#define Z_MAX   3

Definition at line 571 of file camera.c.

◆ Z_MIN

#define Z_MIN   2

Definition at line 570 of file camera.c.

Typedef Documentation

◆ CameraViewFrameData

Function Documentation

◆ BKE_camera_add()

void* BKE_camera_add ( Main bmain,
const char *  name 
)

◆ BKE_camera_background_image_clear()

void BKE_camera_background_image_clear ( Camera cam)

◆ BKE_camera_background_image_copy()

CameraBGImage* BKE_camera_background_image_copy ( struct CameraBGImage bgpic_src,
const int  copy_flag 
)

Duplicate a background image, in a ID management compatible way.

Parameters
copy_flagThe usual ID copying flags, see LIB_ID_CREATE_/LIB_ID_COPY_ enums in BKE_lib_id.h.

Definition at line 1157 of file camera.c.

References CAM_BGIMG_FLAG_OVERRIDE_LIBRARY_LOCAL, CameraBGImage::clip, CameraBGImage::flag, id_us_plus(), CameraBGImage::ima, LIB_ID_COPY_NO_LIB_OVERRIDE_LOCAL_DATA_FLAG, LIB_ID_CREATE_NO_USER_REFCOUNT, MEM_dupallocN, CameraBGImage::next, NULL, and CameraBGImage::prev.

Referenced by camera_copy_data().

◆ BKE_camera_background_image_new()

CameraBGImage* BKE_camera_background_image_new ( Camera cam)

◆ BKE_camera_background_image_remove()

void BKE_camera_background_image_remove ( Camera cam,
CameraBGImage bgpic 
)

◆ BKE_camera_multiview_model_matrix()

void BKE_camera_multiview_model_matrix ( const RenderData rd,
const Object camera,
const char *  viewname,
float  r_modelmat[4][4] 
)

◆ BKE_camera_multiview_model_matrix_scaled()

void BKE_camera_multiview_model_matrix_scaled ( const RenderData rd,
const Object camera,
const char *  viewname,
float  r_modelmat[4][4] 
)

◆ BKE_camera_multiview_params()

void BKE_camera_multiview_params ( const RenderData rd,
CameraParams params,
const Object camera,
const char *  viewname 
)

Definition at line 1127 of file camera.c.

References BKE_camera_multiview_shift_x(), camera, OB_CAMERA, and params.

Referenced by BKE_camera_multiview_window_matrix().

◆ BKE_camera_multiview_render()

Object* BKE_camera_multiview_render ( const Scene scene,
Object camera,
const char *  viewname 
)

◆ BKE_camera_multiview_shift_x()

float BKE_camera_multiview_shift_x ( const RenderData rd,
const Object camera,
const char *  viewname 
)

◆ BKE_camera_multiview_spherical_stereo()

bool BKE_camera_multiview_spherical_stereo ( const RenderData rd,
const Object camera 
)

◆ BKE_camera_multiview_view_matrix()

void BKE_camera_multiview_view_matrix ( const RenderData rd,
const Object camera,
const bool  is_left,
float  r_viewmat[4][4] 
)

◆ BKE_camera_multiview_window_matrix()

void BKE_camera_multiview_window_matrix ( const RenderData rd,
const Object camera,
const char *  viewname,
float  r_winmat[4][4] 
)

◆ BKE_camera_object_dof_distance()

float BKE_camera_object_dof_distance ( const Object ob)

◆ BKE_camera_params_compute_matrix()

void BKE_camera_params_compute_matrix ( CameraParams params)

◆ BKE_camera_params_compute_viewplane()

void BKE_camera_params_compute_viewplane ( CameraParams params,
int  winx,
int  winy,
float  aspx,
float  aspy 
)

◆ BKE_camera_params_from_object()

void BKE_camera_params_from_object ( CameraParams params,
const Object cam_ob 
)

◆ BKE_camera_params_from_view3d()

void BKE_camera_params_from_view3d ( CameraParams params,
const Depsgraph depsgraph,
const View3D v3d,
const RegionView3D rv3d 
)

◆ BKE_camera_params_init()

void BKE_camera_params_init ( CameraParams params)

◆ BKE_camera_sensor_fit()

int BKE_camera_sensor_fit ( int  sensor_fit,
float  sizex,
float  sizey 
)

◆ BKE_camera_sensor_size()

float BKE_camera_sensor_size ( int  sensor_fit,
float  sensor_x,
float  sensor_y 
)

◆ BKE_camera_view_frame()

void BKE_camera_view_frame ( const Scene scene,
const Camera camera,
float  r_vec[4][3] 
)

Definition at line 549 of file camera.c.

References BKE_camera_view_frame_ex(), camera, and scene.

◆ BKE_camera_view_frame_ex()

void BKE_camera_view_frame_ex ( const Scene scene,
const Camera camera,
const float  drawsize,
const bool  do_clip,
const float  scale[3],
float  r_asp[2],
float  r_shift[2],
float r_drawsize,
float  r_vec[4][3] 
)

◆ BKE_camera_view_frame_fit_to_coords()

bool BKE_camera_view_frame_fit_to_coords ( const Depsgraph depsgraph,
const float(*)  cos[3],
int  num_cos,
Object camera_ob,
float  r_co[3],
float r_scale 
)

◆ BKE_camera_view_frame_fit_to_scene()

bool BKE_camera_view_frame_fit_to_scene ( Depsgraph depsgraph,
const Scene scene,
Object camera_ob,
float  r_co[3],
float r_scale,
float r_clip_start,
float r_clip_end 
)

◆ camera_blend_read_data()

static void camera_blend_read_data ( BlendDataReader reader,
ID id 
)
static

◆ camera_blend_read_expand()

static void camera_blend_read_expand ( BlendExpander expander,
ID id 
)
static

Definition at line 156 of file camera.c.

References Camera::bg_images, BLO_expand, and LISTBASE_FOREACH.

◆ camera_blend_read_lib()

static void camera_blend_read_lib ( BlendLibReader reader,
ID id 
)
static

◆ camera_blend_write()

static void camera_blend_write ( BlendWriter writer,
ID id,
const void id_address 
)
static

◆ camera_copy_data()

static void camera_copy_data ( Main UNUSEDbmain,
ID id_dst,
const ID id_src,
const int  flag 
)
static

Only copy internal data of Camera ID from source to already allocated/initialized destination. You probably never want to use that directly, use BKE_id_copy or BKE_id_copy_ex for typical needs.

WARNING! This function will not handle ID user count!

Parameters
flagCopying options (see BKE_lib_id.h's LIB_ID_COPY_... flags for more).

Definition at line 70 of file camera.c.

References Camera::bg_images, BKE_camera_background_image_copy(), BLI_addtail(), BLI_listbase_clear(), LIB_ID_CREATE_NO_USER_REFCOUNT, and LISTBASE_FOREACH.

◆ camera_foreach_id()

static void camera_foreach_id ( ID id,
LibraryForeachIDData data 
)
static

◆ camera_frame_fit_calc_from_data()

static bool camera_frame_fit_calc_from_data ( CameraParams params,
CameraViewFrameData data,
float  r_co[3],
float r_scale,
float r_clip_start,
float r_clip_end 
)
static

◆ camera_frame_fit_data_init()

static void camera_frame_fit_data_init ( const Scene scene,
const Object ob,
const bool  do_clip_dists,
CameraParams params,
CameraViewFrameData data 
)
static

◆ camera_free_data()

static void camera_free_data ( ID id)
static

Free (or release) any data used by this camera (does not free the camera itself).

Definition at line 86 of file camera.c.

References Camera::bg_images, and BLI_freelistN().

◆ camera_init_data()

static void camera_init_data ( ID id)
static

◆ camera_is_left()

static bool camera_is_left ( const char *  viewname)
static

Definition at line 940 of file camera.c.

References STEREO_RIGHT_NAME, and STREQ.

Referenced by BKE_camera_multiview_model_matrix_scaled().

◆ camera_model_matrix()

static void camera_model_matrix ( const Object camera,
float  r_modelmat[4][4] 
)
static

Definition at line 827 of file camera.c.

References camera, and copy_m4_m4().

Referenced by BKE_camera_multiview_model_matrix_scaled(), and camera_stereo3d_model_matrix().

◆ camera_multiview_advanced()

static Object* camera_multiview_advanced ( const Scene scene,
Object camera,
const char *  suffix 
)
static

◆ camera_stereo3d_model_matrix()

static void camera_stereo3d_model_matrix ( const Object camera,
const bool  is_left,
float  r_modelmat[4][4] 
)
static

◆ camera_stereo3d_shift_x()

static float camera_stereo3d_shift_x ( const Object camera,
const char *  viewname 
)
static

◆ camera_to_frame_view_cb()

static void camera_to_frame_view_cb ( const float  co[3],
void user_data 
)
static

Variable Documentation

◆ IDType_ID_CA

IDTypeInfo IDType_ID_CA
Initial value:
= {
.id_code = ID_CA,
.id_filter = FILTER_ID_CA,
.main_listbase_index = INDEX_ID_CA,
.struct_size = sizeof(Camera),
.name = "Camera",
.name_plural = "cameras",
.translation_context = BLT_I18NCONTEXT_ID_CAMERA,
.asset_type_info = NULL,
.copy_data = camera_copy_data,
.free_data = camera_free_data,
.make_local = NULL,
.foreach_id = camera_foreach_id,
.foreach_cache = NULL,
.foreach_path = NULL,
.owner_get = NULL,
.blend_write = camera_blend_write,
.blend_read_data = camera_blend_read_data,
.blend_read_lib = camera_blend_read_lib,
.blend_read_expand = camera_blend_read_expand,
.blend_read_undo_preserve = NULL,
.lib_override_apply_post = NULL,
}
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
Definition: BKE_idtype.h:39
#define BLT_I18NCONTEXT_ID_CAMERA
#define FILTER_ID_CA
Definition: DNA_ID.h:902
@ INDEX_ID_CA
Definition: DNA_ID.h:1034
@ ID_CA
Definition: DNA_ID_enums.h:56
struct Camera Camera
static void init_data(ModifierData *md)
static void camera_blend_read_expand(BlendExpander *expander, ID *id)
Definition: camera.c:156
static void camera_blend_read_data(BlendDataReader *reader, ID *id)
Definition: camera.c:124
static void camera_foreach_id(ID *id, LibraryForeachIDData *data)
Definition: camera.c:92
static void camera_blend_read_lib(BlendLibReader *reader, ID *id)
Definition: camera.c:142
static void camera_copy_data(Main *UNUSED(bmain), ID *id_dst, const ID *id_src, const int flag)
Definition: camera.c:70
static void camera_blend_write(BlendWriter *writer, ID *id, const void *id_address)
Definition: camera.c:107
static void camera_free_data(ID *id)
Definition: camera.c:86
static void camera_init_data(ID *id)
Definition: camera.c:52

Definition at line 167 of file camera.c.