86 for (coord = 0; coord < 2; coord++) {
100 segment_end(userdata, value_source);
112 segment_start(userdata, track, value_source,
true);
121 prevval = marker->
pos[coord];
125 val = (marker->
pos[coord] - prevval) * ((coord == 0) ? (
width) : (
height));
126 val /= marker->
framenr - prevfra;
131 func(userdata, track, marker, value_source, scene_framenr, val);
134 prevval = marker->
pos[coord];
140 segment_end(userdata, value_source);
151 const int clip_width,
152 const int clip_height,
153 const int scene_framenr)
155 float reprojected_position[4], bundle_position[4], marker_position[2], delta[2];
159 float projection_matrix[4][4];
161 tracking, tracking_object, scene_framenr, clip_width, clip_height, projection_matrix);
164 bundle_position[3] = 1;
166 mul_v4_m4v4(reprojected_position, projection_matrix, bundle_position);
167 reprojected_position[0] = (reprojected_position[0] / (reprojected_position[3] * 2.0f) + 0.5f) *
169 reprojected_position[1] = (reprojected_position[1] / (reprojected_position[3] * 2.0f) + 0.5f) *
173 tracking, clip_width, clip_height, reprojected_position, reprojected_position);
175 marker_position[0] = (marker->
pos[0] + track->
offset[0]) * clip_width;
176 marker_position[1] = (marker->
pos[1] + track->
offset[1]) * clip_height * aspy;
178 sub_v2_v2v2(delta, reprojected_position, marker_position);
179 return len_v2(delta) * weight;
199 int clip_width, clip_height;
203 bool is_segment_open =
false;
204 for (
int marker_index = 0; marker_index < track->
markersnr; marker_index++) {
210 if (is_segment_open) {
211 if (segment_end !=
NULL) {
214 is_segment_open =
false;
220 if (!is_segment_open) {
221 if (segment_start !=
NULL) {
222 if ((marker_index + 1) == track->
markersnr) {
226 segment_start(userdata,
232 is_segment_open =
true;
238 clip, tracking, tracking_object, track, marker, clip_width, clip_height, scene_framenr);
248 if (is_segment_open && segment_end !=
NULL) {
261 sc, track, userdata, func, segment_start, segment_end);
264 sc, track, userdata, func, segment_start, segment_end);
280 for (track = tracksbase->
first; track; track = track->
next) {
290 sc, track, userdata, func, segment_start, segment_end);
305 if (!include_hidden && (track->flag &
TRACK_HIDDEN) != 0) {
313 for (
int i = 0; i < track->markersnr; i++) {
321 func(userdata, marker);
332 bool has_bundle =
false;
333 const bool used_for_stabilization = (track->
flag &
335 if (track == act_track) {
356 if (used_for_stabilization) {
403 SpaceClip *sc,
const float x,
const float y,
float *r_offset_x,
float *r_offset_y)
411 *r_offset_x = (
x - 0.5f) *
width * aspx;
412 *r_offset_y = (
y - 0.5f) *
height * aspy;
433 track = tracksbase->
first;
479 if (marker !=
NULL) {
499 for (
int i = 0; i < spline->tot_point; i++) {
529 bool handles_as_control_point)
552 const bContext *
C,
bool fit,
float *r_offset_x,
float *r_offset_y,
float *r_zoom)
556 int frame_width, frame_height;
559 if ((frame_width == 0) || (frame_height == 0) || (sc->
clip ==
NULL)) {
577 (
max[0] +
min[0]) / (2 * frame_width),
578 (
max[1] +
min[1]) / (2 * frame_height),
583 const int h =
max[1] -
min[1];
587 if (
w > 0 && h > 0) {
591 float zoomx, zoomy, newzoom, aspx, aspy;
typedef float(TangentPoint)[2]
bool BKE_animdata_fix_paths_remove(struct ID *id, const char *path)
struct SpaceClip * CTX_wm_space_clip(const bContext *C)
struct Mask * CTX_data_edit_mask(const bContext *C)
struct ARegion * CTX_wm_region(const bContext *C)
struct Main * CTX_data_main(const bContext *C)
#define MASKPOINT_ISSEL_ANY(p)
void BKE_mask_coord_to_movieclip(struct MovieClip *clip, struct MovieClipUser *user, float r_co[2], const float co[2])
eMaskhandleMode BKE_mask_point_handles_mode_get(const struct MaskSplinePoint *point)
void BKE_movieclip_get_size(struct MovieClip *clip, struct MovieClipUser *user, int *width, int *height)
float BKE_movieclip_remap_clip_to_scene_frame(const struct MovieClip *clip, float framenr)
void BKE_tracking_plane_tracks_remove_point_track(struct MovieTracking *tracking, struct MovieTrackingTrack *track)
void BKE_tracking_plane_track_free(struct MovieTrackingPlaneTrack *plane_track)
struct ListBase * BKE_tracking_get_active_tracks(struct MovieTracking *tracking)
void BKE_tracking_get_rna_path_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_len)
#define TRACK_SELECTED(track)
float BKE_tracking_track_get_weight_for_marker(struct MovieClip *clip, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker)
struct MovieTrackingTrack * BKE_tracking_track_get_active(struct MovieTracking *tracking)
void BKE_tracking_track_free(struct MovieTrackingTrack *track)
struct ListBase * BKE_tracking_get_active_plane_tracks(struct MovieTracking *tracking)
void BKE_tracking_distort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
void BKE_tracking_get_rna_path_for_plane_track(const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track, char *rna_path, size_t rna_path_len)
#define TRACK_VIEW_SELECTED(sc, track)
void BKE_tracking_get_projection_matrix(struct MovieTracking *tracking, struct MovieTrackingObject *object, int framenr, int winx, int winy, float mat[4][4])
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
struct MovieTrackingObject * BKE_tracking_object_get_active(struct MovieTracking *tracking)
void BKE_tracking_marker_delete(struct MovieTrackingTrack *track, int framenr)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
MINLINE float min_ff(float a, float b)
MINLINE float power_of_2(float f)
void mul_v4_m4v4(float r[4], const float M[4][4], const float v[4])
void mul_v3_m4v3(float r[3], const float M[4][4], const float v[3])
MINLINE void copy_v3_v3(float r[3], const float a[3])
void minmax_v2v2_v2(float min[2], float max[2], const float vec[2])
MINLINE void sub_v2_v2v2(float r[2], const float a[2], const float b[2])
MINLINE float len_v2(const float a[2]) ATTR_WARN_UNUSED_RESULT
BLI_INLINE int BLI_rcti_size_y(const struct rcti *rct)
BLI_INLINE int BLI_rcti_size_x(const struct rcti *rct)
#define INIT_MINMAX2(min, max)
void DEG_id_tag_update(struct ID *id, int flag)
void DEG_relations_tag_update(struct Main *bmain)
#define MASK_RESTRICT_SELECT
#define MASK_RESTRICT_VIEW
@ MCLIP_PROXY_RENDER_UNDISTORT
@ SC_SHOW_GRAPH_TRACKS_MOTION
@ SC_SHOW_GRAPH_TRACKS_ERROR
int ED_space_clip_get_clip_frame_number(struct SpaceClip *sc)
void ED_clip_point_undistorted_pos(struct SpaceClip *sc, const float co[2], float r_co[2])
void ED_space_clip_get_aspect(struct SpaceClip *sc, float *aspx, float *aspy)
void ED_space_clip_get_size(struct SpaceClip *sc, int *width, int *height)
struct MovieClip * ED_space_clip_get_clip(struct SpaceClip *sc)
bool ED_mask_selected_minmax(const struct bContext *C, float min[2], float max[2], bool handles_as_control_point)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei width
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei height
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint y
@ GPU_SHADER_2D_UNIFORM_COLOR
void GPU_blend(eGPUBlend blend)
void GPU_line_width(float width)
Read Guarded memory(de)allocation.
void UI_view2d_view_ortho(const struct View2D *v2d)
SIMD_FORCE_INLINE const btScalar & w() const
Return the w value.
void(* ClipTrackValueSegmentStartCallback)(void *userdata, struct MovieTrackingTrack *track, eClipCurveValueSource value_source, bool is_point)
void(* ClipTrackValueSegmentEndCallback)(void *userdata, eClipCurveValueSource value_source)
@ CLIP_VALUE_SOURCE_REPROJECTION_ERROR
@ CLIP_VALUE_SOURCE_SPEED_Y
@ CLIP_VALUE_SOURCE_SPEED_X
void(* ClipTrackValueCallback)(void *userdata, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, eClipCurveValueSource value_source, int scene_framenr, float val)
static bool mask_has_selection(const bContext *C)
void clip_graph_tracking_values_iterate_track(SpaceClip *sc, MovieTrackingTrack *track, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
bool clip_graph_value_visible(SpaceClip *sc, eClipCurveValueSource value_source)
static float calculate_reprojection_error_at_marker(MovieClip *clip, MovieTracking *tracking, MovieTrackingObject *tracking_object, MovieTrackingTrack *track, MovieTrackingMarker *marker, const int clip_width, const int clip_height, const int scene_framenr)
void clip_delete_marker(bContext *C, MovieClip *clip, MovieTrackingTrack *track, MovieTrackingMarker *marker)
static bool tracking_has_selection(SpaceClip *space_clip)
void clip_delete_plane_track(bContext *C, MovieClip *clip, MovieTrackingPlaneTrack *plane_track)
void clip_view_center_to_point(SpaceClip *sc, float x, float y)
static bool selected_tracking_boundbox(SpaceClip *sc, float min[2], float max[2])
void clip_draw_sfra_efra(View2D *v2d, Scene *scene)
static void clip_graph_tracking_values_iterate_track_reprojection_error_values(SpaceClip *sc, MovieTrackingTrack *track, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
bool clip_view_calculate_view_selection(const bContext *C, bool fit, float *r_offset_x, float *r_offset_y, float *r_zoom)
bool clip_view_has_locked_selection(const bContext *C)
void clip_graph_tracking_values_iterate(SpaceClip *sc, bool selected_only, bool include_hidden, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
void clip_graph_tracking_iterate(SpaceClip *sc, bool selected_only, bool include_hidden, void *userdata, void(*func)(void *userdata, MovieTrackingMarker *marker))
static void clip_graph_tracking_values_iterate_track_speed_values(SpaceClip *sc, MovieTrackingTrack *track, void *userdata, ClipTrackValueCallback func, ClipTrackValueSegmentStartCallback segment_start, ClipTrackValueSegmentEndCallback segment_end)
void clip_delete_track(bContext *C, MovieClip *clip, MovieTrackingTrack *track)
void clip_view_offset_for_center_to_point(SpaceClip *sc, const float x, const float y, float *r_offset_x, float *r_offset_y)
static bool selected_boundbox(const bContext *C, float min[2], float max[2], bool handles_as_control_point)
struct MovieTracking tracking
MovieTrackingMarker * markers
struct MovieTrackingTrack * next
MovieTrackingTrack * act_track
MovieTrackingCamera camera
struct MovieClipUser user
ccl_device_inline float4 mask(const int4 &mask, const float4 &a)
void WM_event_add_notifier(const bContext *C, uint type, void *reference)