[Bf-blender-cvs] [a9a1aaf] soc-2016-multiview: add correspondence data struct
Tianwei Shen
noreply at git.blender.org
Mon May 30 21:08:17 CEST 2016
Commit: a9a1aaf7e4d911853d5368d406374cdc365d488b
Author: Tianwei Shen
Date: Tue May 31 03:08:03 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rBa9a1aaf7e4d911853d5368d406374cdc365d488b
add correspondence data struct
===================================================================
M source/blender/blenkernel/BKE_tracking.h
M source/blender/editors/space_clip/tracking_ops_correspondence.c
M source/blender/makesdna/DNA_tracking_types.h
===================================================================
diff --git a/source/blender/blenkernel/BKE_tracking.h b/source/blender/blenkernel/BKE_tracking.h
index 4366d00..36b4a81 100644
--- a/source/blender/blenkernel/BKE_tracking.h
+++ b/source/blender/blenkernel/BKE_tracking.h
@@ -37,6 +37,7 @@ struct ImBuf;
struct ListBase;
struct MovieReconstructContext;
struct MovieTrackingTrack;
+struct MovieTrackingCorrespondence;
struct MovieTrackingMarker;
struct MovieTrackingPlaneTrack;
struct MovieTrackingPlaneMarker;
@@ -288,6 +289,10 @@ void BKE_tracking_dopesheet_tag_update(struct MovieTracking *tracking);
void BKE_tracking_dopesheet_update(struct MovieTracking *tracking);
/* Correspondence */
+void BKE_tracking_correspondence_unique_name(struct ListBase *tracksbase, struct MovieTrackingCorrespondence *corr);
+struct MovieTrackingCorrespondence *BKE_tracking_correspondence_add(struct MovieTracking *tracking, struct ListBase *corr_base,
+ struct MovieTrackingTrack *primary_track,
+ struct MovieTrackingTrack *witness_track);
#define TRACK_SELECTED(track) ((track)->flag & SELECT || (track)->pat_flag & SELECT || (track)->search_flag & SELECT)
diff --git a/source/blender/editors/space_clip/tracking_ops_correspondence.c b/source/blender/editors/space_clip/tracking_ops_correspondence.c
index ca51b76..efc68a3 100644
--- a/source/blender/editors/space_clip/tracking_ops_correspondence.c
+++ b/source/blender/editors/space_clip/tracking_ops_correspondence.c
@@ -60,6 +60,36 @@
#include "clip_intern.h"
#include "tracking_ops_intern.h"
+// TODO(tianwei): may move these functions to tracking.c in the future
+/* Ensure specified correspondence has got unique name,
+ * if it's not name of specified correspondence will be changed
+ * keeping names of all other correspondence unchanged.
+ */
+void BKE_tracking_correspondence_unique_name(ListBase *tracksbase, MovieTrackingCorrespondence *corr)
+{
+ BLI_uniquename(tracksbase, corr, CTX_DATA_(BLT_I18NCONTEXT_ID_MOVIECLIP, "Correspondence"), '.',
+ offsetof(MovieTrackingCorrespondence, name), sizeof(corr->name));
+}
+
+/* Add new correspondence to a specified correspondence base.
+ */
+MovieTrackingCorrespondence *BKE_tracking_correspondence_add(MovieTracking *tracking, ListBase *corr_base,
+ MovieTrackingTrack *primary_track,
+ MovieTrackingTrack *witness_track)
+{
+ MovieTrackingCorrespondence *corr;
+
+ corr = MEM_callocN(sizeof(MovieTrackingCorrespondence), "add correspondence");
+ strcpy(corr->name, "Correspondence");
+ corr->primary_track = primary_track;
+ corr->witness_track = witness_track;
+
+ BLI_addtail(corr_base, corr);
+ BKE_tracking_correspondence_unique_name(corr_base, corr);
+
+ return corr;
+}
+
/********************** add correspondence operator *********************/
static int add_correspondence_exec(bContext *C, wmOperator *op)
@@ -107,8 +137,10 @@ static int add_correspondence_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
- // link two tracks, mark these two tracks in a different color
- //ed_tracking_delect_all_tracks(tracksbase);
+ // TODO(tianwei): link two tracks, mark these two tracks in a different color
+
+ // add these correspondence
+ BKE_tracking_correspondence_add(tracking, &(tracking->correspondences), primary_track, witness_track);
return OPERATOR_FINISHED;
}
diff --git a/source/blender/makesdna/DNA_tracking_types.h b/source/blender/makesdna/DNA_tracking_types.h
index c2117b1..df3ef6b 100644
--- a/source/blender/makesdna/DNA_tracking_types.h
+++ b/source/blender/makesdna/DNA_tracking_types.h
@@ -162,8 +162,12 @@ typedef struct MovieTrackingTrack {
float weight, pad;
} MovieTrackingTrack;
+//TODO(tianwei): expand the fields, now only two tracks
typedef struct MovieTrackingCorrespondence {
- //TODO(tianwei): expand the fields, now only two tracks
+ struct MovieTrackingCorrespondence *next, *prev;
+
+ char name[64]; /* MAX_NAME */
+
MovieTrackingTrack *primary_track;
MovieTrackingTrack *witness_track;
} MovieTrackingCorrespondence;
@@ -347,6 +351,7 @@ typedef struct MovieTracking {
MovieTrackingCamera camera; /* camera intrinsics */
ListBase tracks; /* list of tracks used for camera object */
ListBase plane_tracks; /* list of plane tracks used by camera object */
+ ListBase correspondences; /* list of correspondence for multi-view support */
MovieTrackingReconstruction reconstruction; /* reconstruction data for camera object */
MovieTrackingStabilization stabilization; /* stabilization data */
MovieTrackingTrack *act_track; /* active track */
More information about the Bf-blender-cvs
mailing list