LEFT | RIGHT |
1 /* | 1 /* |
2 * $Id$ | |
3 * | |
4 * ***** BEGIN GPL LICENSE BLOCK ***** | 2 * ***** BEGIN GPL LICENSE BLOCK ***** |
5 * | 3 * |
6 * This program is free software; you can redistribute it and/or | 4 * This program is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU General Public License | 5 * modify it under the terms of the GNU General Public License |
8 * as published by the Free Software Foundation; either version 2 | 6 * as published by the Free Software Foundation; either version 2 |
9 * of the License, or (at your option) any later version. | 7 * of the License, or (at your option) any later version. |
10 * | 8 * |
11 * This program is distributed in the hope that it will be useful, | 9 * This program is distributed in the hope that it will be useful, |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
(...skipping 13 matching lines...) Expand all Loading... |
27 */ | 25 */ |
28 | 26 |
29 #ifndef BKE_TRACKING_H | 27 #ifndef BKE_TRACKING_H |
30 #define BKE_TRACKING_H | 28 #define BKE_TRACKING_H |
31 | 29 |
32 /** \file BKE_trackingp.h | 30 /** \file BKE_trackingp.h |
33 * \ingroup bke | 31 * \ingroup bke |
34 * \author Sergey Sharybin | 32 * \author Sergey Sharybin |
35 */ | 33 */ |
36 | 34 |
| 35 struct bGPDlayer; |
37 struct ImBuf; | 36 struct ImBuf; |
38 struct MovieTrackingTrack; | 37 struct MovieTrackingTrack; |
39 struct MovieTrackingMarker; | 38 struct MovieTrackingMarker; |
40 struct MovieTracking; | 39 struct MovieTracking; |
41 struct MovieTrackingContext; | 40 struct MovieTrackingContext; |
42 struct MovieClipUser; | 41 struct MovieClipUser; |
43 struct MovieDistortion; | 42 struct MovieDistortion; |
44 struct Scene; | 43 struct Scene; |
45 struct Object; | 44 struct Object; |
46 | 45 |
47 void BKE_tracking_clamp_track(struct MovieTrackingTrack *track, int event); | 46 void BKE_tracking_clamp_track(struct MovieTrackingTrack *track, int event); |
48 void BKE_tracking_track_flag(struct MovieTrackingTrack *track, int area, int fla
g, int clear); | 47 void BKE_tracking_track_flag(struct MovieTrackingTrack *track, int area, int fla
g, int clear); |
49 struct MovieTrackingTrack *BKE_tracking_add_track(struct MovieTracking *tracking
, float x, float y, | 48 struct MovieTrackingTrack *BKE_tracking_add_track(struct MovieTracking *tracking
, float x, float y, |
50 int framenr, int width, int height); | 49 int framenr, int width, int height); |
51 void BKE_tracking_insert_marker(struct MovieTrackingTrack *track, struct MovieTr
ackingMarker *marker); | 50 void BKE_tracking_insert_marker(struct MovieTrackingTrack *track, struct MovieTr
ackingMarker *marker); |
52 void BKE_tracking_delete_marker(struct MovieTrackingTrack *track, int framenr); | 51 void BKE_tracking_delete_marker(struct MovieTrackingTrack *track, int framenr); |
53 struct MovieTrackingMarker *BKE_tracking_get_marker(struct MovieTrackingTrack *t
rack, int framenr); | 52 struct MovieTrackingMarker *BKE_tracking_get_marker(struct MovieTrackingTrack *t
rack, int framenr); |
54 struct MovieTrackingMarker *BKE_tracking_ensure_marker(struct MovieTrackingTrack
*track, int framenr); | 53 struct MovieTrackingMarker *BKE_tracking_ensure_marker(struct MovieTrackingTrack
*track, int framenr); |
55 struct MovieTrackingMarker *BKE_tracking_exact_marker(struct MovieTrackingTrack
*track, int framenr); | 54 struct MovieTrackingMarker *BKE_tracking_exact_marker(struct MovieTrackingTrack
*track, int framenr); |
56 int BKE_tracking_has_marker(struct MovieTrackingTrack *track, int framenr); | 55 int BKE_tracking_has_marker(struct MovieTrackingTrack *track, int framenr); |
57 | 56 |
58 void BKE_tracking_free_track(struct MovieTrackingTrack *track); | 57 void BKE_tracking_free_track(struct MovieTrackingTrack *track); |
59 struct MovieTrackingTrack *BKE_tracking_copy_track(struct MovieTrackingTrack *tr
ack); | 58 struct MovieTrackingTrack *BKE_tracking_copy_track(struct MovieTrackingTrack *tr
ack); |
60 void BKE_tracking_clear_path(struct MovieTrackingTrack *track, int ref_frame, in
t action); | 59 void BKE_tracking_clear_path(struct MovieTrackingTrack *track, int ref_frame, in
t action); |
61 int BKE_tracking_test_join_tracks(struct MovieTrackingTrack *dst_track, struct M
ovieTrackingTrack *src_track); | 60 int BKE_tracking_test_join_tracks(struct MovieTrackingTrack *dst_track, struct M
ovieTrackingTrack *src_track); |
62 void BKE_tracking_join_tracks(struct MovieTrackingTrack *dst_track, struct Movie
TrackingTrack *src_track); | 61 void BKE_tracking_join_tracks(struct MovieTrackingTrack *dst_track, struct Movie
TrackingTrack *src_track); |
63 void BKE_tracking_free(struct MovieTracking *tracking); | 62 void BKE_tracking_free(struct MovieTracking *tracking); |
64 | 63 |
65 struct ImBuf *BKE_tracking_acquire_pattern_imbuf(struct ImBuf *ibuf, struct Movi
eTrackingTrack *track, | 64 struct ImBuf *BKE_tracking_get_pattern_imbuf(struct ImBuf *ibuf, struct MovieTra
ckingTrack *track, |
66 struct MovieTrackingMarker *marker, int margin, int anch
ored, float pos[2], int origin[2]); | 65 struct MovieTrackingMarker *marker, int margin, int anch
ored, float pos[2], int origin[2]); |
67 struct ImBuf *BKE_tracking_acquire_search_imbuf(struct ImBuf *ibuf, struct Movie
TrackingTrack *track, | 66 struct ImBuf *BKE_tracking_get_search_imbuf(struct ImBuf *ibuf, struct MovieTrac
kingTrack *track, |
68 struct MovieTrackingMarker *marker, int margin, int anch
ored, float pos[2], int origin[2]); | 67 struct MovieTrackingMarker *marker, int margin, int anch
ored, float pos[2], int origin[2]); |
69 | 68 |
70 struct MovieTrackingContext *BKE_tracking_context_new(struct MovieClip *clip, st
ruct MovieClipUser *user, | 69 struct MovieTrackingContext *BKE_tracking_context_new(struct MovieClip *clip, st
ruct MovieClipUser *user, |
71 short backwards, short disable_failed); | 70 short backwards, short disable_failed); |
72 void BKE_tracking_context_free(struct MovieTrackingContext *context); | 71 void BKE_tracking_context_free(struct MovieTrackingContext *context); |
73 void BKE_tracking_sync(struct MovieTrackingContext *context); | 72 void BKE_tracking_sync(struct MovieTrackingContext *context); |
74 void BKE_tracking_sync_user(struct MovieClipUser *user, struct MovieTrackingCont
ext *context); | 73 void BKE_tracking_sync_user(struct MovieClipUser *user, struct MovieTrackingCont
ext *context); |
75 int BKE_tracking_next(struct MovieTrackingContext *context); | 74 int BKE_tracking_next(struct MovieTrackingContext *context); |
76 | 75 |
77 float BKE_tracking_solve_reconstruction(struct MovieTracking *tracking, int widt
h, int height); | 76 float BKE_tracking_solve_reconstruction(struct MovieTracking *tracking, int widt
h, int height); |
78 | 77 |
79 void BKE_track_unique_name(struct MovieTracking *tracking, struct MovieTrackingT
rack *track); | 78 void BKE_track_unique_name(struct MovieTracking *tracking, struct MovieTrackingT
rack *track); |
80 struct MovieTrackingTrack *BKE_find_track_by_name(struct MovieTracking *tracking
, const char *name); | 79 struct MovieTrackingTrack *BKE_find_track_by_name(struct MovieTracking *tracking
, const char *name); |
81 | 80 |
82 struct MovieReconstructedCamera *BKE_tracking_get_reconstructed_camera(struct Mo
vieTracking *tracking, int framenr); | 81 struct MovieReconstructedCamera *BKE_tracking_get_reconstructed_camera(struct Mo
vieTracking *tracking, int framenr); |
83 void BKE_tracking_get_interpolated_camera(struct MovieTracking *tracking, int fr
amenr, float mat[4][4]); | 82 void BKE_tracking_get_interpolated_camera(struct MovieTracking *tracking, int fr
amenr, float mat[4][4]); |
84 | 83 |
85 void BKE_get_tracking_mat(struct Scene *scene, struct Object *ob, float mat[4][4
]); | 84 void BKE_get_tracking_mat(struct Scene *scene, struct Object *ob, float mat[4][4
]); |
86 void BKE_tracking_projection_matrix(struct MovieTracking *tracking, int framenr,
int winx, int winy, float mat[4][4]); | 85 void BKE_tracking_projection_matrix(struct MovieTracking *tracking, int framenr,
int winx, int winy, float mat[4][4]); |
87 void BKE_tracking_apply_intrinsics(struct MovieTracking *tracking, float co[2],
float nco[2]); | 86 void BKE_tracking_apply_intrinsics(struct MovieTracking *tracking, float co[2],
float nco[2]); |
88 void BKE_tracking_invert_intrinsics(struct MovieTracking *tracking, float co[2],
float nco[2]); | 87 void BKE_tracking_invert_intrinsics(struct MovieTracking *tracking, float co[2],
float nco[2]); |
89 | 88 |
90 void BKE_tracking_detect(struct MovieTracking *tracking, struct ImBuf *imbuf, in
t framenr, int margin, int min_trackness, int count, int min_distance, int fast)
; | 89 void BKE_tracking_detect_fast(struct MovieTracking *tracking, struct ImBuf *imbu
f, |
| 90 » » » int framenr, int margin, int min_trackness, int min_dist
ance, struct bGPDlayer *layer); |
| 91 |
| 92 void BKE_tracking_detect_moravec(struct MovieTracking *tracking, struct ImBuf *i
mbuf, |
| 93 » » » int framenr, int margin, int count, int min_distance, st
ruct bGPDlayer *layer); |
91 | 94 |
92 struct MovieTrackingTrack *BKE_tracking_indexed_bundle(struct MovieTracking *tra
cking, int bundlenr); | 95 struct MovieTrackingTrack *BKE_tracking_indexed_bundle(struct MovieTracking *tra
cking, int bundlenr); |
93 | 96 |
94 void BKE_tracking_stabilization_data(struct MovieTracking *tracking, int framenr
, int width, int height, float loc[2], float *scale, float *angle); | 97 void BKE_tracking_stabilization_data(struct MovieTracking *tracking, int framenr
, int width, int height, float loc[2], float *scale, float *angle); |
95 struct ImBuf *BKE_tracking_stabilize(struct MovieTracking *tracking, int framenr
, struct ImBuf *ibuf, float loc[2], float *scale, float *angle); | 98 struct ImBuf *BKE_tracking_stabilize(struct MovieTracking *tracking, int framenr
, struct ImBuf *ibuf, float loc[2], float *scale, float *angle); |
96 void BKE_tracking_stabdata_to_mat4(int width, int height, float loc[2], float sc
ale, float angle, float mat[4][4]); | 99 void BKE_tracking_stabdata_to_mat4(int width, int height, float loc[2], float sc
ale, float angle, float mat[4][4]); |
97 | 100 |
98 /* Distoriton/Undistortion */ | 101 /* Distoriton/Undistortion */ |
99 struct MovieDistortion *BKE_tracking_distortion_create(void); | 102 struct MovieDistortion *BKE_tracking_distortion_create(void); |
100 struct MovieDistortion *BKE_tracking_distortion_copy(struct MovieDistortion *dis
tortion); | 103 struct MovieDistortion *BKE_tracking_distortion_copy(struct MovieDistortion *dis
tortion); |
(...skipping 16 matching lines...) Expand all Loading... |
117 #define CLAMP_SEARCH_POS 4 | 120 #define CLAMP_SEARCH_POS 4 |
118 | 121 |
119 #define TRACK_AREA_NONE -1 | 122 #define TRACK_AREA_NONE -1 |
120 #define TRACK_AREA_POINT 1 | 123 #define TRACK_AREA_POINT 1 |
121 #define TRACK_AREA_PAT 2 | 124 #define TRACK_AREA_PAT 2 |
122 #define TRACK_AREA_SEARCH 4 | 125 #define TRACK_AREA_SEARCH 4 |
123 | 126 |
124 #define TRACK_AREA_ALL (TRACK_AREA_POINT|TRACK_AREA_PAT|TRACK_AREA_SEAR
CH) | 127 #define TRACK_AREA_ALL (TRACK_AREA_POINT|TRACK_AREA_PAT|TRACK_AREA_SEAR
CH) |
125 | 128 |
126 #endif | 129 #endif |
127 /* | |
128 * ***** BEGIN GPL LICENSE BLOCK ***** | |
129 * | |
130 * This program is free software; you can redistribute it and/or | |
131 * modify it under the terms of the GNU General Public License | |
132 * as published by the Free Software Foundation; either version 2 | |
133 * of the License, or (at your option) any later version. | |
134 * | |
135 * This program is distributed in the hope that it will be useful, | |
136 * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
137 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
138 * GNU General Public License for more details. | |
139 * | |
140 * You should have received a copy of the GNU General Public License | |
141 * along with this program; if not, write to the Free Software Foundation, | |
142 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
143 * | |
144 * The Original Code is Copyright (C) 2011 Blender Foundation. | |
145 * All rights reserved. | |
146 * | |
147 * Contributor(s): Blender Foundation, | |
148 * Sergey Sharybin | |
149 * | |
150 * ***** END GPL LICENSE BLOCK ***** | |
151 */ | |
152 | |
153 #ifndef __BKE_TRACKING_H__ | |
154 #define __BKE_TRACKING_H__ | |
155 | |
156 /** \file BKE_tracking.h | |
157 * \ingroup bke | |
158 * \author Sergey Sharybin | |
159 */ | |
160 | |
161 struct bGPDlayer; | |
162 struct ImBuf; | |
163 struct ListBase; | |
164 struct MovieReconstructContext; | |
165 struct MovieTrackingTrack; | |
166 struct MovieTrackingMarker; | |
167 struct MovieTrackingPlaneTrack; | |
168 struct MovieTrackingPlaneMarker; | |
169 struct MovieTracking; | |
170 struct MovieTrackingContext; | |
171 struct MovieTrackingObject; | |
172 struct MovieClipUser; | |
173 struct MovieDistortion; | |
174 struct Camera; | |
175 struct Object; | |
176 struct Scene; | |
177 struct rcti; | |
178 | |
179 /* **** Common functions **** */ | |
180 | |
181 void BKE_tracking_free(struct MovieTracking *tracking); | |
182 | |
183 void BKE_tracking_settings_init(struct MovieTracking *tracking); | |
184 | |
185 struct ListBase *BKE_tracking_get_active_tracks(struct MovieTracking *tracking); | |
186 struct ListBase *BKE_tracking_get_active_plane_tracks(struct MovieTracking *trac
king); | |
187 struct MovieTrackingReconstruction *BKE_tracking_get_active_reconstruction(struc
t MovieTracking *tracking); | |
188 | |
189 /* matrices for constraints and drawing */ | |
190 void BKE_tracking_get_camera_object_matrix(struct Scene *scene, struct Object *o
b, float mat[4][4]); | |
191 void BKE_tracking_get_projection_matrix(struct MovieTracking *tracking, struct M
ovieTrackingObject *object, | |
192 int framenr, int winx, int winy, float m
at[4][4]); | |
193 | |
194 /* **** Clipboard **** */ | |
195 void BKE_tracking_clipboard_free(void); | |
196 void BKE_tracking_clipboard_copy_tracks(struct MovieTracking *tracking, struct M
ovieTrackingObject *object); | |
197 bool BKE_tracking_clipboard_has_tracks(void); | |
198 void BKE_tracking_clipboard_paste_tracks(struct MovieTracking *tracking, struct
MovieTrackingObject *object); | |
199 | |
200 /* **** Track **** */ | |
201 struct MovieTrackingTrack *BKE_tracking_track_add(struct MovieTracking *tracking
, struct ListBase *tracksbase, | |
202 float x, float y, int framenr,
int width, int height); | |
203 void BKE_tracking_track_unique_name(struct ListBase *tracksbase, struct MovieTra
ckingTrack *track); | |
204 void BKE_tracking_track_free(struct MovieTrackingTrack *track); | |
205 | |
206 void BKE_tracking_track_flag_set(struct MovieTrackingTrack *track, int area, int
flag); | |
207 void BKE_tracking_track_flag_clear(struct MovieTrackingTrack *track, int area, i
nt flag); | |
208 | |
209 bool BKE_tracking_track_has_marker_at_frame(struct MovieTrackingTrack *track, in
t framenr); | |
210 bool BKE_tracking_track_has_enabled_marker_at_frame(struct MovieTrackingTrack *t
rack, int framenr); | |
211 | |
212 void BKE_tracking_track_path_clear(struct MovieTrackingTrack *track, int ref_fra
me, int action); | |
213 void BKE_tracking_tracks_join(struct MovieTracking *tracking, struct MovieTracki
ngTrack *dst_track, struct MovieTrackingTrack *src_track); | |
214 | |
215 struct MovieTrackingTrack *BKE_tracking_track_get_named(struct MovieTracking *tr
acking, | |
216 struct MovieTrackingObje
ct *object, | |
217 const char *name); | |
218 struct MovieTrackingTrack *BKE_tracking_track_get_indexed(struct MovieTracking *
tracking, int tracknr, | |
219 struct ListBase **trac
ksbase_r); | |
220 | |
221 struct MovieTrackingTrack *BKE_tracking_track_get_active(struct MovieTracking *t
racking); | |
222 | |
223 float *BKE_tracking_track_get_mask(int frame_width, int frame_height, struct Mov
ieTrackingTrack *track, | |
224 struct MovieTrackingMarker *marker); | |
225 | |
226 /* selection */ | |
227 void BKE_tracking_track_select(struct ListBase *tracksbase, struct MovieTracking
Track *track, int area, bool extend); | |
228 void BKE_tracking_track_deselect(struct MovieTrackingTrack *track, int area); | |
229 void BKE_tracking_tracks_deselect_all(struct ListBase *tracksbase); | |
230 | |
231 /* **** Marker **** */ | |
232 struct MovieTrackingMarker *BKE_tracking_marker_insert(struct MovieTrackingTrack
*track, | |
233 struct MovieTrackingMarke
r *marker); | |
234 void BKE_tracking_marker_delete(struct MovieTrackingTrack *track, int framenr); | |
235 | |
236 void BKE_tracking_marker_clamp(struct MovieTrackingMarker *marker, int event); | |
237 | |
238 struct MovieTrackingMarker *BKE_tracking_marker_get(struct MovieTrackingTrack *t
rack, int framenr); | |
239 struct MovieTrackingMarker *BKE_tracking_marker_get_exact(struct MovieTrackingTr
ack *track, int framenr); | |
240 struct MovieTrackingMarker *BKE_tracking_marker_ensure(struct MovieTrackingTrack
*track, int framenr); | |
241 | |
242 void BKE_tracking_marker_pattern_minmax(const struct MovieTrackingMarker *marker
, float min[2], float max[2]); | |
243 | |
244 void BKE_tracking_marker_get_subframe_position(struct MovieTrackingTrack *track,
float framenr, float pos[2]); | |
245 | |
246 /* **** Plane Track **** */ | |
247 struct MovieTrackingPlaneTrack *BKE_tracking_plane_track_add(struct MovieTrackin
g *tracking, struct ListBase *plane_tracks_base, | |
248 struct ListBase *tr
acks, int framenr); | |
249 void BKE_tracking_plane_track_unique_name(struct ListBase *plane_tracks_base, st
ruct MovieTrackingPlaneTrack *plane_track); | |
250 void BKE_tracking_plane_track_free(struct MovieTrackingPlaneTrack *plane_track); | |
251 | |
252 bool BKE_tracking_plane_track_has_marker_at_frame(struct MovieTrackingPlaneTrack
*plane_track, int framenr); | |
253 bool BKE_tracking_plane_track_has_enabled_marker_at_frame(struct MovieTrackingPl
aneTrack *plane_track, int framenr); | |
254 | |
255 struct MovieTrackingPlaneTrack *BKE_tracking_plane_track_get_named(struct MovieT
racking *tracking, | |
256 struct MovieT
rackingObject *object, | |
257 const char *n
ame); | |
258 | |
259 struct MovieTrackingPlaneTrack *BKE_tracking_plane_track_get_active(struct Movie
Tracking *tracking); | |
260 | |
261 void BKE_tracking_plane_tracks_deselect_all(struct ListBase *plane_tracks_base); | |
262 | |
263 /* **** Plane Marker **** */ | |
264 struct MovieTrackingPlaneMarker *BKE_tracking_plane_marker_insert(struct MovieTr
ackingPlaneTrack *plane_track, | |
265 struct MovieTr
ackingPlaneMarker *plane_marker); | |
266 void BKE_tracking_plane_marker_delete(struct MovieTrackingPlaneTrack *plane_trac
k, int framenr); | |
267 | |
268 struct MovieTrackingPlaneMarker *BKE_tracking_plane_marker_get(struct MovieTrack
ingPlaneTrack *plane_track, int framenr); | |
269 struct MovieTrackingPlaneMarker *BKE_tracking_plane_marker_get_exact(struct Movi
eTrackingPlaneTrack *plane_track, int framenr); | |
270 struct MovieTrackingPlaneMarker *BKE_tracking_plane_marker_ensure(struct MovieTr
ackingPlaneTrack *plane_track, int framenr); | |
271 | |
272 /* **** Object **** */ | |
273 struct MovieTrackingObject *BKE_tracking_object_add(struct MovieTracking *tracki
ng, const char *name); | |
274 bool BKE_tracking_object_delete(struct MovieTracking *tracking, struct MovieTrac
kingObject *object); | |
275 | |
276 void BKE_tracking_object_unique_name(struct MovieTracking *tracking, struct Movi
eTrackingObject *object); | |
277 | |
278 struct MovieTrackingObject *BKE_tracking_object_get_named(struct MovieTracking *
tracking, const char *name); | |
279 | |
280 struct MovieTrackingObject *BKE_tracking_object_get_active(struct MovieTracking
*tracking); | |
281 struct MovieTrackingObject *BKE_tracking_object_get_camera(struct MovieTracking
*tracking); | |
282 | |
283 struct ListBase *BKE_tracking_object_get_tracks(struct MovieTracking *tracking,
struct MovieTrackingObject *object); | |
284 struct ListBase *BKE_tracking_object_get_plane_tracks(struct MovieTracking *trac
king, struct MovieTrackingObject *object); | |
285 struct MovieTrackingReconstruction *BKE_tracking_object_get_reconstruction(struc
t MovieTracking *tracking, | |
286 struc
t MovieTrackingObject *object); | |
287 | |
288 /* **** Camera **** */ | |
289 void BKE_tracking_camera_shift_get(struct MovieTracking *tracking, int winx, int
winy, float *shiftx, float *shifty); | |
290 void BKE_tracking_camera_to_blender(struct MovieTracking *tracking, struct Scene
*scene, | |
291 struct Camera *camera, int width, int height
); | |
292 | |
293 struct MovieReconstructedCamera *BKE_tracking_camera_get_reconstructed(struct Mo
vieTracking *tracking, | |
294 struct Mo
vieTrackingObject *object, | |
295 int frame
nr); | |
296 void BKE_tracking_camera_get_reconstructed_interpolate(struct MovieTracking *tra
cking, | |
297 struct MovieTrackingObjec
t *object, | |
298 int framenr, float mat[4]
[4]); | |
299 | |
300 /* **** Distortion/Undistortion **** */ | |
301 struct MovieDistortion *BKE_tracking_distortion_new(void); | |
302 void BKE_tracking_distortion_update(struct MovieDistortion *distortion, struct M
ovieTracking *tracking, | |
303 int calibration_width, int calibration_heigh
t); | |
304 void BKE_tracking_distortion_set_threads(struct MovieDistortion *distortion, int
threads); | |
305 struct MovieDistortion *BKE_tracking_distortion_copy(struct MovieDistortion *dis
tortion); | |
306 struct ImBuf *BKE_tracking_distortion_exec(struct MovieDistortion *distortion, s
truct MovieTracking *tracking, | |
307 struct ImBuf *ibuf, int width, int he
ight, float overscan, bool undistort); | |
308 void BKE_tracking_distortion_free(struct MovieDistortion *distortion); | |
309 | |
310 void BKE_tracking_distort_v2(struct MovieTracking *tracking, const float co[2],
float r_co[2]); | |
311 void BKE_tracking_undistort_v2(struct MovieTracking *tracking, const float co[2]
, float r_co[2]); | |
312 | |
313 struct ImBuf *BKE_tracking_undistort_frame(struct MovieTracking *tracking, struc
t ImBuf *ibuf, | |
314 int calibration_width, int calibratio
n_height, float overscan); | |
315 struct ImBuf *BKE_tracking_distort_frame(struct MovieTracking *tracking, struct
ImBuf *ibuf, | |
316 int calibration_width, int calibration_
height, float overscan); | |
317 | |
318 void BKE_tracking_max_undistortion_delta_across_bound(struct MovieTracking *trac
king, struct rcti *rect, float delta[2]); | |
319 | |
320 /* **** Image sampling **** */ | |
321 struct ImBuf *BKE_tracking_sample_pattern(int frame_width, int frame_height, | |
322 struct ImBuf *struct_ibuf, struct Movi
eTrackingTrack *track, | |
323 struct MovieTrackingMarker *marker, bo
ol from_anchor, bool use_mask, | |
324 int num_samples_x, int num_samples_y,
float pos[2]); | |
325 struct ImBuf *BKE_tracking_get_pattern_imbuf(struct ImBuf *ibuf, struct MovieTra
ckingTrack *track, | |
326 struct MovieTrackingMarker *marker,
bool anchored, bool disable_channels); | |
327 struct ImBuf *BKE_tracking_get_search_imbuf(struct ImBuf *ibuf, struct MovieTrac
kingTrack *track, | |
328 struct MovieTrackingMarker *marker,
bool anchored, bool disable_channels); | |
329 | |
330 void BKE_tracking_disable_channels(struct ImBuf *ibuf, bool disable_red, bool di
sable_green, | |
331 bool disable_blue, bool grayscale); | |
332 | |
333 /* **** 2D tracking **** */ | |
334 struct MovieTrackingContext *BKE_tracking_context_new(struct MovieClip *clip, st
ruct MovieClipUser *user, | |
335 short backwards, short seq
uence); | |
336 void BKE_tracking_context_free(struct MovieTrackingContext *context); | |
337 void BKE_tracking_context_sync(struct MovieTrackingContext *context); | |
338 void BKE_tracking_context_sync_user(const struct MovieTrackingContext *context,
struct MovieClipUser *user); | |
339 bool BKE_tracking_context_step(struct MovieTrackingContext *context); | |
340 void BKE_tracking_context_finish(struct MovieTrackingContext *context); | |
341 | |
342 void BKE_tracking_refine_marker(struct MovieClip *clip, struct MovieTrackingTrac
k *track, struct MovieTrackingMarker *marker, bool backwards); | |
343 | |
344 /* **** Plane tracking **** */ | |
345 | |
346 void BKE_tracking_track_plane_from_existing_motion(struct MovieTrackingPlaneTrac
k *plane_track, int start_frame); | |
347 void BKE_tracking_retrack_plane_from_existing_motion_at_segment(struct MovieTrac
kingPlaneTrack *plane_track, int start_frame); | |
348 void BKE_tracking_homography_between_two_quads(/*const*/ float reference_corners
[4][2], /*const*/ float corners[4][2], float H[3][3]); | |
349 | |
350 /* **** Camera solving **** */ | |
351 bool BKE_tracking_reconstruction_check(struct MovieTracking *tracking, struct Mo
vieTrackingObject *object, | |
352 char *error_msg, int error_size); | |
353 | |
354 struct MovieReconstructContext *BKE_tracking_reconstruction_context_new(struct M
ovieClip *clip, | |
355 struct M
ovieTrackingObject *object, | |
356 int keyf
rame1, int keyframe2, | |
357 int widt
h, int height); | |
358 void BKE_tracking_reconstruction_context_free(struct MovieReconstructContext *co
ntext); | |
359 void BKE_tracking_reconstruction_solve(struct MovieReconstructContext *context,
short *stop, short *do_update, | |
360 float *progress, char *stats_message, int
message_size); | |
361 bool BKE_tracking_reconstruction_finish(struct MovieReconstructContext *context,
struct MovieTracking *tracking); | |
362 | |
363 void BKE_tracking_reconstruction_scale(struct MovieTracking *tracking, float sca
le[3]); | |
364 | |
365 /* **** Feature detection **** */ | |
366 void BKE_tracking_detect_fast(struct MovieTracking *tracking, struct ListBase *t
racksbase, struct ImBuf *imbuf, | |
367 int framenr, int margin, int min_trackness, int mi
n_distance, struct bGPDlayer *layer, | |
368 bool place_outside_layer); | |
369 | |
370 /* **** 2D stabilization **** */ | |
371 void BKE_tracking_stabilization_data_get(struct MovieTracking *tracking, int fra
menr, int width, int height, | |
372 float translation[2], float *scale, flo
at *angle); | |
373 struct ImBuf *BKE_tracking_stabilize_frame(struct MovieTracking *tracking, int f
ramenr, struct ImBuf *ibuf, | |
374 float translation[2], float *scale, f
loat *angle); | |
375 void BKE_tracking_stabilization_data_to_mat4(int width, int height, float aspect
, float translation[2], | |
376 float scale, float angle, float mat
[4][4]); | |
377 | |
378 /* Dopesheet */ | |
379 void BKE_tracking_dopesheet_tag_update(struct MovieTracking *tracking); | |
380 void BKE_tracking_dopesheet_update(struct MovieTracking *tracking); | |
381 | |
382 #define TRACK_SELECTED(track) ((track)->flag & SELECT || (track)->
pat_flag & SELECT || (track)->search_flag & SELECT) | |
383 | |
384 #define TRACK_AREA_SELECTED(track, area) ((area) == TRACK_AREA_POINT ? (track
)->flag & SELECT : \ | |
385 ((area) == TRACK_AREA_PAT ? (track)
->pat_flag & SELECT : \ | |
386 (track)->search_flag & SELECT)) | |
387 | |
388 #define TRACK_VIEW_SELECTED(sc, track) ((((track)->flag & TRACK_HIDDEN) ==
0) && \ | |
389 (TRACK_AREA_SELECTED(track, TRACK_A
REA_POINT) || \ | |
390 (((sc)->flag & SC_SHOW_MARKER_PATT
ERN) && TRACK_AREA_SELECTED(track, TRACK_AREA_PAT)) || \ | |
391 (((sc)->flag & SC_SHOW_MARKER_SEAR
CH) && TRACK_AREA_SELECTED(track, TRACK_AREA_SEARCH)))) | |
392 | |
393 #define MARKER_VISIBLE(sc, track, marker) (((marker)->flag & MARKER_DISABL
ED) == 0 || ((sc)->flag & SC_HIDE_DISABLED) == 0 || (sc->clip->tracking.act_trac
k == track)) | |
394 | |
395 #define TRACK_CLEAR_UPTO 0 | |
396 #define TRACK_CLEAR_REMAINED 1 | |
397 #define TRACK_CLEAR_ALL 2 | |
398 | |
399 #define CLAMP_PAT_DIM 1 | |
400 #define CLAMP_PAT_POS 2 | |
401 #define CLAMP_SEARCH_DIM 3 | |
402 #define CLAMP_SEARCH_POS 4 | |
403 | |
404 #define TRACK_AREA_NONE -1 | |
405 #define TRACK_AREA_POINT 1 | |
406 #define TRACK_AREA_PAT 2 | |
407 #define TRACK_AREA_SEARCH 4 | |
408 | |
409 #define TRACK_AREA_ALL (TRACK_AREA_POINT | TRACK_AREA_PAT | TRACK_AREA_SEAR
CH) | |
410 | |
411 #endif | |
LEFT | RIGHT |