diff options
author | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-12-15 20:10:49 +0400 |
---|---|---|
committer | Sergey Sharybin <sergey.vfx@gmail.com> | 2011-12-15 20:10:49 +0400 |
commit | e534af906a938b6e3cf0727d577c89a51052f6ff (patch) | |
tree | 28b719240db65d87bcb45363d1638782cc410312 /source/blender/blenkernel | |
parent | 53f37cd1edb6e4aa5ea1c8a0da2c466e0cad497c (diff) |
Object tracking: various fixes and improvements
- Bundles selection is now available for object's bundles
- If bundles selection wasn't changed in 3D viewport, fallback to regular
object selection, so objects behind bundles can be selected
- Snap cursor to selection now respects object's bundle selection
- Object and rack name now can be selected from list in constraint settings
- Added preset for tracks used for object tracking
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_tracking.h | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/tracking.c | 29 |
2 files changed, 21 insertions, 10 deletions
diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h index 772306967fc..7b3cb3f69bb 100644 --- a/source/blender/blenkernel/BKE_tracking.h +++ b/source/blender/blenkernel/BKE_tracking.h @@ -77,7 +77,7 @@ struct ImBuf *BKE_tracking_get_search_imbuf(struct ImBuf *ibuf, struct MovieTrac void BKE_track_unique_name(struct ListBase *tracksbase, struct MovieTrackingTrack *track); struct MovieTrackingTrack *BKE_tracking_named_track(struct MovieTracking *tracking, struct MovieTrackingObject *object, const char *name); -struct MovieTrackingTrack *BKE_tracking_indexed_track(struct MovieTracking *tracking, int tracknr); +struct MovieTrackingTrack *BKE_tracking_indexed_track(struct MovieTracking *tracking, int tracknr, struct ListBase **tracksbase_r); void BKE_tracking_camera_shift(struct MovieTracking *tracking, int winx, int winy, float *shiftx, float *shifty); void BKE_tracking_camera_to_blender(struct MovieTracking *tracking, struct Scene *scene, struct Camera *camera, int width, int height); diff --git a/source/blender/blenkernel/intern/tracking.c b/source/blender/blenkernel/intern/tracking.c index 931f3f5fc72..262c0576186 100644 --- a/source/blender/blenkernel/intern/tracking.c +++ b/source/blender/blenkernel/intern/tracking.c @@ -2257,23 +2257,34 @@ void BKE_tracking_detect_fast(MovieTracking *tracking, ListBase *tracksbase, ImB #endif } -MovieTrackingTrack *BKE_tracking_indexed_track(MovieTracking *tracking, int tracknr) +MovieTrackingTrack *BKE_tracking_indexed_track(MovieTracking *tracking, int tracknr, ListBase **tracksbase_r) { - ListBase *tracksbase= &tracking->tracks; /* XXX: need proper tracks base */ - MovieTrackingTrack *track= tracksbase->first; + MovieTrackingObject *object; int cur= 1; - while(track) { - if(track->flag&TRACK_HAS_BUNDLE) { - if(cur==tracknr) - return track; + object= tracking->objects.first; + while(object) { + ListBase *tracksbase= BKE_tracking_object_tracks(tracking, object); + MovieTrackingTrack *track= tracksbase->first; + + while(track) { + if(track->flag&TRACK_HAS_BUNDLE) { + if(cur==tracknr) { + *tracksbase_r= tracksbase; + return track; + } - cur++; + cur++; + } + + track= track->next; } - track= track->next; + object= object->next; } + *tracksbase_r= NULL; + return NULL; } |