Blender V5.0
BKE_tracking.h
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2011 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
10
11#include "BLI_sys_types.h"
12
13struct Camera;
14struct ImBuf;
15struct ListBase;
16struct MovieClipUser;
17struct MovieDistortion;
19struct MovieTracking;
26struct Object;
27struct Scene;
28struct bGPDlayer;
29struct rcti;
30
31/* --------------------------------------------------------------------
32 * Common types and constants.
33 */
34
43
44/* --------------------------------------------------------------------
45 * Common functions.
46 */
47
54void BKE_tracking_free(struct MovieTracking *tracking);
58void BKE_tracking_copy(struct MovieTracking *tracking_dst,
59 const struct MovieTracking *tracking_src,
60 int flag);
61
66void BKE_tracking_settings_init(struct MovieTracking *tracking);
67
68/* Matrices for constraints and drawing. */
69
74void BKE_tracking_get_camera_object_matrix(const struct Object *camera_object, float mat[4][4]);
82 struct MovieTrackingObject *tracking_object,
83 int framenr,
84 int winx,
85 int winy,
86 float mat[4][4]);
87
88/* --------------------------------------------------------------------
89 * Clipboard.
90 */
91
100 struct MovieTrackingObject *tracking_object);
111 struct MovieTrackingObject *tracking_object);
112
113/* **** Track **** */
114
121 struct ListBase *tracks_list);
132 struct ListBase *tracksbase,
133 float x,
134 float y,
135 int framenr,
136 int width,
137 int height);
147void BKE_tracking_track_unique_name(struct ListBase *tracksbase, struct MovieTrackingTrack *track);
155
161 int *r_first_frame,
162 int *r_last_frame);
163
168 int num_tracks,
169 int *r_first_frame,
170 int *r_last_frame);
171
174
180 struct MovieTracking *tracking, int *r_num_tracks);
181
188void BKE_tracking_track_flag_set(struct MovieTrackingTrack *track, int area, int flag);
195void BKE_tracking_track_flag_clear(struct MovieTrackingTrack *track, int area, int flag);
196
202bool BKE_tracking_track_has_marker_at_frame(struct MovieTrackingTrack *track, int framenr);
209
215typedef enum eTrackClearAction {
216 /* Clear path from `ref_frame+1` up to the current frame. */
218 /* Clear path from the beginning up to `ref_frame-1`. */
220 /* Only marker at frame `ref_frame` will remain. */
224 int ref_frame,
225 eTrackClearAction action);
226
227void BKE_tracking_tracks_join(struct MovieTracking *tracking,
228 struct MovieTrackingTrack *dst_track,
229 struct MovieTrackingTrack *src_track);
230
232 /*const*/ struct MovieTrackingTrack **src_tracks,
233 int num_src_tracks);
234
236 struct MovieTracking *tracking, int selection_index, struct ListBase **r_tracksbase);
237
238float *BKE_tracking_track_get_mask(int frame_width,
239 int frame_height,
240 const struct MovieTrackingTrack *track,
241 const struct MovieTrackingMarker *marker);
242
244 struct MovieTrackingTrack *track,
245 struct MovieTrackingMarker *marker);
246
247/* --------------------------------------------------------------------
248 * Selection.
249 */
250
254void BKE_tracking_track_select(struct ListBase *tracksbase,
255 struct MovieTrackingTrack *track,
256 int area,
257 bool extend);
258void BKE_tracking_track_deselect(struct MovieTrackingTrack *track, int area);
259void BKE_tracking_tracks_deselect_all(struct ListBase *tracksbase);
260
261/* --------------------------------------------------------------------
262 * Marker.
263 */
264
266 struct MovieTrackingMarker *marker);
268
280
288
298
311 int framenr);
313 int framenr);
314
325 int framenr,
326 struct MovieTrackingMarker *r_marker);
327
329 float min[2],
330 float max[2]);
331
333 float framenr,
334 float pos[2]);
335
336/* --------------------------------------------------------------------
337 * Plane track.
338 */
339
344 struct ListBase *plane_tracks_base,
345 struct ListBase *tracks,
346 int framenr);
347void BKE_tracking_plane_track_unique_name(struct ListBase *plane_tracks_base,
348 struct MovieTrackingPlaneTrack *plane_track);
356
358 int framenr);
360 struct MovieTrackingPlaneTrack *plane_track, int framenr);
361
362void BKE_tracking_plane_tracks_deselect_all(struct ListBase *plane_tracks_base);
363
365 struct MovieTrackingTrack *track);
367 struct MovieTrackingTrack *track);
368
370 struct MovieTrackingTrack *track);
371
373 struct MovieTrackingTrack *old_track,
374 struct MovieTrackingTrack *new_track);
376 struct MovieTrackingTrack *old_track,
377 struct MovieTrackingTrack *new_track);
378
379/* --------------------------------------------------------------------
380 * Plane marker.
381 */
382
384 struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingPlaneMarker *plane_marker);
386
392 struct MovieTrackingPlaneTrack *plane_track, int framenr);
398 struct MovieTrackingPlaneTrack *plane_track, int framenr);
403 struct MovieTrackingPlaneTrack *plane_track, int framenr);
405 float framenr,
406 float corners[4][2]);
407
408/* --------------------------------------------------------------------
409 * Object.
410 */
411
413 const char *name);
414bool BKE_tracking_object_delete(struct MovieTracking *tracking,
415 struct MovieTrackingObject *tracking_object);
416
418 struct MovieTrackingObject *tracking_object);
419
421 const char *name);
422
425
426/* Find point track with the given name in the tracking object.
427 * If such track does not exist NULL is returned. */
429 struct MovieTrackingObject *tracking_object, const char *name);
430
431/* Find plane track with the given name in the tracking object.
432 * If such track does not exist NULL is returned. */
434 struct MovieTrackingObject *tracking_object, const char *name);
435
436/* --------------------------------------------------------------------
437 * Camera.
438 */
439
444 struct MovieTracking *tracking, int winx, int winy, float *shiftx, float *shifty);
446 struct Scene *scene,
447 struct Camera *camera,
448 int width,
449 int height);
450
452 struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, int framenr);
454 struct MovieTrackingObject *tracking_object,
455 float framenr,
456 float mat[4][4]);
457
458/* Access the principal point in pixels space. */
460 float r_principal_point_pixel[2]);
462 const float principal_point_pixel[2]);
463
464/* Compares distortion related parameters of camera. Ideally, this implementation will be
465 * abstracted away in the future, but for now, one needs to be careful about it and handle any
466 * extra parameters of distortions models. */
468 const struct MovieTrackingCamera *b);
469/* Hashes distortion related parameters of camera. Ideally, this implementation will be
470 * abstracted away in the future, but for now, one needs to be careful about it and handle any
471 * extra parameters of distortions models. */
473
474/* --------------------------------------------------------------------
475 * (Un)distortion.
476 */
477
479 int calibration_width,
480 int calibration_height);
481void BKE_tracking_distortion_update(struct MovieDistortion *distortion,
482 struct MovieTracking *tracking,
483 int calibration_width,
484 int calibration_height);
486struct ImBuf *BKE_tracking_distortion_exec(struct MovieDistortion *distortion,
487 struct MovieTracking *tracking,
488 struct ImBuf *ibuf,
489 int width,
490 int height,
491 float overscan,
492 bool undistort);
494 const float co[2],
495 float r_co[2]);
497 const float co[2],
498 float r_co[2]);
499void BKE_tracking_distortion_free(struct MovieDistortion *distortion);
500
501void BKE_tracking_distort_v2(struct MovieTracking *tracking,
502 int image_width,
503 int image_height,
504 const float co[2],
505 float r_co[2]);
506void BKE_tracking_undistort_v2(struct MovieTracking *tracking,
507 int image_width,
508 int image_height,
509 const float co[2],
510 float r_co[2]);
511
512struct ImBuf *BKE_tracking_undistort_frame(struct MovieTracking *tracking,
513 struct ImBuf *ibuf,
514 int calibration_width,
515 int calibration_height,
516 float overscan);
517struct ImBuf *BKE_tracking_distort_frame(struct MovieTracking *tracking,
518 struct ImBuf *ibuf,
519 int calibration_width,
520 int calibration_height,
521 float overscan);
522
523/* Given the size of an image that will be distorted/undistorted by the given tracking, compute the
524 * number of pixels that the image will grow/shrink by in each of the four bounds of the image as a
525 * result of the distortion/undistortion. The deltas for the bounds are positive for expansion and
526 * negative for shrinking. */
528 const int size[2],
529 const int calibration_size[2],
530 const bool undistort,
531 int *r_right,
532 int *r_left,
533 int *r_bottom,
534 int *r_top);
535
536/* --------------------------------------------------------------------
537 * Image sampling.
538 */
539
540struct ImBuf *BKE_tracking_sample_pattern(int frame_width,
541 int frame_height,
542 const struct ImBuf *search_ib,
543 const struct MovieTrackingTrack *track,
544 const struct MovieTrackingMarker *marker,
545 bool from_anchor,
546 bool use_mask,
547 int num_samples_x,
548 int num_samples_y,
549 float pos[2]);
550struct ImBuf *BKE_tracking_get_pattern_imbuf(const struct ImBuf *ibuf,
551 const struct MovieTrackingTrack *track,
552 const struct MovieTrackingMarker *marker,
553 bool anchored,
554 bool disable_channels);
555struct ImBuf *BKE_tracking_get_search_imbuf(const struct ImBuf *ibuf,
556 const struct MovieTrackingTrack *track,
557 const struct MovieTrackingMarker *marker,
558 bool anchored,
559 bool disable_channels);
560
561/* Create a new image buffer which consists of pixels which the plane marker "sees".
562 * The function will choose best image resolution based on the plane marker size. */
563struct ImBuf *BKE_tracking_get_plane_imbuf(const struct ImBuf *frame_ibuf,
564 const struct MovieTrackingPlaneMarker *plane_marker);
565
572 struct ImBuf *ibuf, bool disable_red, bool disable_green, bool disable_blue, bool grayscale);
573
574/* --------------------------------------------------------------------
575 * 2D tracking.
576 */
577
583void BKE_tracking_refine_marker(struct MovieClip *clip,
584 struct MovieTrackingTrack *track,
585 struct MovieTrackingMarker *marker,
586 bool backwards);
587
588/* --------------------------------------------------------------------
589 * 2D tracking using auto-track pipeline.
590 */
591
593 struct MovieClipUser *user,
594 bool is_backwards);
596bool BKE_autotrack_context_step(struct AutoTrackContext *context);
597void BKE_autotrack_context_sync(struct AutoTrackContext *context);
598void BKE_autotrack_context_sync_user(struct AutoTrackContext *context, struct MovieClipUser *user);
600void BKE_autotrack_context_free(struct AutoTrackContext *context);
601
602/* --------------------------------------------------------------------
603 * Plane tracking.
604 */
605
610 int start_frame);
612 struct MovieTrackingPlaneTrack *plane_track, int start_frame);
613void BKE_tracking_homography_between_two_quads(/*const*/ float reference_corners[4][2],
614 /*const*/ float corners[4][2],
615 float H[3][3]);
616
617/* --------------------------------------------------------------------
618 * Camera solving.
619 */
620
625 struct MovieTrackingObject *tracking_object,
626 char *error_msg,
627 int error_size);
628
635 struct MovieClip *clip,
636 struct MovieTrackingObject *tracking_object,
637 int keyframe1,
638 int keyframe2,
639 int width,
640 int height);
656 bool *stop,
657 bool *do_update,
658 float *progress,
659 char *stats_message,
660 int message_size);
665 struct MovieTracking *tracking);
666
668 const char *error_message);
669
671 const struct MovieReconstructContext *context);
672
676void BKE_tracking_reconstruction_scale(struct MovieTracking *tracking, float scale[3]);
677
678/* **** Feature detection **** */
679
683void BKE_tracking_detect_fast(struct MovieTracking *tracking,
684 struct ListBase *tracksbase,
685 struct ImBuf *ibuf,
686 int framenr,
687 int margin,
688 int min_trackness,
689 int min_distance,
690 struct bGPDlayer *layer,
691 bool place_outside_layer);
692
696void BKE_tracking_detect_harris(struct MovieTracking *tracking,
697 struct ListBase *tracksbase,
698 struct ImBuf *ibuf,
699 int framenr,
700 int margin,
701 float threshold,
702 int min_distance,
703 struct bGPDlayer *layer,
704 bool place_outside_layer);
705
706/* --------------------------------------------------------------------
707 * 2D stabilization.
708 */
709
728 int framenr,
729 int width,
730 int height,
731 float translation[2],
732 float *scale,
733 float *angle);
741struct ImBuf *BKE_tracking_stabilize_frame(struct MovieClip *clip,
742 int framenr,
743 struct ImBuf *ibuf,
744 float translation[2],
745 float *scale,
746 float *angle);
759 int height,
760 float aspect,
761 float translation[2],
762 float scale,
763 float angle,
764 float mat[4][4]);
765
766/* Dope-sheet */
767
775void BKE_tracking_dopesheet_update(struct MovieTracking *tracking);
776
777/* --------------------------------------------------------------------
778 * Query and search.
779 */
780
785 const struct MovieTracking *tracking, const struct MovieTrackingTrack *track);
787 const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track);
788
790 const struct MovieTrackingTrack *track,
791 char *rna_path,
792 size_t rna_path_maxncpy);
794 const struct MovieTrackingTrack *track,
795 char *rna_path,
796 size_t rna_path_maxncpy);
798 const struct MovieTrackingPlaneTrack *plane_track,
799 char *rna_path,
800 size_t rna_path_len);
802 const struct MovieTracking *tracking,
803 const struct MovieTrackingPlaneTrack *plane_track,
804 char *rna_path,
805 size_t rna_path_maxncpy);
806
807/* --------------------------------------------------------------------
808 * Utility macros.
809 */
810
811#define TRACK_SELECTED(track) \
812 ((track)->flag & SELECT || (track)->pat_flag & SELECT || (track)->search_flag & SELECT)
813
814#define TRACK_AREA_SELECTED(track, area) \
815 ((area) == TRACK_AREA_POINT ? \
816 (track)->flag & SELECT : \
817 ((area) == TRACK_AREA_PAT ? (track)->pat_flag & SELECT : (track)->search_flag & SELECT))
818
819#define TRACK_VIEW_SELECTED(sc, track) \
820 ((((track)->flag & TRACK_HIDDEN) == 0) && \
821 (TRACK_AREA_SELECTED(track, TRACK_AREA_POINT) || \
822 (((sc)->flag & SC_SHOW_MARKER_PATTERN) && TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) || \
823 (((sc)->flag & SC_SHOW_MARKER_SEARCH) && TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))))
824
825#define PLANE_TRACK_VIEW_SELECTED(plane_track) \
826 ((((plane_track)->flag & PLANE_TRACK_HIDDEN) == 0) && ((plane_track)->flag & SELECT))
struct MovieTrackingObject * BKE_tracking_object_get_camera(const struct MovieTracking *tracking)
struct MovieTrackingTrack * BKE_tracking_track_get_for_selection_index(struct MovieTracking *tracking, int selection_index, struct ListBase **r_tracksbase)
Definition tracking.cc:1025
void BKE_tracking_track_path_clear(struct MovieTrackingTrack *track, int ref_frame, eTrackClearAction action)
Definition tracking.cc:776
void BKE_tracking_plane_tracks_remove_point_track(struct MovieTracking *tracking, struct MovieTrackingTrack *track)
Definition tracking.cc:1675
void BKE_tracking_plane_track_free(struct MovieTrackingPlaneTrack *plane_track)
Definition tracking.cc:1625
void BKE_tracking_marker_clamp_pattern_position(struct MovieTrackingMarker *marker)
Definition tracking.cc:1308
void BKE_tracking_get_rna_path_prefix_for_plane_track(const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track, char *rna_path, size_t rna_path_maxncpy)
void BKE_tracking_track_deselect(struct MovieTrackingTrack *track, int area)
Definition tracking.cc:1217
void BKE_tracking_plane_track_replace_point_track(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingTrack *old_track, struct MovieTrackingTrack *new_track)
Definition tracking.cc:1691
struct MovieTrackingPlaneTrack * BKE_tracking_plane_track_add(struct MovieTracking *tracking, struct ListBase *plane_tracks_base, struct ListBase *tracks, int framenr)
Definition tracking.cc:1542
bool BKE_tracking_plane_track_has_marker_at_frame(struct MovieTrackingPlaneTrack *plane_track, int framenr)
bool BKE_tracking_plane_track_remove_point_track(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingTrack *track)
Definition tracking.cc:1652
struct ImBuf * BKE_tracking_distort_frame(struct MovieTracking *tracking, struct ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
Definition tracking.cc:2487
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_insert(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingPlaneMarker *plane_marker)
Definition tracking.cc:1719
struct AutoTrackContext * BKE_autotrack_context_new(struct MovieClip *clip, struct MovieClipUser *user, bool is_backwards)
void BKE_tracking_clipboard_copy_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object)
Definition tracking.cc:461
void BKE_tracking_get_camera_object_matrix(const struct Object *camera_object, float mat[4][4])
void BKE_tracking_detect_harris(struct MovieTracking *tracking, struct ListBase *tracksbase, struct ImBuf *ibuf, int framenr, int margin, float threshold, int min_distance, struct bGPDlayer *layer, bool place_outside_layer)
void BKE_tracking_reconstruction_context_free(struct MovieReconstructContext *context)
void BKE_tracking_plane_marker_delete(struct MovieTrackingPlaneTrack *plane_track, int framenr)
Definition tracking.cc:1760
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get_exact(struct MovieTrackingPlaneTrack *plane_track, int framenr)
Definition tracking.cc:1837
void BKE_tracking_stabilization_data_to_mat4(int width, int height, float aspect, float translation[2], float scale, float angle, float mat[4][4])
void BKE_tracking_reconstruction_solve(struct MovieReconstructContext *context, bool *stop, bool *do_update, float *progress, char *stats_message, int message_size)
void BKE_autotrack_context_finish(struct AutoTrackContext *context)
struct MovieTrackingTrack * BKE_tracking_track_duplicate(struct MovieTrackingTrack *track)
Definition tracking.cc:566
void BKE_tracking_retrack_plane_from_existing_motion_at_segment(struct MovieTrackingPlaneTrack *plane_track, int start_frame)
void BKE_tracking_reconstruction_report_error_message(struct MovieReconstructContext *context, const char *error_message)
struct MovieTrackingPlaneTrack * BKE_tracking_object_find_plane_track_with_name(struct MovieTrackingObject *tracking_object, const char *name)
Definition tracking.cc:2005
struct MovieTrackingMarker * BKE_tracking_marker_ensure(struct MovieTrackingTrack *track, int framenr)
Definition tracking.cc:1402
void BKE_tracking_track_first_last_frame_get(const struct MovieTrackingTrack *track, int *r_first_frame, int *r_last_frame)
void BKE_tracking_camera_principal_point_pixel_set(struct MovieClip *clip, const float principal_point_pixel[2])
Definition tracking.cc:2185
void BKE_tracking_settings_init(struct MovieTracking *tracking)
Definition tracking.cc:330
void BKE_tracking_track_flag_clear(struct MovieTrackingTrack *track, int area, int flag)
Definition tracking.cc:692
bool BKE_autotrack_context_step(struct AutoTrackContext *context)
struct MovieTrackingObject * BKE_tracking_object_get_named(struct MovieTracking *tracking, const char *name)
Definition tracking.cc:1966
void BKE_tracking_reconstruction_scale(struct MovieTracking *tracking, float scale[3])
void BKE_tracking_disable_channels(struct ImBuf *ibuf, bool disable_red, bool disable_green, bool disable_blue, bool grayscale)
Definition tracking.cc:2903
void BKE_tracking_tracks_average(struct MovieTrackingTrack *dst_track, struct MovieTrackingTrack **src_tracks, int num_src_tracks)
Definition tracking.cc:1013
struct MovieTrackingTrack * BKE_tracking_track_add_empty(struct MovieTracking *tracking, struct ListBase *tracks_list)
Definition tracking.cc:502
bool BKE_tracking_reconstruction_finish(struct MovieReconstructContext *context, struct MovieTracking *tracking)
void BKE_tracking_plane_tracks_deselect_all(struct ListBase *plane_tracks_base)
Definition tracking.cc:1634
eTrackArea
@ TRACK_AREA_POINT
@ TRACK_AREA_ALL
@ TRACK_AREA_PAT
@ TRACK_AREA_SEARCH
@ TRACK_AREA_NONE
void BKE_tracking_track_flag_set(struct MovieTrackingTrack *track, int area, int flag)
Definition tracking.cc:675
void BKE_tracking_plane_track_unique_name(struct ListBase *plane_tracks_base, struct MovieTrackingPlaneTrack *plane_track)
Definition tracking.cc:1614
void BKE_tracking_distortion_undistort_v2(struct MovieDistortion *distortion, const float co[2], float r_co[2])
Definition tracking.cc:2396
float BKE_tracking_track_get_weight_for_marker(struct MovieClip *clip, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker)
Definition tracking.cc:1172
bool BKE_tracking_track_has_enabled_marker_at_frame(struct MovieTrackingTrack *track, int framenr)
Definition tracking.cc:714
void BKE_tracking_clipboard_paste_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object)
Definition tracking.cc:482
struct ImBuf * BKE_tracking_sample_pattern(int frame_width, int frame_height, const struct ImBuf *search_ib, const struct MovieTrackingTrack *track, const struct MovieTrackingMarker *marker, bool from_anchor, bool use_mask, int num_samples_x, int num_samples_y, float pos[2])
void BKE_tracking_dopesheet_update(struct MovieTracking *tracking)
Definition tracking.cc:3446
void BKE_tracking_track_unique_name(struct ListBase *tracksbase, struct MovieTrackingTrack *track)
Definition tracking.cc:586
void BKE_tracking_tracks_join(struct MovieTracking *tracking, struct MovieTrackingTrack *dst_track, struct MovieTrackingTrack *src_track)
Definition tracking.cc:793
void BKE_tracking_get_rna_path_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_maxncpy)
struct ImBuf * BKE_tracking_stabilize_frame(struct MovieClip *clip, int framenr, struct ImBuf *ibuf, float translation[2], float *scale, float *angle)
void BKE_tracking_clipboard_free(void)
Definition tracking.cc:444
void BKE_autotrack_context_free(struct AutoTrackContext *context)
struct MovieDistortion * BKE_tracking_distortion_copy(struct MovieDistortion *distortion)
Definition tracking.cc:2307
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
Definition tracking.cc:1358
void BKE_tracking_marker_clamp_search_position(struct MovieTrackingMarker *marker)
Definition tracking.cc:1338
struct ImBuf * BKE_tracking_undistort_frame(struct MovieTracking *tracking, struct ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
Definition tracking.cc:2465
void BKE_autotrack_context_sync_user(struct AutoTrackContext *context, struct MovieClipUser *user)
void BKE_tracking_free(struct MovieTracking *tracking)
Definition tracking.cc:161
struct MovieTrackingObject * BKE_tracking_object_get_active(const struct MovieTracking *tracking)
bool BKE_tracking_object_delete(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object)
Definition tracking.cc:1926
bool BKE_tracking_plane_track_has_enabled_marker_at_frame(struct MovieTrackingPlaneTrack *plane_track, int framenr)
void BKE_tracking_plane_tracks_replace_point_track(struct MovieTracking *tracking, struct MovieTrackingTrack *old_track, struct MovieTrackingTrack *new_track)
Definition tracking.cc:1703
void BKE_tracking_camera_to_blender(struct MovieTracking *tracking, struct Scene *scene, struct Camera *camera, int width, int height)
Definition tracking.cc:2115
void BKE_tracking_refine_marker(struct MovieClip *clip, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, bool backwards)
void BKE_tracking_dopesheet_tag_update(struct MovieTracking *tracking)
Definition tracking.cc:3439
struct MovieTrackingMarker * BKE_tracking_marker_get_exact(struct MovieTrackingTrack *track, int framenr)
Definition tracking.cc:1391
void BKE_tracking_copy(struct MovieTracking *tracking_dst, const struct MovieTracking *tracking_src, int flag)
void BKE_tracking_track_free(struct MovieTrackingTrack *track)
Definition tracking.cc:596
const char * BKE_tracking_reconstruction_error_message_get(const struct MovieReconstructContext *context)
struct ImBuf * BKE_tracking_distortion_exec(struct MovieDistortion *distortion, struct MovieTracking *tracking, struct ImBuf *ibuf, int width, int height, float overscan, bool undistort)
Definition tracking.cc:2318
void BKE_tracking_track_plane_from_existing_motion(struct MovieTrackingPlaneTrack *plane_track, int start_frame)
void BKE_tracking_tracks_deselect_all(struct ListBase *tracksbase)
Definition tracking.cc:1222
void BKE_tracking_track_select(struct ListBase *tracksbase, struct MovieTrackingTrack *track, int area, bool extend)
Definition tracking.cc:1190
eTrackClearAction
@ TRACK_CLEAR_ALL
@ TRACK_CLEAR_REMAINED
@ TRACK_CLEAR_UPTO
struct MovieTrackingTrack * BKE_tracking_track_add(struct MovieTracking *tracking, struct ListBase *tracksbase, float x, float y, int framenr, int width, int height)
Definition tracking.cc:526
void BKE_tracking_tracks_first_last_frame_minmax(struct MovieTrackingTrack **tracks, int num_tracks, int *r_first_frame, int *r_last_frame)
Definition tracking.cc:613
void BKE_tracking_distort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
Definition tracking.cc:2415
bool BKE_tracking_reconstruction_check(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, char *error_msg, int error_size)
struct ImBuf * BKE_tracking_get_pattern_imbuf(const struct ImBuf *ibuf, const struct MovieTrackingTrack *track, const struct MovieTrackingMarker *marker, bool anchored, bool disable_channels)
bool BKE_tracking_track_has_marker_at_frame(struct MovieTrackingTrack *track, int framenr)
Definition tracking.cc:709
void BKE_tracking_distortion_distort_v2(struct MovieDistortion *distortion, const float co[2], float r_co[2])
Definition tracking.cc:2378
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_ensure(struct MovieTrackingPlaneTrack *plane_track, int framenr)
Definition tracking.cc:1849
struct MovieTrackingObject * BKE_tracking_find_object_for_plane_track(const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track)
void BKE_tracking_stabilization_data_get(struct MovieClip *clip, int framenr, int width, int height, float translation[2], float *scale, float *angle)
bool BKE_tracking_camera_distortion_equal(const struct MovieTrackingCamera *a, const struct MovieTrackingCamera *b)
struct ImBuf * BKE_tracking_get_plane_imbuf(const struct ImBuf *frame_ibuf, const struct MovieTrackingPlaneMarker *plane_marker)
void BKE_tracking_camera_principal_point_pixel_get(struct MovieClip *clip, float r_principal_point_pixel[2])
Definition tracking.cc:2172
struct MovieTrackingObject * BKE_tracking_object_add(struct MovieTracking *tracking, const char *name)
Definition tracking.cc:1897
struct ImBuf * BKE_tracking_get_search_imbuf(const struct ImBuf *ibuf, const struct MovieTrackingTrack *track, const struct MovieTrackingMarker *marker, bool anchored, bool disable_channels)
void BKE_tracking_object_unique_name(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object)
Definition tracking.cc:1956
float * BKE_tracking_track_get_mask(int frame_width, int frame_height, const struct MovieTrackingTrack *track, const struct MovieTrackingMarker *marker)
struct MovieTrackingTrack ** BKE_tracking_selected_tracks_in_active_object(struct MovieTracking *tracking, int *r_num_tracks)
Definition tracking.cc:646
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)
void BKE_tracking_distortion_free(struct MovieDistortion *distortion)
Definition tracking.cc:2408
uint64_t BKE_tracking_camera_distortion_hash(const struct MovieTrackingCamera *camera)
void BKE_tracking_marker_clamp_search_size(struct MovieTrackingMarker *marker)
Definition tracking.cc:1327
int BKE_tracking_count_selected_tracks_in_active_object(struct MovieTracking *tracking)
Definition tracking.cc:640
void BKE_autotrack_context_start(struct AutoTrackContext *context)
void BKE_tracking_distortion_update(struct MovieDistortion *distortion, struct MovieTracking *tracking, int calibration_width, int calibration_height)
Definition tracking.cc:2286
void BKE_tracking_plane_marker_get_subframe_corners(struct MovieTrackingPlaneTrack *plane_track, float framenr, float corners[4][2])
Definition tracking.cc:1866
void BKE_tracking_get_rna_path_prefix_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_maxncpy)
bool BKE_tracking_clipboard_has_tracks(void)
Definition tracking.cc:477
void BKE_autotrack_context_sync(struct AutoTrackContext *context)
bool BKE_tracking_plane_track_has_point_track(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingTrack *track)
Definition tracking.cc:1641
void BKE_tracking_marker_pattern_minmax(const struct MovieTrackingMarker *marker, float min[2], float max[2])
bool BKE_tracking_marker_get_interpolated(struct MovieTrackingTrack *track, int framenr, struct MovieTrackingMarker *r_marker)
Definition tracking.cc:1437
void BKE_tracking_camera_shift_get(struct MovieTracking *tracking, int winx, int winy, float *shiftx, float *shifty)
Definition tracking.cc:2102
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get(struct MovieTrackingPlaneTrack *plane_track, int framenr)
Definition tracking.cc:1791
struct MovieTrackingTrack * BKE_tracking_object_find_track_with_name(struct MovieTrackingObject *tracking_object, const char *name)
Definition tracking.cc:1993
struct MovieTrackingObject * BKE_tracking_find_object_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track)
struct MovieDistortion * BKE_tracking_distortion_new(struct MovieTracking *tracking, int calibration_width, int calibration_height)
Definition tracking.cc:2262
struct MovieReconstructContext * BKE_tracking_reconstruction_context_new(struct MovieClip *clip, struct MovieTrackingObject *tracking_object, int keyframe1, int keyframe2, int width, int height)
void BKE_tracking_get_projection_matrix(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, int framenr, int winx, int winy, float mat[4][4])
Definition tracking.cc:387
void BKE_tracking_marker_get_subframe_position(struct MovieTrackingTrack *track, float framenr, float pos[2])
Definition tracking.cc:1507
int BKE_tracking_count_selected_tracks_in_list(const struct ListBase *tracks_list)
void BKE_tracking_distortion_bounds_deltas(MovieDistortion *distortion, const int size[2], const int calibration_size[2], const bool undistort, int *r_right, int *r_left, int *r_bottom, int *r_top)
Definition tracking.cc:2534
void BKE_tracking_undistort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
Definition tracking.cc:2442
void BKE_tracking_detect_fast(struct MovieTracking *tracking, struct ListBase *tracksbase, struct ImBuf *ibuf, int framenr, int margin, int min_trackness, int min_distance, struct bGPDlayer *layer, bool place_outside_layer)
struct MovieTrackingMarker * BKE_tracking_marker_insert(struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker)
Definition tracking.cc:1235
struct MovieReconstructedCamera * BKE_tracking_camera_get_reconstructed(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, int framenr)
Definition tracking.cc:2133
void BKE_tracking_homography_between_two_quads(float reference_corners[4][2], float corners[4][2], float H[3][3])
void BKE_tracking_marker_delete(struct MovieTrackingTrack *track, int framenr)
Definition tracking.cc:1281
void BKE_tracking_camera_get_reconstructed_interpolate(struct MovieTracking *tracking, struct MovieTrackingObject *tracking_object, float framenr, float mat[4][4])
Definition tracking.cc:2146
static constexpr int image_width
static constexpr int image_height
static double angle(const Eigen::Vector3d &v1, const Eigen::Vector3d &v2)
Definition IK_Math.h:117
unsigned long long int uint64_t
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition btDbvt.cpp:52
uint pos
#define H(x, y, z)
const char * name
#define min(a, b)
Definition sort.cc:36
max
Definition text_draw.cc:251
ListBase tracks
Definition tracking.cc:71
uint8_t flag
Definition wm_window.cc:145