[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41094] branches/soc-2011-tomato/source/ blender: Camera tracking integration

Sergey Sharybin g.ulairi at gmail.com
Mon Oct 17 17:57:20 CEST 2011


Revision: 41094
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41094
Author:   nazgul
Date:     2011-10-17 15:57:20 +0000 (Mon, 17 Oct 2011)
Log Message:
-----------
Camera tracking integration
===========================

Allow offset from locked position.

Modified Paths:
--------------
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_ops.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
    branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h
    branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_ops.c	2011-10-17 15:55:35 UTC (rev 41093)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_ops.c	2011-10-17 15:57:20 UTC (rev 41094)
@@ -300,8 +300,9 @@
 
 typedef struct ViewPanData {
 	float x, y;
-	float xof, yof;
+	float xof, yof, xorig, yorig;
 	int event_type;
+	float *vec;
 } ViewPanData;
 
 static void view_pan_init(bContext *C, wmOperator *op, wmEvent *event)
@@ -314,8 +315,13 @@
 
 	vpd->x= event->x;
 	vpd->y= event->y;
-	vpd->xof= sc->xof;
-	vpd->yof= sc->yof;
+
+	if(sc->flag&SC_LOCK_SELECTION) vpd->vec= &sc->xlockof;
+	else vpd->vec= &sc->xof;
+
+	copy_v2_v2(&vpd->xof, vpd->vec);
+	copy_v2_v2(&vpd->xorig, &vpd->xof);
+
 	vpd->event_type= event->type;
 
 	WM_event_add_modal_handler(C, op);
@@ -327,8 +333,8 @@
 	ViewPanData *vpd= op->customdata;
 
 	if(cancel) {
-		sc->xof= vpd->xof;
-		sc->yof= vpd->yof;
+		copy_v2_v2(vpd->vec, &vpd->xorig);
+
 		ED_region_tag_redraw(CTX_wm_region(C));
 	}
 
@@ -342,9 +348,15 @@
 	float offset[2];
 
 	RNA_float_get_array(op->ptr, "offset", offset);
-	sc->xof += offset[0];
-	sc->yof += offset[1];
 
+	if(sc->flag&SC_LOCK_SELECTION) {
+		sc->xlockof+= offset[0];
+		sc->ylockof+= offset[1];
+	} else {
+		sc->xof+= offset[0];
+		sc->yof+= offset[1];
+	}
+
 	ED_region_tag_redraw(CTX_wm_region(C));
 
 	return OPERATOR_FINISHED;
@@ -358,6 +370,7 @@
 
 		offset[0]= (event->x - event->prevx)/sc->zoom;
 		offset[1]= (event->y - event->prevy)/sc->zoom;
+
 		RNA_float_set_array(op->ptr, "offset", offset);
 
 		view_pan_exec(C, op);
@@ -377,8 +390,7 @@
 
 	switch(event->type) {
 		case MOUSEMOVE:
-			sc->xof= vpd->xof;
-			sc->yof= vpd->yof;
+			copy_v2_v2(vpd->vec, &vpd->xorig);
 			offset[0]= (vpd->x - event->x)/sc->zoom;
 			offset[1]= (vpd->y - event->y)/sc->zoom;
 			RNA_float_set_array(op->ptr, "offset", offset);
@@ -727,6 +739,9 @@
 	SpaceClip *sc= CTX_wm_space_clip(C);
 	ARegion *ar= CTX_wm_region(C);
 
+	sc->xlockof= 0.f;
+	sc->ylockof= 0.f;
+
 	ED_clip_view_selection(sc, ar, 1);
 	ED_region_tag_redraw(CTX_wm_region(C));
 

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c	2011-10-17 15:55:35 UTC (rev 41093)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c	2011-10-17 15:57:20 UTC (rev 41094)
@@ -564,6 +564,9 @@
 
 		ED_clip_view_selection(sc, ar, 0);
 
+		sc->xof+= sc->xlockof;
+		sc->yof+= sc->ylockof;
+
 		if(tmpibuf)
 			IMB_freeImBuf(tmpibuf);
 	}

Modified: branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h
===================================================================
--- branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h	2011-10-17 15:55:35 UTC (rev 41093)
+++ branches/soc-2011-tomato/source/blender/makesdna/DNA_space_types.h	2011-10-17 15:57:20 UTC (rev 41094)
@@ -571,6 +571,7 @@
 	int spacetype;
 
 	float xof, yof;				/* user defined offset, image is centered */
+	float xlockof, ylockof;		/* user defined offset from locked position */
 	float zoom;					/* user defined zoom level */
 
 	struct MovieClipUser user;		/* user of clip */

Modified: branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c
===================================================================
--- branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c	2011-10-17 15:55:35 UTC (rev 41093)
+++ branches/soc-2011-tomato/source/blender/makesrna/intern/rna_space.c	2011-10-17 15:57:20 UTC (rev 41094)
@@ -956,6 +956,14 @@
 	sc->scopes.ok= 0;
 }
 
+static void rna_SpaceClipEditor_lock_selection_update(Main *UNUSED(bmain), Scene *UNUSED(scene), PointerRNA *ptr)
+{
+	SpaceClip *sc= (SpaceClip*)(ptr->data);
+
+	sc->xlockof= 0.f;
+	sc->ylockof= 0.f;
+}
+
 #else
 
 static void rna_def_space(BlenderRNA *brna)
@@ -2786,7 +2794,7 @@
 	prop= RNA_def_property(srna, "lock_selection", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_ui_text(prop, "Lock to Selection", "Lock viewport to selected markers during playback");
 	RNA_def_property_boolean_sdna(prop, NULL, "flag", SC_LOCK_SELECTION);
-	RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CLIP, NULL);
+	RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CLIP, "rna_SpaceClipEditor_lock_selection_update");
 
 	/* show markers pathes */
 	prop= RNA_def_property(srna, "show_track_path", PROP_BOOLEAN, PROP_NONE);




More information about the Bf-blender-cvs mailing list