Blender V4.3
camera.cc File Reference
#include <cstddef>
#include <cstdlib>
#include <optional>
#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_geom.h"
#include "BLI_math_matrix.h"
#include "BLI_math_vector.h"
#include "BLI_rect.h"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "BKE_action.hh"
#include "BKE_camera.h"
#include "BKE_idprop.hh"
#include "BKE_idtype.hh"
#include "BKE_lib_id.hh"
#include "BKE_lib_query.hh"
#include "BKE_object.hh"
#include "BKE_scene.hh"
#include "BKE_screen.hh"
#include "BLT_translation.hh"
#include "DEG_depsgraph_query.hh"
#include "MEM_guardedalloc.h"
#include "BLO_read_write.hh"

Go to the source code of this file.

Classes

struct  CameraCyclesCompatibilityData
 
struct  CameraViewFrameData
 

Macros

#define DNA_DEPRECATED_ALLOW
 

Functions

Camera Usage
void * BKE_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_crop_viewplane (rctf *viewplane, int winx, int winy, const rcti *region)
 
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 (const 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
 
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 *, std::optional< Library * >, 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 CameraCyclesCompatibilityData camera_write_cycles_compatibility_data_create (ID *id)
 
static void camera_write_cycles_compatibility_data_clear (ID *id, CameraCyclesCompatibilityData &data)
 
static void camera_blend_write (BlendWriter *writer, ID *id, const void *id_address)
 
static void camera_blend_read_data (BlendDataReader *reader, ID *id)
 

Macro Definition Documentation

◆ CAMERA_VIEWFRAME_NUM_PLANES

#define CAMERA_VIEWFRAME_NUM_PLANES   4

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 14 of file blenkernel/intern/camera.cc.

◆ Y_MAX

#define Y_MAX   1

◆ Y_MIN

#define Y_MIN   0

◆ Z_MAX

#define Z_MAX   3

◆ Z_MIN

#define Z_MIN   2

Function Documentation

◆ BKE_camera_add()

◆ BKE_camera_background_image_clear()

void BKE_camera_background_image_clear ( Camera * cam)

◆ BKE_camera_background_image_copy()

◆ BKE_camera_background_image_new()

◆ 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 )

◆ 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()

◆ 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()

◆ BKE_camera_object_dof_distance()

◆ BKE_camera_params_compute_matrix()

◆ BKE_camera_params_compute_viewplane()

◆ BKE_camera_params_crop_viewplane()

void BKE_camera_params_crop_viewplane ( rctf * viewplane,
int winx,
int winy,
const rcti * region )

Crop viewplane given the current resolution and a pixel region inside the view plane.

Definition at line 488 of file blenkernel/intern/camera.cc.

References BLI_rctf_size_x(), BLI_rctf_size_y(), BLI_rcti_size_x(), BLI_rcti_size_y(), rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.

Referenced by blender::eevee::Camera::sync().

◆ BKE_camera_params_from_object()

◆ BKE_camera_params_from_view3d()

◆ BKE_camera_params_init()

◆ BKE_camera_sensor_fit()

◆ BKE_camera_sensor_size()

◆ BKE_camera_view_frame()

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

Definition at line 620 of file blenkernel/intern/camera.cc.

References BKE_camera_view_frame_ex().

◆ 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_write()

◆ camera_copy_data()

static void camera_copy_data ( Main * ,
std::optional< Library * > ,
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.hh's LIB_ID_COPY_... flags for more).

Definition at line 72 of file blenkernel/intern/camera.cc.

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

◆ camera_foreach_id()

◆ camera_frame_fit_calc_from_data()

◆ camera_frame_fit_data_init()

◆ 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 92 of file blenkernel/intern/camera.cc.

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 1011 of file blenkernel/intern/camera.cc.

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

◆ 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

◆ camera_write_cycles_compatibility_data_clear()

static void camera_write_cycles_compatibility_data_clear ( ID * id,
CameraCyclesCompatibilityData & data )
static

Definition at line 176 of file blenkernel/intern/camera.cc.

References IDP_FreeProperty().

Referenced by camera_blend_write().

◆ camera_write_cycles_compatibility_data_create()

Variable Documentation

◆ IDType_ID_CA

IDTypeInfo IDType_ID_CA
Initial value:
= {
sizeof(Camera),
"Camera",
N_("cameras"),
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
nullptr,
}
@ IDTYPE_FLAGS_APPEND_IS_REUSABLE
Definition BKE_idtype.hh:39
#define BLT_I18NCONTEXT_ID_CAMERA
#define FILTER_ID_OB
Definition DNA_ID.h:1181
#define FILTER_ID_CA
Definition DNA_ID.h:1167
@ INDEX_ID_CA
Definition DNA_ID.h:1301
#define FILTER_ID_IM
Definition DNA_ID.h:1171
@ ID_CA
struct Camera Camera
static void camera_blend_read_data(BlendDataReader *reader, ID *id)
static void camera_foreach_id(ID *id, LibraryForeachIDData *data)
static void camera_copy_data(Main *, std::optional< Library * >, ID *id_dst, const ID *id_src, const int flag)
static void camera_blend_write(BlendWriter *writer, ID *id, const void *id_address)
static void camera_free_data(ID *id)
static void camera_init_data(ID *id)
#define N_(msgid)

Definition at line 227 of file blenkernel/intern/camera.cc.