[Bf-blender-cvs] [fc965a8] soc-2016-multiview: add a new mode in space clip view
Tianwei Shen
noreply at git.blender.org
Fri Jul 15 14:56:31 CEST 2016
Commit: fc965a85c6d141edff11f9e634c2bc95d363f7c5
Author: Tianwei Shen
Date: Fri Jul 15 16:07:59 2016 +0800
Branches: soc-2016-multiview
https://developer.blender.org/rBfc965a85c6d141edff11f9e634c2bc95d363f7c5
add a new mode in space clip view
===================================================================
M release/scripts/startup/bl_ui/space_clip.py
M source/blender/editors/include/ED_clip.h
M source/blender/editors/space_clip/clip_editor.c
M source/blender/editors/space_clip/tracking_ops_correspondence.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/space_clip.py b/release/scripts/startup/bl_ui/space_clip.py
index c952a64..017db04 100644
--- a/release/scripts/startup/bl_ui/space_clip.py
+++ b/release/scripts/startup/bl_ui/space_clip.py
@@ -143,6 +143,36 @@ class CLIP_HT_header(Header):
row.prop(toolsettings, "proportional_edit_falloff",
text="", icon_only=True)
+ def _draw_correspondence(self, context):
+ layout = self.layout
+
+ toolsettings = context.tool_settings
+ sc = context.space_data
+ clip = sc.clip
+
+ row = layout.row(align=True)
+ row.template_header()
+
+ CLIP_MT_correspondence_editor_menus.draw_collapsible(context, layout)
+
+ row = layout.row()
+ row.template_ID(sc, "clip", open="clip.open")
+
+ if clip:
+ tracking = clip.tracking
+ active_object = tracking.objects.active
+
+ layout.prop(sc, "mode", text="")
+ layout.prop(sc, "view", text="", expand=True)
+ layout.prop(sc, "pivot_point", text="", icon_only=True)
+
+ r = active_object.reconstruction
+
+ if r.is_valid and sc.view == 'CLIP':
+ layout.label(text="Solve error: %.4f" % (r.average_error))
+ else:
+ layout.prop(sc, "view", text="", expand=True)
+
def draw(self, context):
layout = self.layout
@@ -150,8 +180,10 @@ class CLIP_HT_header(Header):
if sc.mode == 'TRACKING':
self._draw_tracking(context)
- else:
+ elif sc.mode == 'MASK':
self._draw_masking(context)
+ else: # sc.mode == 'CORRESPONDENCE'
+ self._draw_correspondence(context)
layout.template_running_jobs()
@@ -203,6 +235,30 @@ class CLIP_MT_masking_editor_menus(Menu):
layout.menu("CLIP_MT_clip") # XXX - remove?
+class CLIP_MT_correspondence_editor_menus(Menu):
+
+ bl_idname = "CLIP_MT_correspondence_editor_menus"
+ bl_label = ""
+
+ def draw(self, context):
+ self.draw_menus(self.layout, context)
+
+ @staticmethod
+ def draw_menus(layout, context):
+ sc = context.space_data
+ clip = sc.clip
+
+ layout.menu("CLIP_MT_view")
+
+ if clip:
+ layout.menu("CLIP_MT_select")
+ layout.menu("CLIP_MT_clip")
+ layout.menu("CLIP_MT_track")
+ layout.menu("CLIP_MT_reconstruction")
+ else:
+ layout.menu("CLIP_MT_clip")
+
+
class CLIP_PT_clip_view_panel:
@classmethod
diff --git a/source/blender/editors/include/ED_clip.h b/source/blender/editors/include/ED_clip.h
index 5f8ebd8..5085803 100644
--- a/source/blender/editors/include/ED_clip.h
+++ b/source/blender/editors/include/ED_clip.h
@@ -51,6 +51,7 @@ int ED_space_clip_view_clip_poll(struct bContext *C);
int ED_space_clip_tracking_poll(struct bContext *C);
int ED_space_clip_maskedit_poll(struct bContext *C);
int ED_space_clip_maskedit_mask_poll(struct bContext *C);
+int ED_space_clip_correspondence_poll(bContext *C);
void ED_space_clip_get_size(struct SpaceClip *sc, int *width, int *height);
void ED_space_clip_get_size_fl(struct SpaceClip *sc, float size[2]);
@@ -75,6 +76,7 @@ void ED_clip_mouse_pos(struct SpaceClip *sc, struct ARegion *ar, const int mval[
bool ED_space_clip_check_show_trackedit(struct SpaceClip *sc);
bool ED_space_clip_check_show_maskedit(struct SpaceClip *sc);
+bool ED_space_clip_check_show_correspondence(struct SpaceClip *sc);
struct MovieClip *ED_space_clip_get_clip(struct SpaceClip *sc);
void ED_space_clip_set_clip(struct bContext *C, struct bScreen *screen, struct SpaceClip *sc, struct MovieClip *clip);
diff --git a/source/blender/editors/space_clip/clip_editor.c b/source/blender/editors/space_clip/clip_editor.c
index 1ff6562..ca7466b 100644
--- a/source/blender/editors/space_clip/clip_editor.c
+++ b/source/blender/editors/space_clip/clip_editor.c
@@ -133,6 +133,17 @@ int ED_space_clip_maskedit_mask_poll(bContext *C)
return false;
}
+int ED_space_clip_correspondence_poll(bContext *C)
+{
+ SpaceClip *sc = CTX_wm_space_clip(C);
+
+ if (sc && sc->clip) {
+ return ED_space_clip_check_show_correspondence(sc);
+ }
+
+ return false;
+}
+
/* ******** common editing functions ******** */
void ED_space_clip_get_size(SpaceClip *sc, int *width, int *height)
@@ -549,6 +560,15 @@ bool ED_space_clip_check_show_maskedit(SpaceClip *sc)
return false;
}
+bool ED_space_clip_check_show_correspondence(SpaceClip *sc)
+{
+ if (sc) {
+ return sc->mode == SC_MODE_CORRESPONDENCE;
+ }
+
+ return false;
+}
+
/* ******** clip editing functions ******** */
MovieClip *ED_space_clip_get_clip(SpaceClip *sc)
diff --git a/source/blender/editors/space_clip/tracking_ops_correspondence.c b/source/blender/editors/space_clip/tracking_ops_correspondence.c
index 58c2504..608d637 100644
--- a/source/blender/editors/space_clip/tracking_ops_correspondence.c
+++ b/source/blender/editors/space_clip/tracking_ops_correspondence.c
@@ -113,8 +113,6 @@ static int add_correspondence_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
}
- // TODO(tianwei): mark these two tracks in a different color when clicked
-
// add these correspondence
char error_msg[256] = "\0";
if (!BKE_tracking_correspondence_add(&(tracking->correspondences), primary_track, witness_track,
@@ -304,7 +302,7 @@ static void solve_multiview_startjob(void *scv, short *stop, short *do_update, f
sizeof(smj->stats_message));
}
-// TODO(tianwei): setting status for witness camera is not finished
+// TODO(tianwei): not sure about the scene for witness cameras, check with Sergey
static void solve_multiview_freejob(void *scv)
{
SolveMultiviewJob *smj = (SolveMultiviewJob *)scv;
@@ -332,7 +330,7 @@ static void solve_multiview_freejob(void *scv)
tracking->reconstruction.error);
}
- /* Set currently solved clip as active for scene. */
+ /* Set the currently solved primary clip as active for scene. */
if (scene->clip != NULL) {
id_us_min(&clip->id);
}
@@ -363,7 +361,6 @@ static void solve_multiview_freejob(void *scv)
BKE_tracking_multiview_reconstruction_context_free(smj->context);
MEM_freeN(smj);
- printf("free multiview reconstruction context\n");
}
static int solve_multiview_exec(bContext *C, wmOperator *op)
More information about the Bf-blender-cvs
mailing list