|
Blender
V2.93
|
#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_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 | |
| void * | BKE_camera_add (Main *bmain, const char *name) |
| float | BKE_camera_object_dof_distance (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, 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 Object * | camera_multiview_advanced (const Scene *scene, Object *camera, const char *suffix) |
| Object * | BKE_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 | |
| CameraBGImage * | BKE_camera_background_image_new (Camera *cam) |
| 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 |
| 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, CameraParams *params, CameraViewFrameData *data) |
| static bool | camera_frame_fit_calc_from_data (CameraParams *params, CameraViewFrameData *data, float r_co[3], float *r_scale) |
| bool | BKE_camera_view_frame_fit_to_scene (Depsgraph *depsgraph, const Scene *scene, Object *camera_ob, float r_co[3], float *r_scale) |
| 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 UNUSED(flag)) |
| static void | camera_make_local (Main *bmain, ID *id, const int flags) |
| 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) |
| typedef struct CameraViewFrameData CameraViewFrameData |
| void* BKE_camera_add | ( | Main * | bmain, |
| const char * | name | ||
| ) |
Definition at line 217 of file camera.c.
References BKE_id_new(), and ID_CA.
Referenced by BKE_object_obdata_add_from_type(), blender::io::alembic::AbcCameraReader::readObjectData(), and DocumentImporter::writeCamera().
| void BKE_camera_background_image_clear | ( | Camera * | cam | ) |
Definition at line 1153 of file camera.c.
References Camera::bg_images, BKE_camera_background_image_remove(), ListBase::first, and CameraBGImage::next.
| CameraBGImage* BKE_camera_background_image_new | ( | Camera * | cam | ) |
Definition at line 1131 of file camera.c.
References CameraBGImage::alpha, Camera::bg_images, BLI_addtail(), CAM_BGIMG_FLAG_EXPANDED, CameraBGImage::flag, ImageUser::flag, IMA_ANIM_ALWAYS, CameraBGImage::iuser, MEM_callocN, ImageUser::ok, and CameraBGImage::scale.
Referenced by background_image_add_exec(), and background_image_add_invoke().
| void BKE_camera_background_image_remove | ( | Camera * | cam, |
| CameraBGImage * | bgpic | ||
| ) |
Definition at line 1146 of file camera.c.
References Camera::bg_images, BLI_remlink(), and MEM_freeN.
Referenced by background_image_remove_exec(), and BKE_camera_background_image_clear().
| void BKE_camera_multiview_model_matrix | ( | const RenderData * | rd, |
| const Object * | camera, | ||
| const char * | viewname, | ||
| float | r_modelmat[4][4] | ||
| ) |
Definition at line 938 of file camera.c.
References BKE_camera_multiview_model_matrix_scaled(), and normalize_m4().
Referenced by BKE_camera_multiview_view_matrix().
| void BKE_camera_multiview_model_matrix_scaled | ( | const RenderData * | rd, |
| const Object * | camera, | ||
| const char * | viewname, | ||
| float | r_modelmat[4][4] | ||
| ) |
Definition at line 947 of file camera.c.
References camera_is_left(), camera_model_matrix(), camera_stereo3d_model_matrix(), is_left(), R_MULTIVIEW, SCE_VIEWS_FORMAT_MULTIVIEW, RenderData::scemode, and RenderData::views_format.
Referenced by BKE_camera_multiview_model_matrix().
| void BKE_camera_multiview_params | ( | const RenderData * | rd, |
| CameraParams * | params, | ||
| const Object * | camera, | ||
| const char * | viewname | ||
| ) |
Definition at line 1115 of file camera.c.
References BKE_camera_multiview_shift_x(), OB_CAMERA, params, and Object::type.
Referenced by BKE_camera_multiview_window_matrix().
Definition at line 1042 of file camera.c.
References BKE_scene_multiview_view_suffix_get(), camera_multiview_advanced(), NULL, Scene::r, R_MULTIVIEW, SCE_VIEWS_FORMAT_STEREO_3D, RenderData::scemode, scene, and RenderData::views_format.
| float BKE_camera_multiview_shift_x | ( | const RenderData * | rd, |
| const Object * | camera, | ||
| const char * | viewname | ||
| ) |
Definition at line 1096 of file camera.c.
References BLI_assert, camera_stereo3d_shift_x(), data, Object::data, OB_CAMERA, R_MULTIVIEW, SCE_VIEWS_FORMAT_MULTIVIEW, RenderData::scemode, Object::type, and RenderData::views_format.
Referenced by BKE_camera_multiview_params().
| bool BKE_camera_multiview_spherical_stereo | ( | const RenderData * | rd, |
| const Object * | camera | ||
| ) |
Definition at line 985 of file camera.c.
References CAM_PANO, CAM_PERSP, CAM_S3D_SPHERICAL, Object::data, ELEM, CameraStereoSettings::flag, OB_CAMERA, R_MULTIVIEW, SCE_VIEWS_FORMAT_STEREO_3D, RenderData::scemode, Camera::stereo, Camera::type, Object::type, and RenderData::views_format.
| void BKE_camera_multiview_view_matrix | ( | const RenderData * | rd, |
| const Object * | camera, | ||
| const bool | is_left, | ||
| float | r_viewmat[4][4] | ||
| ) |
Definition at line 919 of file camera.c.
References BKE_camera_multiview_model_matrix(), invert_m4(), is_left(), STEREO_LEFT_NAME, and STEREO_RIGHT_NAME.
| void BKE_camera_multiview_window_matrix | ( | const RenderData * | rd, |
| const Object * | camera, | ||
| const char * | viewname, | ||
| float | r_winmat[4][4] | ||
| ) |
Definition at line 966 of file camera.c.
References BKE_camera_multiview_params(), BKE_camera_params_compute_matrix(), BKE_camera_params_compute_viewplane(), BKE_camera_params_from_object(), BKE_camera_params_init(), copy_m4_m4(), params, RenderData::xasp, RenderData::xsch, RenderData::yasp, and RenderData::ysch.
Definition at line 227 of file camera.c.
References Object::data, Camera::dof, dot_v3v3(), fabsf, CameraDOFSettings::focus_distance, CameraDOFSettings::focus_object, if(), normalize_v3_v3(), OB_CAMERA, Object::obmat, sub_v3_v3v3(), and Object::type.
Referenced by blender::compositor::ConvertDepthToRadiusOperation::determineFocalDistance(), blender::io::usd::USDCameraWriter::do_write(), EEVEE_depth_of_field_init(), GPENCIL_cache_init(), OVERLAY_camera_cache_populate(), and workbench_dof_engine_init().
| void BKE_camera_params_compute_matrix | ( | CameraParams * | params | ) |
Definition at line 436 of file camera.c.
References orthographic_m4(), params, perspective_m4(), rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by BKE_camera_multiview_window_matrix(), camera_frame_fit_data_init(), ED_view3d_draw_offscreen_imbuf(), ED_view3d_draw_offscreen_imbuf_simple(), blender::io::gpencil::GpencilIO::prepare_camera_params(), proj_paint_state_viewport_init(), RE_GetCameraWindowWithOverscan(), RE_SetCamera(), and uvprojectModifier_do().
| void BKE_camera_params_compute_viewplane | ( | CameraParams * | params, |
| int | winx, | ||
| int | winy, | ||
| float | aspx, | ||
| float | aspy | ||
| ) |
Definition at line 370 of file camera.c.
References BKE_camera_sensor_fit(), BKE_camera_sensor_size(), CAMERA_SENSOR_FIT_HOR, float(), params, rctf::xmax, rctf::xmin, rctf::ymax, and rctf::ymin.
Referenced by BKE_camera_multiview_window_matrix(), camera_frame_fit_data_init(), ED_view3d_draw_offscreen_imbuf(), ED_view3d_draw_offscreen_imbuf_simple(), ED_view3d_viewplane_get(), blender::io::gpencil::GpencilIO::prepare_camera_params(), proj_paint_state_viewport_init(), RE_SetCamera(), uvprojectModifier_do(), and view3d_camera_border().
| void BKE_camera_params_from_object | ( | CameraParams * | params, |
| const Object * | cam_ob | ||
| ) |
Definition at line 287 of file camera.c.
References CAM_ORTHO, Camera::clip_end, Camera::clip_start, Object::data, Camera::lens, OB_CAMERA, OB_LAMP, Camera::ortho_scale, params, Camera::sensor_fit, Camera::sensor_x, Camera::sensor_y, Camera::shiftx, Camera::shifty, Light::spotsize, tanf, Camera::type, and Object::type.
Referenced by BKE_camera_multiview_window_matrix(), BKE_camera_params_from_view3d(), and camera_frame_fit_data_init().
| void BKE_camera_params_from_view3d | ( | CameraParams * | params, |
| Depsgraph * | depsgraph, | ||
| const View3D * | v3d, | ||
| const RegionView3D * | rv3d | ||
| ) |
Definition at line 326 of file camera.c.
References BKE_camera_params_from_object(), BKE_camera_sensor_size(), BKE_screen_view3d_zoom_to_fac(), RegionView3D::camdx, RegionView3D::camdy, View3D::camera, CAMERA_PARAM_ZOOM_INIT_CAMOB, CAMERA_PARAM_ZOOM_INIT_PERSP, RegionView3D::camzoom, View3D::clip_end, View3D::clip_start, DEG_get_evaluated_object(), depsgraph, RegionView3D::dist, View3D::lens, params, RegionView3D::persp, RV3D_CAMOB, and RV3D_ORTHO.
| void BKE_camera_params_init | ( | CameraParams * | params | ) |
Definition at line 271 of file camera.c.
References CAMERA_SENSOR_FIT_AUTO, DEFAULT_SENSOR_HEIGHT, DEFAULT_SENSOR_WIDTH, and params.
Referenced by BKE_camera_multiview_window_matrix(), camera_frame_fit_data_init(), ED_view3d_clip_range_get(), ED_view3d_draw_offscreen_imbuf(), ED_view3d_draw_offscreen_imbuf_simple(), ED_view3d_from_object(), ED_view3d_radius_to_dist(), ED_view3d_viewplane_get(), followtrack_evaluate_using_2d_position(), blender::io::gpencil::GpencilIO::prepare_camera_params(), proj_paint_state_viewport_init(), RE_SetCamera(), uvprojectModifier_do(), and view3d_camera_border().
Definition at line 252 of file camera.c.
References CAMERA_SENSOR_FIT_AUTO, CAMERA_SENSOR_FIT_HOR, and CAMERA_SENSOR_FIT_VERT.
Referenced by BKE_camera_params_compute_viewplane(), BKE_camera_view_frame_ex(), blender::io::usd::camera_sensor_size_for_render(), drawviewborder(), ED_view3d_win_to_3d(), lineart_create_render_buffer(), lineart_main_load_geometries(), and WIDGETGROUP_camera_refresh().
Definition at line 242 of file camera.c.
References CAMERA_SENSOR_FIT_VERT.
Referenced by BKE_camera_params_compute_viewplane(), BKE_camera_params_from_view3d(), camera_frame_fit_calc_from_data(), ED_view3d_radius_to_dist(), EEVEE_depth_of_field_init(), GPENCIL_cache_init(), blender::compositor::ConvertDepthToRadiusOperation::initExecution(), lineart_main_load_geometries(), WIDGETGROUP_camera_refresh(), and workbench_dof_engine_init().
Definition at line 556 of file camera.c.
References BKE_camera_view_frame_ex(), and scene.
| 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] | ||
| ) |
Definition at line 467 of file camera.c.
References BKE_camera_sensor_fit(), CAM_ORTHO, CAMERA_SENSOR_FIT_HOR, CAMERA_SENSOR_FIT_VERT, Camera::clip_start, float(), Camera::lens, mul_v3_fl(), Camera::ortho_scale, Scene::r, scene, Camera::sensor_fit, Camera::sensor_x, Camera::sensor_y, Camera::shiftx, Camera::shifty, Camera::type, RenderData::xasp, RenderData::xsch, RenderData::yasp, and RenderData::ysch.
Referenced by BKE_camera_view_frame().
| 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 | ||
| ) |
Definition at line 785 of file camera.c.
References camera_frame_fit_calc_from_data(), camera_frame_fit_data_init(), camera_to_frame_view_cb(), KDL::cos(), DEG_get_evaluated_object(), DEG_get_evaluated_scene(), depsgraph, and params.
| bool BKE_camera_view_frame_fit_to_scene | ( | Depsgraph * | depsgraph, |
| const Scene * | scene, | ||
| Object * | camera_ob, | ||
| float | r_co[3], | ||
| float * | r_scale | ||
| ) |
Definition at line 768 of file camera.c.
References BKE_scene_foreach_display_point(), camera_frame_fit_calc_from_data(), camera_frame_fit_data_init(), camera_to_frame_view_cb(), depsgraph, params, and scene.
|
static |
Definition at line 140 of file camera.c.
References Camera::adt, Camera::bg_images, BKE_animdata_blend_read_data(), BLO_read_data_address, BLO_read_list(), LISTBASE_FOREACH, and NULL.
|
static |
Definition at line 168 of file camera.c.
References Camera::bg_images, BLO_expand, CAM_BGIMG_SOURCE_IMAGE, CAM_BGIMG_SOURCE_MOVIE, and LISTBASE_FOREACH.
|
static |
Definition at line 154 of file camera.c.
References Camera::bg_images, BLO_read_id_address, Camera::dof, CameraDOFSettings::focus_object, Camera::id, ID::lib, and LISTBASE_FOREACH.
|
static |
Definition at line 122 of file camera.c.
References Camera::adt, Camera::bg_images, BKE_animdata_blend_write(), BKE_id_blend_write(), BLO_write_id_struct, BLO_write_is_undo(), BLO_write_struct, Camera::id, LISTBASE_FOREACH, and ID::us.
|
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!
| flag | Copying options (see BKE_lib_id.h's LIB_ID_COPY_... flags for more). |
Definition at line 85 of file camera.c.
References Camera::bg_images, and BLI_duplicatelist().
|
static |
Definition at line 107 of file camera.c.
References Camera::bg_images, BKE_LIB_FOREACHID_PROCESS, CAM_BGIMG_SOURCE_IMAGE, CAM_BGIMG_SOURCE_MOVIE, data, Camera::dof, CameraDOFSettings::focus_object, IDWALK_CB_NOP, IDWALK_CB_USER, and LISTBASE_FOREACH.
|
static |
Definition at line 664 of file camera.c.
References add_v3_v3v3(), BKE_camera_sensor_size(), BLI_rctf_size_x(), BLI_rctf_size_y(), CAMERA_VIEWFRAME_NUM_PLANES, copy_v3_v3(), data, dot_v3v3(), isect_line_line_v3(), isect_plane_plane_v3(), len_v3(), madd_v3_v3fl(), mul_v3_v3fl(), negate_v3_v3(), normalize_v3(), params, plane_from_point_normal_v3(), sqrtf_signed(), sub_v3_v3v3(), and zero_v3().
Referenced by BKE_camera_view_frame_fit_to_coords(), and BKE_camera_view_frame_fit_to_scene().
|
static |
Definition at line 607 of file camera.c.
References BKE_camera_params_compute_matrix(), BKE_camera_params_compute_viewplane(), BKE_camera_params_from_object(), BKE_camera_params_init(), CAMERA_VIEWFRAME_NUM_PLANES, copy_m3_m4(), copy_m4_m3(), copy_v4_fl(), data, invert_m4(), mul_m4_v4(), negate_v3_v3(), normalize_m3(), normalize_v3_v3(), NULL, Object::obmat, params, planes_from_projmat(), Scene::r, scene, transpose_m4(), RenderData::xasp, RenderData::xsch, RenderData::yasp, and RenderData::ysch.
Referenced by BKE_camera_view_frame_fit_to_coords(), and BKE_camera_view_frame_fit_to_scene().
|
static |
Free (or release) any data used by this camera (does not free the camera itself).
Definition at line 101 of file camera.c.
References Camera::bg_images, and BLI_freelistN().
|
static |
Definition at line 67 of file camera.c.
References BLI_assert, DNA_struct_default_get, MEMCMP_STRUCT_AFTER_IS_ZERO, and MEMCPY_STRUCT_AFTER.
|
static |
Definition at line 930 of file camera.c.
References STEREO_RIGHT_NAME, and STREQ.
Referenced by BKE_camera_multiview_model_matrix_scaled().
Definition at line 95 of file camera.c.
References BKE_lib_id_make_local_generic().
Definition at line 816 of file camera.c.
References copy_m4_m4(), and Object::obmat.
Referenced by BKE_camera_multiview_model_matrix_scaled(), and camera_stereo3d_model_matrix().
|
static |
Definition at line 1008 of file camera.c.
References BKE_scene_object_find_by_name(), BLI_snprintf(), Object::id, LISTBASE_FOREACH, MAX_NAME, ID::name, NULL, Scene::r, scene, STREQ, and RenderData::views.
Referenced by BKE_camera_multiview_render().
|
static |
Definition at line 821 of file camera.c.
References angle(), atanf, CAM_S3D_PIVOT_CENTER, CAM_S3D_PIVOT_LEFT, CAM_S3D_PIVOT_RIGHT, CAM_S3D_TOE, camera_model_matrix(), copy_m4_m4(), cosf, data, Object::data, if(), is_left(), mat4_to_size(), mul_m4_m4m4(), normalize_m4_m4(), Object::obmat, sinf, size(), size_to_mat4(), translate_m4(), and unit_m4().
Referenced by BKE_camera_multiview_model_matrix_scaled().
Definition at line 1057 of file camera.c.
References CAM_S3D_OFFAXIS, CAM_S3D_PIVOT_CENTER, CAM_S3D_PIVOT_LEFT, CAM_S3D_PIVOT_RIGHT, data, Object::data, is_left(), STEREO_LEFT_NAME, and STREQ.
Referenced by BKE_camera_multiview_shift_x().
|
static |
Definition at line 590 of file camera.c.
References CAMERA_VIEWFRAME_NUM_PLANES, CLAMP_MAX, data, dist_signed_squared_to_plane_v3(), dot_v3v3(), and user_data.
Referenced by BKE_camera_view_frame_fit_to_coords(), and BKE_camera_view_frame_fit_to_scene().
| IDTypeInfo IDType_ID_CA |