Blender V4.3
COM_TrackPositionOperation.cc
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2012 Blender Authors
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
6
7#include "DNA_defaults.h"
8
9#include "BKE_movieclip.h"
10#include "BKE_node.hh"
11#include "BKE_tracking.h"
12
13namespace blender::compositor {
14
29
31{
33 calc_track_position();
34 }
35}
36
37void TrackPositionOperation::calc_track_position()
38{
41
45
46 if (!movie_clip_) {
47 return;
48 }
49
51
54
55 MovieTrackingObject *tracking_object = BKE_tracking_object_get_named(tracking,
57 if (tracking_object) {
60
61 if (track) {
62 MovieTrackingMarker *marker;
64
65 marker = BKE_tracking_marker_get(track, clip_framenr);
66
67 copy_v2_v2(marker_pos_, marker->pos);
68
69 if (speed_output_) {
70 int relative_clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(movie_clip_,
72
73 marker = BKE_tracking_marker_get_exact(track, relative_clip_framenr);
74 if (marker != nullptr && (marker->flag & MARKER_DISABLED) == 0) {
76 }
77 else {
79 }
82 }
83 }
85 int i;
86
87 for (i = 0; i < track->markersnr; i++) {
88 marker = &track->markers[i];
89
90 if ((marker->flag & MARKER_DISABLED) == 0) {
92
93 break;
94 }
95 }
96 }
98 int relative_clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(movie_clip_,
100
101 marker = BKE_tracking_marker_get(track, relative_clip_framenr);
102 copy_v2_v2(relative_pos_, marker->pos);
103 }
104 }
105 }
106
108 if (axis_ == 0) {
110 }
111 else {
113 }
114}
115
117{
119 calc_track_position();
120 }
121 return &track_position_;
122}
123
124void TrackPositionOperation::determine_canvas(const rcti &preferred_area, rcti &r_area)
125{
126 r_area = preferred_area;
127}
128
129} // namespace blender::compositor
float BKE_movieclip_remap_scene_to_clip_frame(const struct MovieClip *clip, float framenr)
void BKE_movieclip_user_set_frame(struct MovieClipUser *user, int framenr)
void BKE_movieclip_get_size(struct MovieClip *clip, const struct MovieClipUser *user, int *r_width, int *r_height)
struct MovieTrackingObject * BKE_tracking_object_get_named(struct MovieTracking *tracking, const char *name)
Definition tracking.cc:1966
struct MovieTrackingMarker * BKE_tracking_marker_get(struct MovieTrackingTrack *track, int framenr)
Definition tracking.cc:1358
struct MovieTrackingMarker * BKE_tracking_marker_get_exact(struct MovieTrackingTrack *track, int framenr)
Definition tracking.cc:1391
struct MovieTrackingTrack * BKE_tracking_object_find_track_with_name(struct MovieTrackingObject *tracking_object, const char *name)
Definition tracking.cc:1993
MINLINE void swap_v2_v2(float a[2], float b[2])
MINLINE void copy_v2_v2(float r[2], const float a[2])
MINLINE void zero_v2(float r[2])
#define DNA_struct_default_get(struct_name)
@ CMP_NODE_TRACK_POSITION_RELATIVE_START
@ CMP_NODE_TRACK_POSITION_RELATIVE_FRAME
@ CMP_NODE_TRACK_POSITION_ABSOLUTE
@ MARKER_DISABLED
void add_output_socket(DataType datatype)
void determine_canvas(const rcti &preferred_area, rcti &r_area) override
struct MovieTracking tracking
MovieTrackingMarker * markers