75 object =
OBACT(view_layer);
79 object =
object->parent;
167 if (selected_count == 0) {
170 "At least one track with bundle should be selected to "
171 "define origin position");
177 if (
object ==
NULL) {
185 float median[3] = {0.0f, 0.0f, 0.0f};
192 mul_v3_fl(median, 1.0f / selected_count);
194 float mat[4][4], vec[3];
221 "Set active marker as origin by moving camera (or its parent if present) in 3D space";
233 ot->
srna,
"use_median", 0,
"Use Median",
"Set origin to median point of selected bundles");
248 float mat[4][4], vec[3], obmat[4][4], dvec[3];
275 if (
fabsf(dvec[1]) < 1e-3f) {
291 if (is_camera ||
fabsf(vec[2]) < 1e-3f) {
307 if (
fabsf(dvec[0]) < 1e-3f) {
323 if (is_camera ||
fabsf(vec[2]) < 1e-3f) {
350 float lmat[4][4], ilmat[4][4], rmat[3][3];
382 float vec[3][3], mat[4][4], obmat[4][4], newmat[4][4], orig[3] = {0.0f, 0.0f, 0.0f};
385 {0.0f, 0.0f, -1.0f, 0.0f},
386 {0.0f, 1.0f, 0.0f, 0.0f},
387 {1.0f, 0.0f, 0.0f, 0.0f},
388 {0.0f, 0.0f, 0.0f, 1.0f},
402 if (
object ==
NULL) {
410 track = tracksbase->
first;
411 while (track && tot < 3) {
414 if (tot == 0 || track == act_track) {
435 else if (plane == 1) {
459 if (object->
loc[2] < 0) {
476 set_axis(
scene,
object, clip, tracking_object, axis_track,
'X');
490 {0,
"FLOOR", 0,
"Floor",
"Set floor plane"},
491 {1,
"WALL", 0,
"Wall",
"Set wall plane"},
498 "Set plane based on 3 selected bundles by moving camera "
499 "(or its parent if present) in 3D space";
510 RNA_def_enum(
ot->
srna,
"plane", plane_items, 0,
"Plane",
"Plane to be used for orientation");
527 op->
reports,
RPT_ERROR,
"Single track with bundle should be selected to define axis");
532 if (
object ==
NULL) {
546 set_axis(
scene,
object, clip, tracking_object, track, axis == 0 ?
'X' :
'Y');
560 {0,
"X", 0,
"X",
"Align bundle align X axis"},
561 {1,
"Y", 0,
"Y",
"Align bundle align Y axis"},
568 "Set direction of scene axis rotating camera "
569 "(or its parent if present) and assume selected track "
570 "lies on real axis, joining it with the origin";
581 RNA_def_enum(
ot->
srna,
"axis", axis_actions, 0,
"Axis",
"Axis to use to align bundle along");
598 float vec[2][3], mat[4][4], scale;
606 if (!scale_solution && !apply_scale) {
608 if (
object ==
NULL) {
616 track = tracksbase->
first;
627 if (
len_v3(vec[0]) > 1e-5f) {
628 scale = dist /
len_v3(vec[0]);
636 for (track = tracksbase->
first; track; track = track->
next) {
642 mul_v3_fl(reconstructed_cameras[i].mat[3], scale);
653 else if (!scale_solution) {
656 object->scale[0] =
object->scale[1] =
object->scale[2] = 1.0f / scale;
659 object->scale[0] /= solver_camera->
scale[0];
660 object->scale[1] /= solver_camera->
scale[1];
661 object->scale[2] /= solver_camera->
scale[2];
665 tracking_object->
scale = scale;
703 ot->
description =
"Set scale of scene by scaling camera (or its parent if present)";
721 "Distance between selected tracks",
762 ot->
name =
"Set Solution Scale";
764 "Set object solution scale using distance between "
765 "two selected tracks";
766 ot->
idname =
"CLIP_OT_set_solution_scale";
783 "Distance between selected tracks",
822 ot->
name =
"Apply Solution Scale";
824 "Apply scale on solution itself to make distance between "
825 "selected tracks equals to desired";
826 ot->
idname =
"CLIP_OT_apply_solution_scale";
843 "Distance between selected tracks",
#define FOREACH_SCENE_OBJECT_END
#define FOREACH_SCENE_OBJECT_BEGIN(scene, _instance)
const bConstraintTypeInfo * BKE_constraint_typeinfo_get(struct bConstraint *con)
struct Scene * CTX_data_scene(const bContext *C)
struct SpaceClip * CTX_wm_space_clip(const bContext *C)
struct ViewLayer * CTX_data_view_layer(const bContext *C)
struct Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
General operations, lookup, etc. for blender objects.
struct MovieClip * BKE_object_movieclip_get(struct Scene *scene, struct Object *ob, bool use_default)
void BKE_object_where_is_calc(struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob)
void BKE_object_transform_copy(struct Object *ob_tar, const struct Object *ob_src)
void BKE_object_where_is_calc_mat4(struct Object *ob, float r_obmat[4][4])
void BKE_object_rot_to_mat3(const struct Object *ob, float r_mat[3][3], bool use_drot)
void BKE_object_to_mat4(struct Object *ob, float r_mat[4][4])
void BKE_object_apply_mat4(struct Object *ob, const float mat[4][4], bool use_compat, bool use_parent)
void BKE_report(ReportList *reports, eReportType type, const char *message)
void BKE_tracking_get_camera_object_matrix(struct Object *camera_object, float mat[4][4])
struct ListBase * BKE_tracking_get_active_tracks(struct MovieTracking *tracking)
struct MovieTrackingTrack * BKE_tracking_track_get_active(struct MovieTracking *tracking)
struct MovieTrackingReconstruction * BKE_tracking_get_active_reconstruction(struct MovieTracking *tracking)
#define TRACK_VIEW_SELECTED(sc, track)
struct ListBase * BKE_tracking_object_get_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *object)
struct MovieTrackingObject * BKE_tracking_object_get_active(struct MovieTracking *tracking)
void mul_m4_m4m4(float R[4][4], const float A[4][4], const float B[4][4])
bool invert_m4(float R[4][4])
void mul_m4_m4m3(float R[4][4], const float A[4][4], const float B[3][3])
void unit_m4(float m[4][4])
bool invert_m4_m4(float R[4][4], const float A[4][4])
#define mul_m4_series(...)
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
bool invert_m3(float R[3][3])
MINLINE float len_squared_v2(const float v[2]) ATTR_WARN_UNUSED_RESULT
MINLINE float normalize_v3(float r[3])
MINLINE void sub_v3_v3(float r[3], const float a[3])
MINLINE void mul_v3_fl(float r[3], float f)
MINLINE void copy_v3_v3(float r[3], const float a[3])
MINLINE void cross_v3_v3v3(float r[3], const float a[3], const float b[3])
MINLINE void zero_v3(float r[3])
MINLINE void add_v3_v3(float r[3], const float a[3])
MINLINE float len_v3(const float a[3]) ATTR_WARN_UNUSED_RESULT
struct Depsgraph Depsgraph
void DEG_id_tag_update(struct ID *id, int flag)
struct Object * DEG_get_evaluated_object(const struct Depsgraph *depsgraph, struct Object *object)
struct Scene * DEG_get_evaluated_scene(const struct Depsgraph *graph)
@ CONSTRAINT_TYPE_OBJECTSOLVER
Object is a sort of wrapper for general info.
#define OBACT(_view_layer)
struct MovieClip * ED_space_clip_get_clip(struct SpaceClip *sc)
Read Guarded memory(de)allocation.
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Sky Generate a procedural sky texture Noise Generate fractal Perlin noise Wave Generate procedural bands or rings with noise Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between camera
return(oflags[bm->toolflag_index].f &oflag) !=0
const Depsgraph * depsgraph
const ProjectiveReconstruction & reconstruction
float RNA_float_get(PointerRNA *ptr, const char *name)
void RNA_float_set(PointerRNA *ptr, const char *name, float value)
bool RNA_struct_property_is_set(PointerRNA *ptr, const char *identifier)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_float(StructOrFunctionRNA *cont_, const char *identifier, float default_value, float hardmin, float hardmax, const char *ui_name, const char *ui_description, float softmin, float softmax)
PropertyRNA * RNA_def_boolean(StructOrFunctionRNA *cont_, const char *identifier, bool default_value, const char *ui_name, const char *ui_description)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, int default_value, const char *ui_name, const char *ui_description)
struct MovieTracking tracking
struct MovieTrackingTrack * next
MovieTrackingSettings settings
int(* invoke)(struct bContext *, struct wmOperator *, const struct wmEvent *) ATTR_WARN_UNUSED_RESULT
bool(* poll)(struct bContext *) ATTR_WARN_UNUSED_RESULT
int(* exec)(struct bContext *, struct wmOperator *) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
void CLIP_OT_set_origin(wmOperatorType *ot)
static void set_axis(Scene *scene, Object *ob, MovieClip *clip, MovieTrackingObject *tracking_object, MovieTrackingTrack *track, char axis)
void CLIP_OT_apply_solution_scale(wmOperatorType *ot)
static bool set_orientation_poll(bContext *C)
static int apply_solution_scale_exec(bContext *C, wmOperator *op)
static bool set_solution_scale_poll(bContext *C)
static int apply_solution_scale_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
void CLIP_OT_set_solution_scale(wmOperatorType *ot)
void CLIP_OT_set_axis(wmOperatorType *ot)
static int set_origin_exec(bContext *C, wmOperator *op)
static Object * get_orientation_object(bContext *C)
static int set_scale_exec(bContext *C, wmOperator *op)
static int do_set_scale(bContext *C, wmOperator *op, bool scale_solution, bool apply_scale)
static bool apply_solution_scale_poll(bContext *C)
static int set_solution_scale_exec(bContext *C, wmOperator *op)
void CLIP_OT_set_scale(wmOperatorType *ot)
static Object * object_solver_camera(Scene *scene, Object *ob)
static int set_axis_exec(bContext *C, wmOperator *op)
static int set_plane_exec(bContext *C, wmOperator *op)
static int set_solution_scale_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static int set_scale_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED(event))
static void object_solver_inverted_matrix(Scene *scene, Object *ob, float invmat[4][4])
static Object * get_camera_with_movieclip(Scene *scene, MovieClip *clip)
static int count_selected_bundles(bContext *C)
void CLIP_OT_set_plane(wmOperatorType *ot)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)