Blender
V3.3
|
#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 |
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) |
typedef struct CameraViewFrameData CameraViewFrameData |
Definition at line 203 of file camera.c.
References BKE_id_new(), and ID_CA.
Referenced by BKE_object_obdata_add_from_type(), blender::io::usd::USDCameraReader::create_object(), blender::io::alembic::AbcCameraReader::readObjectData(), and DocumentImporter::writeCamera().
Definition at line 1182 of file camera.c.
References Camera::bg_images, BKE_camera_background_image_remove(), ListBase::first, and CameraBGImage::next.
CameraBGImage* BKE_camera_background_image_copy | ( | struct CameraBGImage * | bgpic_src, |
const int | copy_flag | ||
) |
Duplicate a background image, in a ID management compatible way.
copy_flag | The 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().
CameraBGImage* BKE_camera_background_image_new | ( | Camera * | cam | ) |
Definition at line 1143 of file camera.c.
References CameraBGImage::alpha, Camera::bg_images, BLI_addtail(), CAM_BGIMG_FLAG_EXPANDED, CAM_BGIMG_FLAG_OVERRIDE_LIBRARY_LOCAL, CameraBGImage::flag, ImageUser::flag, IMA_ANIM_ALWAYS, CameraBGImage::iuser, MEM_callocN, 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 1175 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 948 of file camera.c.
References BKE_camera_multiview_model_matrix_scaled(), camera, 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 957 of file camera.c.
References camera, 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 1127 of file camera.c.
References BKE_camera_multiview_shift_x(), camera, OB_CAMERA, and params.
Referenced by BKE_camera_multiview_window_matrix().
Definition at line 1051 of file camera.c.
References BKE_scene_multiview_view_suffix_get(), camera, 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 1105 of file camera.c.
References BLI_assert, CAM_PANO, camera, camera_stereo3d_shift_x(), data, OB_CAMERA, R_MULTIVIEW, SCE_VIEWS_FORMAT_MULTIVIEW, RenderData::scemode, 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 995 of file camera.c.
References CAM_PANO, CAM_PERSP, CAM_S3D_SPHERICAL, camera, ELEM, CameraStereoSettings::flag, OB_CAMERA, R_MULTIVIEW, SCE_VIEWS_FORMAT_STEREO_3D, RenderData::scemode, Camera::stereo, Camera::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 929 of file camera.c.
References BKE_camera_multiview_model_matrix(), camera, 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 976 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(), camera, copy_m4_m4(), params, RenderData::xasp, RenderData::xsch, RenderData::yasp, and RenderData::ysch.
Definition at line 212 of file camera.c.
References BKE_pose_channel_find_name(), Object::data, Camera::dof, dot_v3v3(), fabsf, CameraDOFSettings::focus_distance, CameraDOFSettings::focus_object, CameraDOFSettings::focus_subtarget, if(), mul_m4_m4m4(), normalize_v3_v3(), OB_CAMERA, Object::obmat, Object::pose, bPoseChannel::pose_mat, sub_v3_v3v3(), and Object::type.
void BKE_camera_params_compute_matrix | ( | CameraParams * | params | ) |
View-plane is assumed to be already computed.
Definition at line 429 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 364 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 281 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, |
const Depsgraph * | depsgraph, | ||
const View3D * | v3d, | ||
const RegionView3D * | rv3d | ||
) |
Definition at line 320 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 265 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 246 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 236 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::init_execution(), lineart_main_load_geometries(), WIDGETGROUP_camera_refresh(), and workbench_dof_engine_init().
Definition at line 549 of file camera.c.
References BKE_camera_view_frame_ex(), camera, 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 460 of file camera.c.
References BKE_camera_sensor_fit(), CAM_ORTHO, camera, CAMERA_SENSOR_FIT_HOR, CAMERA_SENSOR_FIT_VERT, float(), mul_v3_fl(), Scene::r, scene, 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 796 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, NULL, 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, | ||
float * | r_clip_start, | ||
float * | r_clip_end | ||
) |
Definition at line 773 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 124 of file camera.c.
References Camera::adt, Camera::bg_images, BKE_animdata_blend_read_data(), BLO_read_data_address, BLO_read_list(), CAM_BGIMG_FLAG_OVERRIDE_LIBRARY_LOCAL, ID_IS_LINKED, LISTBASE_FOREACH, and NULL.
|
static |
Definition at line 156 of file camera.c.
References Camera::bg_images, BLO_expand, and LISTBASE_FOREACH.
|
static |
Definition at line 142 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 107 of file camera.c.
References Camera::adt, Camera::bg_images, BKE_animdata_blend_write(), BKE_id_blend_write(), BLO_write_id_struct, BLO_write_struct, Camera::id, and LISTBASE_FOREACH.
|
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 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.
|
static |
Definition at line 92 of file camera.c.
References BKE_LIB_FOREACHID_PROCESS_IDSUPER, CAM_BGIMG_SOURCE_IMAGE, CAM_BGIMG_SOURCE_MOVIE, camera, data, 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(), sub_v3_v3v3(), Y_MAX, Y_MIN, Z_MAX, Z_MIN, and zero_v3().
Referenced by BKE_camera_view_frame_fit_to_coords(), and BKE_camera_view_frame_fit_to_scene().
|
static |
Definition at line 604 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(), data, invert_m4(), mul_m4_v4(), negate_v3_v3(), normalize_m3(), normalize_v3(), NULL, Object::obmat, params, planes_from_projmat(), Scene::r, scene, transpose_m4(), RenderData::xasp, RenderData::xsch, Y_MAX, Y_MIN, RenderData::yasp, RenderData::ysch, Z_MAX, and Z_MIN.
Referenced by BKE_camera_view_frame_fit_to_coords(), and BKE_camera_view_frame_fit_to_scene().
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().
Definition at line 52 of file camera.c.
References BLI_assert, DNA_struct_default_get, MEMCMP_STRUCT_AFTER_IS_ZERO, and MEMCPY_STRUCT_AFTER.
|
static |
Definition at line 940 of file camera.c.
References STEREO_RIGHT_NAME, and STREQ.
Referenced by BKE_camera_multiview_model_matrix_scaled().
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().
|
static |
Definition at line 1018 of file camera.c.
References BKE_scene_object_find_by_name(), BLI_snprintf(), camera, LISTBASE_FOREACH, MAX_NAME, NULL, Scene::r, scene, STREQ, and RenderData::views.
Referenced by BKE_camera_multiview_render().
|
static |
Definition at line 832 of file camera.c.
References angle(), atanf, CAM_S3D_PIVOT_CENTER, CAM_S3D_PIVOT_LEFT, CAM_S3D_PIVOT_RIGHT, CAM_S3D_TOE, camera, camera_model_matrix(), copy_m4_m4(), cosf, data, if(), is_left(), mat4_to_size(), mul_m4_m4m4(), normalize_m4_m4(), sinf, size(), size_to_mat4(), translate_m4(), and unit_m4().
Referenced by BKE_camera_multiview_model_matrix_scaled().
Definition at line 1066 of file camera.c.
References CAM_S3D_OFFAXIS, CAM_S3D_PIVOT_CENTER, CAM_S3D_PIVOT_LEFT, CAM_S3D_PIVOT_RIGHT, camera, data, is_left(), STEREO_LEFT_NAME, and STREQ.
Referenced by BKE_camera_multiview_shift_x().
Definition at line 586 of file camera.c.
References CAMERA_VIEWFRAME_NUM_PLANES, CLAMP_MAX, CLAMP_MIN, data, dot_v3v3(), plane_point_side_v3(), and user_data.
Referenced by BKE_camera_view_frame_fit_to_coords(), and BKE_camera_view_frame_fit_to_scene().
IDTypeInfo IDType_ID_CA |