OLD | NEW |
(Empty) | |
| 1 /* |
| 2 * ***** BEGIN GPL LICENSE BLOCK ***** |
| 3 * |
| 4 * This program is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU General Public License |
| 6 * as published by the Free Software Foundation; either version 2 |
| 7 * of the License, or (at your option) any later version. |
| 8 * |
| 9 * This program is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 12 * GNU General Public License for more details. |
| 13 * |
| 14 * You should have received a copy of the GNU General Public License |
| 15 * along with this program; if not, write to the Free Software Foundation, |
| 16 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
| 17 * |
| 18 * The Original Code is Copyright (C) 2011 Blender Foundation. |
| 19 * All rights reserved. |
| 20 * |
| 21 * Contributor(s): Blender Foundation, |
| 22 * Sergey Sharybin |
| 23 * |
| 24 * ***** END GPL LICENSE BLOCK ***** |
| 25 */ |
| 26 |
| 27 #ifndef BKE_TRACKING_H |
| 28 #define BKE_TRACKING_H |
| 29 |
| 30 /** \file BKE_trackingp.h |
| 31 * \ingroup bke |
| 32 * \author Sergey Sharybin |
| 33 */ |
| 34 |
| 35 struct bGPDlayer; |
| 36 struct ImBuf; |
| 37 struct MovieTrackingTrack; |
| 38 struct MovieTrackingMarker; |
| 39 struct MovieTracking; |
| 40 struct MovieTrackingContext; |
| 41 struct MovieClipUser; |
| 42 struct MovieDistortion; |
| 43 struct Scene; |
| 44 struct Object; |
| 45 |
| 46 void BKE_tracking_clamp_track(struct MovieTrackingTrack *track, int event); |
| 47 void BKE_tracking_track_flag(struct MovieTrackingTrack *track, int area, int fla
g, int clear); |
| 48 struct MovieTrackingTrack *BKE_tracking_add_track(struct MovieTracking *tracking
, float x, float y, |
| 49 int framenr, int width, int height); |
| 50 void BKE_tracking_insert_marker(struct MovieTrackingTrack *track, struct MovieTr
ackingMarker *marker); |
| 51 void BKE_tracking_delete_marker(struct MovieTrackingTrack *track, int framenr); |
| 52 struct MovieTrackingMarker *BKE_tracking_get_marker(struct MovieTrackingTrack *t
rack, int framenr); |
| 53 struct MovieTrackingMarker *BKE_tracking_ensure_marker(struct MovieTrackingTrack
*track, int framenr); |
| 54 struct MovieTrackingMarker *BKE_tracking_exact_marker(struct MovieTrackingTrack
*track, int framenr); |
| 55 int BKE_tracking_has_marker(struct MovieTrackingTrack *track, int framenr); |
| 56 |
| 57 void BKE_tracking_free_track(struct MovieTrackingTrack *track); |
| 58 struct MovieTrackingTrack *BKE_tracking_copy_track(struct MovieTrackingTrack *tr
ack); |
| 59 void BKE_tracking_clear_path(struct MovieTrackingTrack *track, int ref_frame, in
t action); |
| 60 int BKE_tracking_test_join_tracks(struct MovieTrackingTrack *dst_track, struct M
ovieTrackingTrack *src_track); |
| 61 void BKE_tracking_join_tracks(struct MovieTrackingTrack *dst_track, struct Movie
TrackingTrack *src_track); |
| 62 void BKE_tracking_free(struct MovieTracking *tracking); |
| 63 |
| 64 struct ImBuf *BKE_tracking_get_pattern_imbuf(struct ImBuf *ibuf, struct MovieTra
ckingTrack *track, |
| 65 struct MovieTrackingMarker *marker, int margin, int anch
ored, float pos[2], int origin[2]); |
| 66 struct ImBuf *BKE_tracking_get_search_imbuf(struct ImBuf *ibuf, struct MovieTrac
kingTrack *track, |
| 67 struct MovieTrackingMarker *marker, int margin, int anch
ored, float pos[2], int origin[2]); |
| 68 |
| 69 struct MovieTrackingContext *BKE_tracking_context_new(struct MovieClip *clip, st
ruct MovieClipUser *user, |
| 70 short backwards, short disable_failed); |
| 71 void BKE_tracking_context_free(struct MovieTrackingContext *context); |
| 72 void BKE_tracking_sync(struct MovieTrackingContext *context); |
| 73 void BKE_tracking_sync_user(struct MovieClipUser *user, struct MovieTrackingCont
ext *context); |
| 74 int BKE_tracking_next(struct MovieTrackingContext *context); |
| 75 |
| 76 float BKE_tracking_solve_reconstruction(struct MovieTracking *tracking, int widt
h, int height); |
| 77 |
| 78 void BKE_track_unique_name(struct MovieTracking *tracking, struct MovieTrackingT
rack *track); |
| 79 struct MovieTrackingTrack *BKE_find_track_by_name(struct MovieTracking *tracking
, const char *name); |
| 80 |
| 81 struct MovieReconstructedCamera *BKE_tracking_get_reconstructed_camera(struct Mo
vieTracking *tracking, int framenr); |
| 82 void BKE_tracking_get_interpolated_camera(struct MovieTracking *tracking, int fr
amenr, float mat[4][4]); |
| 83 |
| 84 void BKE_get_tracking_mat(struct Scene *scene, struct Object *ob, float mat[4][4
]); |
| 85 void BKE_tracking_projection_matrix(struct MovieTracking *tracking, int framenr,
int winx, int winy, float mat[4][4]); |
| 86 void BKE_tracking_apply_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]); |
| 88 |
| 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); |
| 94 |
| 95 struct MovieTrackingTrack *BKE_tracking_indexed_bundle(struct MovieTracking *tra
cking, int bundlenr); |
| 96 |
| 97 void BKE_tracking_stabilization_data(struct MovieTracking *tracking, int framenr
, int width, int height, 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); |
| 99 void BKE_tracking_stabdata_to_mat4(int width, int height, float loc[2], float sc
ale, float angle, float mat[4][4]); |
| 100 |
| 101 /* Distoriton/Undistortion */ |
| 102 struct MovieDistortion *BKE_tracking_distortion_create(void); |
| 103 struct MovieDistortion *BKE_tracking_distortion_copy(struct MovieDistortion *dis
tortion); |
| 104 struct ImBuf *BKE_tracking_distortion_exec(struct MovieDistortion *distortion, s
truct MovieTracking *tracking, |
| 105 struct ImBuf *ibuf, int width, int height, float oversca
n, int undistort); |
| 106 void BKE_tracking_distortion_destroy(struct MovieDistortion *distortion); |
| 107 |
| 108 struct ImBuf *BKE_tracking_undistort(struct MovieTracking *tracking, struct ImBu
f *ibuf, int width, int height, float overscan); |
| 109 struct ImBuf *BKE_tracking_distort(struct MovieTracking *tracking, struct ImBuf
*ibuf, int width, int height, float overscan); |
| 110 |
| 111 #define TRACK_SELECTED(track) ((((track)->flag&TRACK_H
IDDEN)==0) && ((track)->flag&SELECT || (track)->pat_flag&SELECT || (track)->sear
ch_flag&SELECT)) |
| 112 #define TRACK_AREA_SELECTED(track, area) ((((track)->flag&TRACK_HIDDEN)==
0) && ((area)==TRACK_AREA_POINT?(track)->flag&SELECT : ((area)==TRACK_AREA_PAT?(
track)->pat_flag&SELECT:(track)->search_flag&SELECT))) |
| 113 #define TRACK_VIEW_SELECTED(sc, track) ((TRACK_AREA_SELECTED(track, TRA
CK_AREA_POINT) || (((sc)->flag&SC_SHOW_MARKER_PATTERN && TRACK_AREA_SELECTED(tra
ck, TRACK_AREA_PAT))) || (((sc)->flag&SC_SHOW_MARKER_SEARCH && TRACK_AREA_SELECT
ED(track, TRACK_AREA_SEARCH))))) |
| 114 |
| 115 #define MARKER_VISIBLE(sc, marker) (((marker)->flag&MARKER_
DISABLED)==0 || ((sc)->flag&SC_HIDE_DISABLED)==0) |
| 116 |
| 117 #define CLAMP_PAT_DIM 1 |
| 118 #define CLAMP_PAT_POS 2 |
| 119 #define CLAMP_SEARCH_DIM 3 |
| 120 #define CLAMP_SEARCH_POS 4 |
| 121 |
| 122 #define TRACK_AREA_NONE -1 |
| 123 #define TRACK_AREA_POINT 1 |
| 124 #define TRACK_AREA_PAT 2 |
| 125 #define TRACK_AREA_SEARCH 4 |
| 126 |
| 127 #define TRACK_AREA_ALL (TRACK_AREA_POINT|TRACK_AREA_PAT|TRACK_AREA_SEAR
CH) |
| 128 |
| 129 #endif |
OLD | NEW |