Blender  V2.93
DNA_tracking_types.h
Go to the documentation of this file.
1 /*
2  * This program is free software; you can redistribute it and/or
3  * modify it under the terms of the GNU General Public License
4  * as published by the Free Software Foundation; either version 2
5  * of the License, or (at your option) any later version.
6  *
7  * This program is distributed in the hope that it will be useful,
8  * but WITHOUT ANY WARRANTY; without even the implied warranty of
9  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10  * GNU General Public License for more details.
11  *
12  * You should have received a copy of the GNU General Public License
13  * along with this program; if not, write to the Free Software Foundation,
14  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
15  *
16  * The Original Code is Copyright (C) 2011 Blender Foundation.
17  * All rights reserved.
18  */
19 
26 #pragma once
27 
28 #include "DNA_defs.h"
29 #include "DNA_listBase.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /* match-moving data */
36 
37 struct Image;
39 struct MovieTracking;
40 struct MovieTrackingCamera;
41 struct MovieTrackingMarker;
42 struct MovieTrackingTrack;
43 struct bGPdata;
44 
45 typedef struct MovieReconstructedCamera {
46  int framenr;
47  float error;
48  float mat[4][4];
50 
51 typedef struct MovieTrackingCamera {
53  void *intrinsics;
54 
56  char _pad[2];
57 
59  float sensor_width;
61  float pixel_aspect;
63  float focal;
65  short units;
66  char _pad1[2];
68  float principal[2];
69 
70  /* Polynomial distortion */
72  float k1, k2, k3;
73 
74  /* Division distortion model coefficients */
76 
77  /* Nuke distortion model coefficients */
78  float nuke_k1, nuke_k2;
79 
80  /* Brown-Conrady distortion model coefficients */
86 
87 typedef struct MovieTrackingMarker {
89  float pos[2];
90 
91  /* corners of pattern in the following order:
92  *
93  * Y
94  * ^
95  * | (3) --- (2)
96  * | | |
97  * | | |
98  * | | |
99  * | (0) --- (1)
100  * +-------------> X
101  *
102  * the coordinates are stored relative to pos.
103  */
104  float pattern_corners[4][2];
105 
106  /* positions of left-bottom and right-top corners of search area (in unified 0..1 units,
107  * relative to marker->pos
108  */
109  float search_min[2], search_max[2];
110 
112  int framenr;
114  int flag;
116 
117 typedef struct MovieTrackingTrack {
119 
121  char name[64];
122 
123  /* ** settings ** */
124 
125  /* positions of left-bottom and right-top corners of pattern (in unified 0..1 units,
126  * relative to marker->pos)
127  * moved to marker's corners since planar tracking implementation
128  */
129  float pat_min[2] DNA_DEPRECATED, pat_max[2] DNA_DEPRECATED;
130 
131  /* positions of left-bottom and right-top corners of search area (in unified 0..1 units,
132  * relative to marker->pos
133  * moved to marker since affine tracking implementation
134  */
135  float search_min[2] DNA_DEPRECATED, search_max[2] DNA_DEPRECATED;
136 
138  float offset[2];
139 
140  /* ** track ** */
144  int _pad;
147 
148  /* ** reconstruction data ** */
150  float bundle_pos[3];
152  float error;
153 
154  /* ** UI editing ** */
158  float color[3];
159 
160  /* ** control how tracking happens */
167  short margin;
171 
172  /* tracking parameters */
179 
181  struct bGPdata *gpd;
182 
183  /* Weight of this track.
184  *
185  * Weight defines how much the track affects on the final reconstruction,
186  * usually gets animated in a way so when track has just appeared its
187  * weight is zero and then it gets faded up.
188  *
189  * Used to prevent jumps of the camera when tracks are appearing or
190  * disappearing.
191  */
192  float weight;
193 
194  /* track weight especially for 2D stabilization */
195  float weight_stab;
197 
198 typedef struct MovieTrackingPlaneMarker {
199  /* Corners of the plane in the following order:
200  *
201  * Y
202  * ^
203  * | (3) --- (2)
204  * | | |
205  * | | |
206  * | | |
207  * | (0) --- (1)
208  * +-------------> X
209  *
210  * The coordinates are stored in frame normalized coordinates.
211  */
212  float corners[4][2];
213 
215  int framenr;
217  int flag;
219 
220 typedef struct MovieTrackingPlaneTrack {
222 
224  char name[64];
225 
233  char _pad[4];
234 
239 
241  int flag;
242 
244  struct Image *image;
247 
248  /* Runtime data */
252 
253 typedef struct MovieTrackingSettings {
254  /* ** default tracker settings */
277 
279  short motion_flag;
280 
281  /* ** common tracker settings ** */
283  short speed;
284 
285  /* ** reconstruction settings ** */
286  /* two keyframes for reconstruction initialization
287  * were moved to per-tracking object settings
288  */
289  int keyframe1 DNA_DEPRECATED;
290  int keyframe2 DNA_DEPRECATED;
291 
293 
294  /* which camera intrinsics to refine. uses on the REFINE_* flags */
296 
297  /* ** tool settings ** */
298 
299  /* set scale */
301  float dist;
302 
303  /* cleanup */
305  float clean_error;
306 
307  /* set object scale */
311 
313  int flag;
318 
319  /* 2d stabilization */
321  float maxscale;
324 
328  float target_pos[2];
330  float target_rot;
332  float scale;
333 
336 
338  int filter;
339 
340  /* initialization and run-time data */
345 
347  int flag;
348 
350  float error;
351 
355  int camnr;
359 
360 typedef struct MovieTrackingObject {
362 
364  char name[64];
365  int flag;
367  float scale;
368 
375 
376  /* reconstruction options */
380 
381 typedef struct MovieTrackingStats {
382  char message[256];
384 
387 
390  char _pad[4];
391 
393  char name[64];
394 
398  int *segments;
402 
405 
406  int coverage;
409 
410  char _pad[4];
412 
413 typedef struct MovieTrackingDopesheet {
415  int ok;
416 
418  short sort_method;
420  short flag;
421 
422  /* ** runtime stuff ** */
423 
424  /* summary */
426 
427  /* detailed */
430 
431  char _pad[4];
433 
434 typedef struct MovieTracking {
451 
455 
458 
462 
463 /* MovieTrackingCamera->distortion_model */
464 enum {
469 };
470 
471 /* MovieTrackingCamera->units */
472 enum {
475 };
476 
477 /* MovieTrackingMarker->flag */
478 enum {
479  MARKER_DISABLED = (1 << 0),
480  MARKER_TRACKED = (1 << 1),
481  MARKER_GRAPH_SEL_X = (1 << 2),
482  MARKER_GRAPH_SEL_Y = (1 << 3),
484 };
485 
486 /* MovieTrackingTrack->flag */
487 enum {
488  TRACK_HAS_BUNDLE = (1 << 1),
489  TRACK_DISABLE_RED = (1 << 2),
491  TRACK_DISABLE_BLUE = (1 << 4),
492  TRACK_HIDDEN = (1 << 5),
493  TRACK_LOCKED = (1 << 6),
494  TRACK_CUSTOMCOLOR = (1 << 7),
495  TRACK_USE_2D_STAB = (1 << 8),
497  TRACK_DOPE_SEL = (1 << 10),
498  TRACK_PREVIEW_ALPHA = (1 << 11),
500 };
501 
502 /* MovieTrackingTrack->motion_model */
503 enum {
510 };
511 
512 /* MovieTrackingTrack->algorithm_flag */
513 enum {
517 };
518 
519 /* MovieTrackingTrack->pattern_match */
520 typedef enum eTrackFrameMatch {
524 
525 /* MovieTrackingSettings->motion_flag */
526 enum {
528 
530 };
531 
532 /* MovieTrackingSettings->speed */
533 enum {
539 };
540 
541 /* MovieTrackingSettings->reconstruction_flag */
542 enum {
543  /* TRACKING_USE_FALLBACK_RECONSTRUCTION = (1 << 0), */ /* DEPRECATED */
545 };
546 
547 /* MovieTrackingSettings->refine_camera_intrinsics */
548 enum {
550 
555 };
556 
557 /* MovieTrackingStabilization->flag */
558 enum {
560  TRACKING_AUTOSCALE = (1 << 1),
564 };
565 
566 /* MovieTrackingStabilization->filter */
567 enum {
571 };
572 
573 /* MovieTrackingReconstruction->flag */
574 enum {
576 };
577 
578 /* MovieTrackingObject->flag */
579 enum {
581 };
582 
583 enum {
587 };
588 
589 /* MovieTrackingDopesheet->sort_method */
590 enum {
595 };
596 
597 /* MovieTrackingDopesheet->flag */
598 enum {
602 };
603 
604 /* MovieTrackingDopesheetCoverageSegment->trackness */
605 enum {
609 };
610 
611 /* MovieTrackingPlaneMarker->flag */
612 enum {
615 };
616 
617 /* MovieTrackingPlaneTrack->flag */
618 enum {
619  PLANE_TRACK_HIDDEN = (1 << 1),
620  PLANE_TRACK_LOCKED = (1 << 2),
622 };
623 
624 #ifdef __cplusplus
625 }
626 #endif
These structs are the foundation for all linked lists in the library system.
@ TRACK_CUSTOMCOLOR
@ TRACK_PREVIEW_ALPHA
@ TRACK_DISABLE_BLUE
@ TRACK_HIDDEN
@ TRACK_PREVIEW_GRAYSCALE
@ TRACK_LOCKED
@ TRACK_DOPE_SEL
@ TRACK_USE_2D_STAB
@ TRACK_HAS_BUNDLE
@ TRACK_USE_2D_STAB_ROT
@ TRACK_DISABLE_RED
@ TRACK_DISABLE_GREEN
struct MovieTrackingDopesheet MovieTrackingDopesheet
@ REFINE_PRINCIPAL_POINT
@ REFINE_NO_INTRINSICS
@ REFINE_TANGENTIAL_DISTORTION
@ REFINE_RADIAL_DISTORTION
@ REFINE_FOCAL_LENGTH
struct MovieTrackingPlaneMarker MovieTrackingPlaneMarker
@ TRACKING_OBJECT_CAMERA
@ TRACKING_MOTION_MODAL
@ TRACKING_MOTION_TRIPOD
@ TRACKING_DOPE_SORT_AVERAGE_ERROR
@ TRACKING_DOPE_SORT_LONGEST
@ TRACKING_DOPE_SORT_NAME
@ TRACKING_DOPE_SORT_TOTAL
@ TRACK_ALGORITHM_FLAG_USE_NORMALIZATION
@ TRACK_ALGORITHM_FLAG_USE_BRUTE
@ TRACK_ALGORITHM_FLAG_USE_MASK
@ PLANE_MARKER_DISABLED
@ PLANE_MARKER_TRACKED
struct MovieTrackingSettings MovieTrackingSettings
struct MovieReconstructedCamera MovieReconstructedCamera
@ TRACKING_USE_KEYFRAME_SELECTION
@ TRACKING_SPEED_DOUBLE
@ TRACKING_SPEED_HALF
@ TRACKING_SPEED_FASTEST
@ TRACKING_SPEED_QUARTER
@ TRACKING_SPEED_REALTIME
@ TRACK_MOTION_MODEL_TRANSLATION_SCALE
@ TRACK_MOTION_MODEL_TRANSLATION
@ TRACK_MOTION_MODEL_TRANSLATION_ROTATION_SCALE
@ TRACK_MOTION_MODEL_TRANSLATION_ROTATION
@ TRACK_MOTION_MODEL_HOMOGRAPHY
@ TRACK_MOTION_MODEL_AFFINE
@ TRACKING_RECONSTRUCTED
struct MovieTracking MovieTracking
@ CAMERA_UNITS_MM
@ CAMERA_UNITS_PX
struct MovieTrackingPlaneTrack MovieTrackingPlaneTrack
struct MovieTrackingMarker MovieTrackingMarker
@ PLANE_TRACK_HIDDEN
@ PLANE_TRACK_LOCKED
@ PLANE_TRACK_AUTOKEY
@ TRACKING_DOPE_SELECTED_ONLY
@ TRACKING_DOPE_SORT_INVERSE
@ TRACKING_DOPE_SHOW_HIDDEN
@ TRACKING_DISTORTION_MODEL_DIVISION
@ TRACKING_DISTORTION_MODEL_POLYNOMIAL
@ TRACKING_DISTORTION_MODEL_NUKE
@ TRACKING_DISTORTION_MODEL_BROWN
@ MARKER_GRAPH_SEL_X
@ MARKER_GRAPH_SEL_Y
@ MARKER_TRACKED
@ MARKER_DISABLED
@ MARKER_GRAPH_SEL
struct MovieTrackingTrack MovieTrackingTrack
struct MovieTrackingDopesheetChannel MovieTrackingDopesheetChannel
@ TRACKING_CLEAN_DELETE_SEGMENT
@ TRACKING_CLEAN_SELECT
@ TRACKING_CLEAN_DELETE_TRACK
@ TRACKING_FILTER_BICUBIC
@ TRACKING_FILTER_NEAREST
@ TRACKING_FILTER_BILINEAR
struct MovieTrackingStats MovieTrackingStats
@ TRACKING_AUTOSCALE
@ TRACKING_SHOW_STAB_TRACKS
@ TRACKING_STABILIZE_SCALE
@ TRACKING_STABILIZE_ROTATION
@ TRACKING_2D_STABILIZATION
struct MovieTrackingReconstruction MovieTrackingReconstruction
struct MovieTrackingObject MovieTrackingObject
struct MovieTrackingDopesheetCoverageSegment MovieTrackingDopesheetCoverageSegment
struct MovieTrackingStabilization MovieTrackingStabilization
@ TRACKING_COVERAGE_BAD
@ TRACKING_COVERAGE_OK
@ TRACKING_COVERAGE_ACCEPTABLE
struct MovieTrackingCamera MovieTrackingCamera
eTrackFrameMatch
@ TRACK_MATCH_PREVIOS_FRAME
@ TRACK_MATCH_KEYFRAME
struct MovieTrackingDopesheetChannel * prev
struct MovieTrackingDopesheetChannel * next
struct MovieTrackingDopesheetCoverageSegment * prev
struct MovieTrackingDopesheetCoverageSegment * next
struct MovieTrackingObject * prev
MovieTrackingReconstruction reconstruction
struct MovieTrackingObject * next
struct MovieTrackingPlaneTrack * next
MovieTrackingTrack ** point_tracks
MovieTrackingPlaneMarker * markers
struct MovieTrackingPlaneTrack * prev
struct MovieReconstructedCamera * cameras
MovieTrackingTrack *rot_track DNA_DEPRECATED
struct bGPdata * gpd
MovieTrackingMarker * markers
float search_min[2] DNA_DEPRECATED
float pat_min[2] DNA_DEPRECATED
struct MovieTrackingTrack * next
struct MovieTrackingTrack * prev
MovieTrackingReconstruction reconstruction
MovieTrackingPlaneTrack * act_plane_track
MovieTrackingDopesheet dopesheet
MovieTrackingStats * stats
MovieTrackingTrack * act_track
MovieTrackingStabilization stabilization
MovieTrackingCamera camera
MovieTrackingSettings settings