Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2011-12-15 20:10:49 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2011-12-15 20:10:49 +0400
commite534af906a938b6e3cf0727d577c89a51052f6ff (patch)
tree28b719240db65d87bcb45363d1638782cc410312 /source/blender/blenkernel
parent53f37cd1edb6e4aa5ea1c8a0da2c466e0cad497c (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.h2
-rw-r--r--source/blender/blenkernel/intern/tracking.c29
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;
}