Blender  V3.3
BKE_tracking.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2011 Blender Foundation. All rights reserved. */
3 
4 #pragma once
5 
10 #include "BLI_sys_types.h"
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 struct Camera;
17 struct ImBuf;
18 struct ListBase;
19 struct MovieClipUser;
20 struct MovieDistortion;
22 struct MovieTracking;
23 struct MovieTrackingMarker;
24 struct MovieTrackingObject;
27 struct MovieTrackingTrack;
28 struct Object;
29 struct Scene;
30 struct bGPDlayer;
31 struct rcti;
32 
33 /* --------------------------------------------------------------------
34  * Common types and constants.
35  */
36 
37 typedef enum eTrackArea {
38  TRACK_AREA_POINT = (1 << 0),
39  TRACK_AREA_PAT = (1 << 1),
40  TRACK_AREA_SEARCH = (1 << 2),
41 
45 
46 /* --------------------------------------------------------------------
47  * Common functions.
48  */
49 
56 void BKE_tracking_free(struct MovieTracking *tracking);
60 void BKE_tracking_copy(struct MovieTracking *tracking_dst,
61  const struct MovieTracking *tracking_src,
62  int flag);
63 
68 void BKE_tracking_settings_init(struct MovieTracking *tracking);
69 
73 struct ListBase *BKE_tracking_get_active_tracks(struct MovieTracking *tracking);
82  struct MovieTracking *tracking);
83 
84 /* Matrices for constraints and drawing. */
85 
90 void BKE_tracking_get_camera_object_matrix(struct Object *camera_object, float mat[4][4]);
98  struct MovieTrackingObject *object,
99  int framenr,
100  int winx,
101  int winy,
102  float mat[4][4]);
103 
104 /* --------------------------------------------------------------------
105  * Clipboard.
106  */
107 
111 void BKE_tracking_clipboard_free(void);
116  struct MovieTrackingObject *object);
127  struct MovieTrackingObject *object);
128 
129 /* **** Track **** */
130 
137  struct ListBase *tracks_list);
148  struct ListBase *tracksbase,
149  float x,
150  float y,
151  int framenr,
152  int width,
153  int height);
163 void BKE_tracking_track_unique_name(struct ListBase *tracksbase, struct MovieTrackingTrack *track);
170 void BKE_tracking_track_free(struct MovieTrackingTrack *track);
171 
177  int *r_first_frame,
178  int *r_last_frame);
179 
184  int num_tracks,
185  int *r_first_frame,
186  int *r_last_frame);
187 
190 
196  struct MovieTracking *tracking, int *r_num_tracks);
197 
204 void BKE_tracking_track_flag_set(struct MovieTrackingTrack *track, int area, int flag);
211 void BKE_tracking_track_flag_clear(struct MovieTrackingTrack *track, int area, int flag);
212 
218 bool BKE_tracking_track_has_marker_at_frame(struct MovieTrackingTrack *track, int framenr);
225 
231 typedef enum eTrackClearAction {
232  /* Clear path from `ref_frame+1` up to the . */
234  /* Clear path from the beginning up to `ref_frame-1`. */
236  /* Only marker at frame `ref_frame` will remain. */
240  int ref_frame,
241  eTrackClearAction action);
242 
243 void BKE_tracking_tracks_join(struct MovieTracking *tracking,
244  struct MovieTrackingTrack *dst_track,
245  struct MovieTrackingTrack *src_track);
246 
247 void BKE_tracking_tracks_average(struct MovieTrackingTrack *dst_track,
248  /*const*/ struct MovieTrackingTrack **src_tracks,
249  int num_src_tracks);
250 
252  struct MovieTrackingObject *object,
253  const char *name);
255  int tracknr,
256  struct ListBase **r_tracksbase);
257 
259 
260 float *BKE_tracking_track_get_mask(int frame_width,
261  int frame_height,
262  struct MovieTrackingTrack *track,
263  struct MovieTrackingMarker *marker);
264 
266  struct MovieTrackingTrack *track,
267  struct MovieTrackingMarker *marker);
268 
269 /* --------------------------------------------------------------------
270  * Selection.
271  */
272 
276 void BKE_tracking_track_select(struct ListBase *tracksbase,
277  struct MovieTrackingTrack *track,
278  int area,
279  bool extend);
280 void BKE_tracking_track_deselect(struct MovieTrackingTrack *track, int area);
281 void BKE_tracking_tracks_deselect_all(struct ListBase *tracksbase);
282 
283 /* --------------------------------------------------------------------
284  * Marker.
285  */
286 
288  struct MovieTrackingMarker *marker);
289 void BKE_tracking_marker_delete(struct MovieTrackingTrack *track, int framenr);
290 
302 
310 
320 
333  int framenr);
335  int framenr);
336 
347  int framenr,
348  struct MovieTrackingMarker *r_marker);
349 
351  float min[2],
352  float max[2]);
353 
355  float framenr,
356  float pos[2]);
357 
358 /* --------------------------------------------------------------------
359  * Plane track.
360  */
361 
366  struct ListBase *plane_tracks_base,
367  struct ListBase *tracks,
368  int framenr);
369 void BKE_tracking_plane_track_unique_name(struct ListBase *plane_tracks_base,
370  struct MovieTrackingPlaneTrack *plane_track);
378 
380  int framenr);
382  struct MovieTrackingPlaneTrack *plane_track, int framenr);
383 
385  struct MovieTracking *tracking, struct MovieTrackingObject *object, const char *name);
386 
388  struct MovieTracking *tracking);
389 
390 void BKE_tracking_plane_tracks_deselect_all(struct ListBase *plane_tracks_base);
391 
393  struct MovieTrackingTrack *track);
395  struct MovieTrackingTrack *track);
396 
398  struct MovieTrackingTrack *track);
399 
401  struct MovieTrackingTrack *old_track,
402  struct MovieTrackingTrack *new_track);
404  struct MovieTrackingTrack *old_track,
405  struct MovieTrackingTrack *new_track);
406 
407 /* --------------------------------------------------------------------
408  * Plane marker.
409  */
410 
412  struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingPlaneMarker *plane_marker);
414 
420  struct MovieTrackingPlaneTrack *plane_track, int framenr);
426  struct MovieTrackingPlaneTrack *plane_track, int framenr);
431  struct MovieTrackingPlaneTrack *plane_track, int framenr);
433  float framenr,
434  float corners[4][2]);
435 
436 /* --------------------------------------------------------------------
437  * Object.
438  */
439 
441  const char *name);
442 bool BKE_tracking_object_delete(struct MovieTracking *tracking,
443  struct MovieTrackingObject *object);
444 
445 void BKE_tracking_object_unique_name(struct MovieTracking *tracking,
446  struct MovieTrackingObject *object);
447 
449  const char *name);
450 
453 
454 struct ListBase *BKE_tracking_object_get_tracks(struct MovieTracking *tracking,
455  struct MovieTrackingObject *object);
457  struct MovieTrackingObject *object);
459  struct MovieTracking *tracking, struct MovieTrackingObject *object);
460 
461 /* --------------------------------------------------------------------
462  * Camera.
463  */
464 
469  struct MovieTracking *tracking, int winx, int winy, float *shiftx, float *shifty);
470 void BKE_tracking_camera_to_blender(struct MovieTracking *tracking,
471  struct Scene *scene,
472  struct Camera *camera,
473  int width,
474  int height);
475 
477  struct MovieTracking *tracking, struct MovieTrackingObject *object, int framenr);
479  struct MovieTrackingObject *object,
480  float framenr,
481  float mat[4][4]);
482 
483 /* --------------------------------------------------------------------
484  * (Un)distortion.
485  */
486 
488  int calibration_width,
489  int calibration_height);
490 void BKE_tracking_distortion_update(struct MovieDistortion *distortion,
491  struct MovieTracking *tracking,
492  int calibration_width,
493  int calibration_height);
494 void BKE_tracking_distortion_set_threads(struct MovieDistortion *distortion, int threads);
496 struct ImBuf *BKE_tracking_distortion_exec(struct MovieDistortion *distortion,
497  struct MovieTracking *tracking,
498  struct ImBuf *ibuf,
499  int width,
500  int height,
501  float overscan,
502  bool undistort);
504  const float co[2],
505  float r_co[2]);
507  const float co[2],
508  float r_co[2]);
509 void BKE_tracking_distortion_free(struct MovieDistortion *distortion);
510 
511 void BKE_tracking_distort_v2(struct MovieTracking *tracking,
512  int image_width,
513  int image_height,
514  const float co[2],
515  float r_co[2]);
516 void BKE_tracking_undistort_v2(struct MovieTracking *tracking,
517  int image_width,
518  int image_height,
519  const float co[2],
520  float r_co[2]);
521 
522 struct ImBuf *BKE_tracking_undistort_frame(struct MovieTracking *tracking,
523  struct ImBuf *ibuf,
524  int calibration_width,
525  int calibration_height,
526  float overscan);
527 struct ImBuf *BKE_tracking_distort_frame(struct MovieTracking *tracking,
528  struct ImBuf *ibuf,
529  int calibration_width,
530  int calibration_height,
531  float overscan);
532 
534  int image_width,
535  int image_height,
536  struct rcti *rect,
537  bool undistort,
538  float delta[2]);
539 
540 /* --------------------------------------------------------------------
541  * Image sampling.
542  */
543 
544 struct ImBuf *BKE_tracking_sample_pattern(int frame_width,
545  int frame_height,
546  struct ImBuf *search_ib,
547  struct MovieTrackingTrack *track,
548  struct MovieTrackingMarker *marker,
549  bool from_anchor,
550  bool use_mask,
551  int num_samples_x,
552  int num_samples_y,
553  float pos[2]);
554 struct ImBuf *BKE_tracking_get_pattern_imbuf(struct ImBuf *ibuf,
555  struct MovieTrackingTrack *track,
556  struct MovieTrackingMarker *marker,
557  bool anchored,
558  bool disable_channels);
559 struct ImBuf *BKE_tracking_get_search_imbuf(struct ImBuf *ibuf,
560  struct MovieTrackingTrack *track,
561  struct MovieTrackingMarker *marker,
562  bool anchored,
563  bool disable_channels);
564 
565 /* Create a new image buffer which consists of pixels which the plane marker "sees".
566  * The function will choose best image resolution based on the plane marker size. */
567 struct ImBuf *BKE_tracking_get_plane_imbuf(const struct ImBuf *frame_ibuf,
568  const struct MovieTrackingPlaneMarker *plane_marker);
569 
576  struct ImBuf *ibuf, bool disable_red, bool disable_green, bool disable_blue, bool grayscale);
577 
578 /* --------------------------------------------------------------------
579  * 2D tracking.
580  */
581 
587 void BKE_tracking_refine_marker(struct MovieClip *clip,
588  struct MovieTrackingTrack *track,
589  struct MovieTrackingMarker *marker,
590  bool backwards);
591 
592 /* --------------------------------------------------------------------
593  * 2D tracking using auto-track pipeline.
594  */
595 
597  struct MovieClipUser *user,
598  bool is_backwards);
605 
606 /* --------------------------------------------------------------------
607  * Plane tracking.
608  */
609 
614  int start_frame);
616  struct MovieTrackingPlaneTrack *plane_track, int start_frame);
617 void BKE_tracking_homography_between_two_quads(/*const*/ float reference_corners[4][2],
618  /*const*/ float corners[4][2],
619  float H[3][3]);
620 
621 /* --------------------------------------------------------------------
622  * Camera solving.
623  */
624 
629  struct MovieTrackingObject *object,
630  char *error_msg,
631  int error_size);
632 
639  struct MovieClip *clip,
640  struct MovieTrackingObject *object,
641  int keyframe1,
642  int keyframe2,
643  int width,
644  int height);
660  short *stop,
661  short *do_update,
662  float *progress,
663  char *stats_message,
664  int message_size);
669  struct MovieTracking *tracking);
670 
672  const char *error_message);
673 
675  const struct MovieReconstructContext *context);
676 
680 void BKE_tracking_reconstruction_scale(struct MovieTracking *tracking, float scale[3]);
681 
682 /* **** Feature detection **** */
683 
687 void BKE_tracking_detect_fast(struct MovieTracking *tracking,
688  struct ListBase *tracksbase,
689  struct ImBuf *ibuf,
690  int framenr,
691  int margin,
692  int min_trackness,
693  int min_distance,
694  struct bGPDlayer *layer,
695  bool place_outside_layer);
696 
700 void BKE_tracking_detect_harris(struct MovieTracking *tracking,
701  struct ListBase *tracksbase,
702  struct ImBuf *ibuf,
703  int framenr,
704  int margin,
705  float threshold,
706  int min_distance,
707  struct bGPDlayer *layer,
708  bool place_outside_layer);
709 
710 /* --------------------------------------------------------------------
711  * 2D stabilization.
712  */
713 
732  int framenr,
733  int width,
734  int height,
735  float translation[2],
736  float *scale,
737  float *angle);
745 struct ImBuf *BKE_tracking_stabilize_frame(struct MovieClip *clip,
746  int framenr,
747  struct ImBuf *ibuf,
748  float translation[2],
749  float *scale,
750  float *angle);
763  int height,
764  float aspect,
765  float translation[2],
766  float scale,
767  float angle,
768  float mat[4][4]);
769 
770 /* Dope-sheet */
771 
775 void BKE_tracking_dopesheet_tag_update(struct MovieTracking *tracking);
779 void BKE_tracking_dopesheet_update(struct MovieTracking *tracking);
780 
781 /* --------------------------------------------------------------------
782  * Query and search.
783  */
784 
789  const struct MovieTracking *tracking, const struct MovieTrackingTrack *track);
791  const struct MovieTrackingTrack *track);
792 
797  const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track);
799  struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track);
800 
801 void BKE_tracking_get_rna_path_for_track(const struct MovieTracking *tracking,
802  const struct MovieTrackingTrack *track,
803  char *rna_path,
804  size_t rna_path_len);
806  const struct MovieTrackingTrack *track,
807  char *rna_path,
808  size_t rna_path_len);
809 void BKE_tracking_get_rna_path_for_plane_track(const struct MovieTracking *tracking,
810  const struct MovieTrackingPlaneTrack *plane_track,
811  char *rna_path,
812  size_t rna_path_len);
814  const struct MovieTracking *tracking,
815  const struct MovieTrackingPlaneTrack *plane_track,
816  char *rna_path,
817  size_t rna_path_len);
818 
819 /* --------------------------------------------------------------------
820  * Utility macros.
821  */
822 
823 #define TRACK_SELECTED(track) \
824  ((track)->flag & SELECT || (track)->pat_flag & SELECT || (track)->search_flag & SELECT)
825 
826 #define TRACK_AREA_SELECTED(track, area) \
827  ((area) == TRACK_AREA_POINT ? \
828  (track)->flag & SELECT : \
829  ((area) == TRACK_AREA_PAT ? (track)->pat_flag & SELECT : (track)->search_flag & SELECT))
830 
831 #define TRACK_VIEW_SELECTED(sc, track) \
832  ((((track)->flag & TRACK_HIDDEN) == 0) && \
833  (TRACK_AREA_SELECTED(track, TRACK_AREA_POINT) || \
834  (((sc)->flag & SC_SHOW_MARKER_PATTERN) && TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) || \
835  (((sc)->flag & SC_SHOW_MARKER_SEARCH) && TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH))))
836 
837 #define PLANE_TRACK_VIEW_SELECTED(plane_track) \
838  ((((plane_track)->flag & PLANE_TRACK_HIDDEN) == 0) && ((plane_track)->flag & SELECT))
839 
840 #define MARKER_VISIBLE(sc, track, marker) \
841  (((marker)->flag & MARKER_DISABLED) == 0 || ((sc)->flag & SC_HIDE_DISABLED) == 0 || \
842  ((sc)->clip->tracking.act_track == track))
843 
844 #ifdef __cplusplus
845 }
846 #endif
void BKE_tracking_track_path_clear(struct MovieTrackingTrack *track, int ref_frame, eTrackClearAction action)
Definition: tracking.c:789
float * BKE_tracking_track_get_mask(int frame_width, int frame_height, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker)
Definition: tracking.c:1221
void BKE_tracking_plane_tracks_remove_point_track(struct MovieTracking *tracking, struct MovieTrackingTrack *track)
Definition: tracking.c:1775
void BKE_tracking_plane_track_free(struct MovieTrackingPlaneTrack *plane_track)
Definition: tracking.c:1694
void BKE_tracking_marker_clamp_pattern_position(struct MovieTrackingMarker *marker)
Definition: tracking.c:1374
struct MovieTrackingReconstruction * BKE_tracking_object_get_reconstruction(struct MovieTracking *tracking, struct MovieTrackingObject *object)
Definition: tracking.c:2131
void BKE_tracking_track_deselect(struct MovieTrackingTrack *track, int area)
Definition: tracking.c:1284
void BKE_tracking_plane_track_replace_point_track(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingTrack *old_track, struct MovieTrackingTrack *new_track)
Definition: tracking.c:1790
bool BKE_tracking_plane_track_has_marker_at_frame(struct MovieTrackingPlaneTrack *plane_track, int framenr)
struct ImBuf * BKE_tracking_get_pattern_imbuf(struct ImBuf *ibuf, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, bool anchored, bool disable_channels)
Definition: tracking.c:2722
bool BKE_tracking_plane_track_remove_point_track(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingTrack *track)
Definition: tracking.c:1752
struct MovieTrackingPlaneTrack * BKE_tracking_plane_track_get_active(struct MovieTracking *tracking)
Definition: tracking.c:1718
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_ensure(struct MovieTrackingPlaneTrack *plane_track, int framenr)
Definition: tracking.c:1950
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)
struct MovieTrackingObject * BKE_tracking_find_object_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track)
bool BKE_tracking_reconstruction_check(struct MovieTracking *tracking, struct MovieTrackingObject *object, char *error_msg, int error_size)
void BKE_tracking_reconstruction_context_free(struct MovieReconstructContext *context)
void BKE_tracking_plane_marker_delete(struct MovieTrackingPlaneTrack *plane_track, int framenr)
Definition: tracking.c:1859
void BKE_tracking_get_camera_object_matrix(struct Object *camera_object, float mat[4][4])
Definition: tracking.c:375
struct ListBase * BKE_tracking_find_tracks_list_for_track(struct MovieTracking *tracking, const struct MovieTrackingTrack *track)
void BKE_tracking_clipboard_paste_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *object)
Definition: tracking.c:489
void BKE_tracking_stabilization_data_to_mat4(int width, int height, float aspect, float translation[2], float scale, float angle, float mat[4][4])
bool BKE_tracking_object_delete(struct MovieTracking *tracking, struct MovieTrackingObject *object)
Definition: tracking.c:2027
void BKE_autotrack_context_finish(struct AutoTrackContext *context)
struct ListBase * BKE_tracking_get_active_tracks(struct MovieTracking *tracking)
Definition: tracking.c:346
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_insert(struct MovieTrackingPlaneTrack *plane_track, struct MovieTrackingPlaneMarker *plane_marker)
Definition: tracking.c:1818
void BKE_tracking_camera_get_reconstructed_interpolate(struct MovieTracking *tracking, struct MovieTrackingObject *object, float framenr, float mat[4][4])
Definition: tracking.c:2269
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)
void BKE_tracking_track_first_last_frame_get(const struct MovieTrackingTrack *track, int *r_first_frame, int *r_last_frame)
struct ImBuf * BKE_tracking_undistort_frame(struct MovieTracking *tracking, struct ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
Definition: tracking.c:2499
struct MovieDistortion * BKE_tracking_distortion_copy(struct MovieDistortion *distortion)
Definition: tracking.c:2347
void BKE_tracking_settings_init(struct MovieTracking *tracking)
Definition: tracking.c:305
void BKE_tracking_track_flag_clear(struct MovieTrackingTrack *track, int area, int flag)
Definition: tracking.c:705
bool BKE_autotrack_context_step(struct AutoTrackContext *context)
struct MovieTrackingTrack * BKE_tracking_track_duplicate(struct MovieTrackingTrack *track)
Definition: tracking.c:576
struct MovieTrackingObject * BKE_tracking_find_object_for_plane_track(const struct MovieTracking *tracking, const struct MovieTrackingPlaneTrack *plane_track)
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.c:2891
void BKE_tracking_tracks_average(struct MovieTrackingTrack *dst_track, struct MovieTrackingTrack **src_tracks, int num_src_tracks)
Definition: tracking.c:1026
struct MovieTrackingTrack * BKE_tracking_track_get_named(struct MovieTracking *tracking, struct MovieTrackingObject *object, const char *name)
Definition: tracking.c:1038
struct MovieTrackingPlaneTrack * BKE_tracking_plane_track_get_named(struct MovieTracking *tracking, struct MovieTrackingObject *object, const char *name)
Definition: tracking.c:1703
bool BKE_tracking_reconstruction_finish(struct MovieReconstructContext *context, struct MovieTracking *tracking)
struct MovieTrackingMarker * BKE_tracking_marker_insert(struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker)
Definition: tracking.c:1302
struct MovieTrackingObject * BKE_tracking_object_add(struct MovieTracking *tracking, const char *name)
Definition: tracking.c:1998
void BKE_tracking_plane_tracks_deselect_all(struct ListBase *plane_tracks_base)
Definition: tracking.c:1734
struct MovieReconstructedCamera * BKE_tracking_camera_get_reconstructed(struct MovieTracking *tracking, struct MovieTrackingObject *object, int framenr)
Definition: tracking.c:2252
void BKE_tracking_get_rna_path_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_len)
Definition: tracking.c:3495
struct AutoTrackContext * BKE_autotrack_context_new(struct MovieClip *clip, struct MovieClipUser *user, bool is_backwards)
struct ImBuf * BKE_tracking_stabilize_frame(struct MovieClip *clip, int framenr, struct ImBuf *ibuf, float translation[2], float *scale, float *angle)
eTrackArea
Definition: BKE_tracking.h:37
@ TRACK_AREA_POINT
Definition: BKE_tracking.h:38
@ TRACK_AREA_ALL
Definition: BKE_tracking.h:43
@ TRACK_AREA_PAT
Definition: BKE_tracking.h:39
@ TRACK_AREA_SEARCH
Definition: BKE_tracking.h:40
@ TRACK_AREA_NONE
Definition: BKE_tracking.h:42
void BKE_tracking_track_flag_set(struct MovieTrackingTrack *track, int area, int flag)
Definition: tracking.c:688
void BKE_tracking_plane_track_unique_name(struct ListBase *plane_tracks_base, struct MovieTrackingPlaneTrack *plane_track)
Definition: tracking.c:1683
struct MovieDistortion * BKE_tracking_distortion_new(struct MovieTracking *tracking, int calibration_width, int calibration_height)
Definition: tracking.c:2303
void BKE_tracking_distortion_undistort_v2(struct MovieDistortion *distortion, const float co[2], float r_co[2])
Definition: tracking.c:2438
struct MovieTrackingPlaneTrack * BKE_tracking_plane_track_add(struct MovieTracking *tracking, struct ListBase *plane_tracks_base, struct ListBase *tracks, int framenr)
Definition: tracking.c:1611
float BKE_tracking_track_get_weight_for_marker(struct MovieClip *clip, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker)
Definition: tracking.c:1239
bool BKE_tracking_track_has_enabled_marker_at_frame(struct MovieTrackingTrack *track, int framenr)
Definition: tracking.c:727
void BKE_tracking_dopesheet_update(struct MovieTracking *tracking)
Definition: tracking.c:3418
void BKE_tracking_get_rna_path_prefix_for_track(const struct MovieTracking *tracking, const struct MovieTrackingTrack *track, char *rna_path, size_t rna_path_len)
Definition: tracking.c:3517
void BKE_tracking_track_unique_name(struct ListBase *tracksbase, struct MovieTrackingTrack *track)
Definition: tracking.c:596
struct MovieTrackingMarker * BKE_tracking_marker_ensure(struct MovieTrackingTrack *track, int framenr)
Definition: tracking.c:1468
void BKE_tracking_tracks_join(struct MovieTracking *tracking, struct MovieTrackingTrack *dst_track, struct MovieTrackingTrack *src_track)
Definition: tracking.c:806
void BKE_tracking_clipboard_free(void)
Definition: tracking.c:448
void BKE_autotrack_context_free(struct AutoTrackContext *context)
void BKE_tracking_marker_clamp_search_position(struct MovieTrackingMarker *marker)
Definition: tracking.c:1404
void BKE_autotrack_context_sync_user(struct AutoTrackContext *context, struct MovieClipUser *user)
void BKE_tracking_free(struct MovieTracking *tracking)
Definition: tracking.c:150
void BKE_tracking_object_unique_name(struct MovieTracking *tracking, struct MovieTrackingObject *object)
Definition: tracking.c:2067
bool BKE_tracking_plane_track_has_enabled_marker_at_frame(struct MovieTrackingPlaneTrack *plane_track, int framenr)
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get(struct MovieTrackingPlaneTrack *plane_track, int framenr)
Definition: tracking.c:1890
struct MovieTrackingTrack * BKE_tracking_track_get_active(struct MovieTracking *tracking)
Definition: tracking.c:1089
void BKE_tracking_plane_tracks_replace_point_track(struct MovieTracking *tracking, struct MovieTrackingTrack *old_track, struct MovieTrackingTrack *new_track)
Definition: tracking.c:1802
struct MovieTrackingReconstruction * BKE_tracking_get_active_reconstruction(struct MovieTracking *tracking)
Definition: tracking.c:368
void BKE_tracking_camera_to_blender(struct MovieTracking *tracking, struct Scene *scene, struct Camera *camera, int width, int height)
Definition: tracking.c:2234
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.c:3411
struct MovieTrackingMarker * BKE_tracking_marker_get_exact(struct MovieTrackingTrack *track, int framenr)
Definition: tracking.c:1457
struct MovieReconstructContext * BKE_tracking_reconstruction_context_new(struct MovieClip *clip, struct MovieTrackingObject *object, int keyframe1, int keyframe2, int width, int height)
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.c:606
struct ImBuf * BKE_tracking_get_plane_imbuf(const struct ImBuf *frame_ibuf, const struct MovieTrackingPlaneMarker *plane_marker)
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.c:1289
void BKE_tracking_track_select(struct ListBase *tracksbase, struct MovieTrackingTrack *track, int area, bool extend)
Definition: tracking.c:1257
eTrackClearAction
Definition: BKE_tracking.h:231
@ TRACK_CLEAR_ALL
Definition: BKE_tracking.h:237
@ TRACK_CLEAR_REMAINED
Definition: BKE_tracking.h:235
@ TRACK_CLEAR_UPTO
Definition: BKE_tracking.h:233
struct ImBuf * BKE_tracking_get_search_imbuf(struct ImBuf *ibuf, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, bool anchored, bool disable_channels)
Definition: tracking.c:2760
void BKE_tracking_tracks_first_last_frame_minmax(struct MovieTrackingTrack **tracks, int num_tracks, int *r_first_frame, int *r_last_frame)
Definition: tracking.c:623
struct ListBase * BKE_tracking_get_active_plane_tracks(struct MovieTracking *tracking)
Definition: tracking.c:357
void BKE_tracking_distort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
Definition: tracking.c:2457
struct MovieTrackingTrack * BKE_tracking_track_get_indexed(struct MovieTracking *tracking, int tracknr, struct ListBase **r_tracksbase)
Definition: tracking.c:1056
struct MovieTrackingTrack * BKE_tracking_track_add_empty(struct MovieTracking *tracking, struct ListBase *tracks_list)
Definition: tracking.c:511
void BKE_tracking_distortion_set_threads(struct MovieDistortion *distortion, int threads)
Definition: tracking.c:2342
struct MovieTrackingPlaneMarker * BKE_tracking_plane_marker_get_exact(struct MovieTrackingPlaneTrack *plane_track, int framenr)
Definition: tracking.c:1938
void BKE_tracking_clipboard_copy_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *object)
Definition: tracking.c:464
bool BKE_tracking_track_has_marker_at_frame(struct MovieTrackingTrack *track, int framenr)
Definition: tracking.c:722
void BKE_tracking_distortion_distort_v2(struct MovieDistortion *distortion, const float co[2], float r_co[2])
Definition: tracking.c:2420
struct ListBase * BKE_tracking_find_tracks_list_for_plane_track(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)
struct ImBuf * BKE_tracking_sample_pattern(int frame_width, int frame_height, struct ImBuf *search_ib, struct MovieTrackingTrack *track, struct MovieTrackingMarker *marker, bool from_anchor, bool use_mask, int num_samples_x, int num_samples_y, float pos[2])
Definition: tracking.c:2627
const char * BKE_tracking_reconstruction_error_message_get(const struct MovieReconstructContext *context)
struct MovieTrackingObject * BKE_tracking_object_get_named(struct MovieTracking *tracking, const char *name)
Definition: tracking.c:2077
void BKE_tracking_reconstruction_solve(struct MovieReconstructContext *context, short *stop, short *do_update, float *progress, char *stats_message, int message_size)
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)
Definition: tracking.c:3533
void BKE_tracking_distortion_free(struct MovieDistortion *distortion)
Definition: tracking.c:2450
void BKE_tracking_marker_clamp_search_size(struct MovieTrackingMarker *marker)
Definition: tracking.c:1393
int BKE_tracking_count_selected_tracks_in_active_object(struct MovieTracking *tracking)
Definition: tracking.c:650
struct MovieTrackingObject * BKE_tracking_object_get_camera(struct MovieTracking *tracking)
Definition: tracking.c:2097
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.c:2324
void BKE_tracking_plane_marker_get_subframe_corners(struct MovieTrackingPlaneTrack *plane_track, float framenr, float corners[4][2])
Definition: tracking.c:1967
struct ListBase * BKE_tracking_object_get_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *object)
Definition: tracking.c:2112
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_len)
Definition: tracking.c:3555
bool BKE_tracking_clipboard_has_tracks(void)
Definition: tracking.c:484
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.c:1741
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.c:1505
void BKE_tracking_camera_shift_get(struct MovieTracking *tracking, int winx, int winy, float *shiftx, float *shifty)
Definition: tracking.c:2225
struct MovieTrackingTrack * BKE_tracking_track_add(struct MovieTracking *tracking, struct ListBase *tracksbase, float x, float y, int framenr, int width, int height)
Definition: tracking.c:535
void BKE_tracking_max_distortion_delta_across_bound(struct MovieTracking *tracking, int image_width, int image_height, struct rcti *rect, bool undistort, float delta[2])
Definition: tracking.c:2533
void BKE_tracking_get_projection_matrix(struct MovieTracking *tracking, struct MovieTrackingObject *object, int framenr, int winx, int winy, float mat[4][4])
Definition: tracking.c:391
struct ListBase * BKE_tracking_object_get_plane_tracks(struct MovieTracking *tracking, struct MovieTrackingObject *object)
Definition: tracking.c:2121
void BKE_tracking_marker_get_subframe_position(struct MovieTrackingTrack *track, float framenr, float pos[2])
Definition: tracking.c:1575
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
Definition: tracking.c:1424
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.c:2358
int BKE_tracking_count_selected_tracks_in_list(const struct ListBase *tracks_list)
struct MovieTrackingTrack ** BKE_tracking_selected_tracks_in_active_object(struct MovieTracking *tracking, int *r_num_tracks)
Definition: tracking.c:656
void BKE_tracking_undistort_v2(struct MovieTracking *tracking, int image_width, int image_height, const float co[2], float r_co[2])
Definition: tracking.c:2480
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 ImBuf * BKE_tracking_distort_frame(struct MovieTracking *tracking, struct ImBuf *ibuf, int calibration_width, int calibration_height, float overscan)
Definition: tracking.c:2516
void BKE_tracking_homography_between_two_quads(float reference_corners[4][2], float corners[4][2], float H[3][3])
struct MovieTrackingObject * BKE_tracking_object_get_active(struct MovieTracking *tracking)
Definition: tracking.c:2092
void BKE_tracking_marker_delete(struct MovieTrackingTrack *track, int framenr)
Definition: tracking.c:1347
_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
_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
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
SIMD_FORCE_INLINE btScalar angle(const btVector3 &v) const
Return the angle between this and another vector.
Definition: btVector3.h:356
Scene scene
uint pos
ccl_gpu_kernel_postfix ccl_global float int int int int float threshold
#define H(x, y, z)
static void area(int d1, int d2, int e1, int e2, float weights[2])
ListBase threads
list of all thread for every CPUDevice in cpudevices a thread exists.
#define min(a, b)
Definition: sort.c:35
unsigned int * rect
ListBase tracks
Definition: tracking.c:60
float max