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

Sergey Sharybin g.ulairi at gmail.com
Fri Jun 17 16:47:41 CEST 2011


Revision: 37597
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=37597
Author:   nazgul
Date:     2011-06-17 14:47:41 +0000 (Fri, 17 Jun 2011)
Log Message:
-----------
Camera tracking integration
===========================

Test tool: convert track to location fcurves for object in 3d world.
1 pixel on footage is equal to 1 Blender unit.

Added for testing only, could be removed any time -- real
parenting to markers/bundles are only under design now.

Modified Paths:
--------------
    branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
    branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h
    branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c
    branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c

Modified: branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py	2011-06-17 14:47:22 UTC (rev 37596)
+++ branches/soc-2011-tomato/release/scripts/startup/bl_ui/space_clip.py	2011-06-17 14:47:41 UTC (rev 37597)
@@ -159,6 +159,19 @@
         row.prop(sc, "path_length")
 
 
+class CLIP_PT_test(bpy.types.Panel):
+    bl_space_type = 'CLIP_EDITOR'
+    bl_region_type = 'TOOLS'
+    bl_label = "Test"
+    bl_options = {'DEFAULT_CLOSED'}
+
+    def draw(self, context):
+        layout = self.layout
+        sc = context.space_data
+
+        layout.operator("clip.track_to_fcurves")
+
+
 class CLIP_PT_debug(bpy.types.Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'UI'

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h	2011-06-17 14:47:22 UTC (rev 37596)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_intern.h	2011-06-17 14:47:41 UTC (rev 37597)
@@ -71,6 +71,8 @@
 void CLIP_OT_reset_tracking_settings(struct wmOperatorType *ot);
 void CLIP_OT_clear_track_path(struct wmOperatorType *ot);
 
+void CLIP_OT_track_to_fcurves(struct wmOperatorType *ot);
+
 /* clip_draw.c */
 void draw_clip_main(struct SpaceClip *sc, struct ARegion *ar, struct Scene *scene);
 void draw_clip_track_widget(const struct bContext *C, void *trackp, void *userp, void *clipp, rcti *rect);

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-06-17 14:47:22 UTC (rev 37596)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/space_clip.c	2011-06-17 14:47:41 UTC (rev 37597)
@@ -210,6 +210,8 @@
 
 	WM_operatortype_append(CLIP_OT_reset_tracking_settings);
 	WM_operatortype_append(CLIP_OT_clear_track_path);
+
+	WM_operatortype_append(CLIP_OT_track_to_fcurves);
 }
 
 static void clip_keymap(struct wmKeyConfig *keyconf)

Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-06-17 14:47:22 UTC (rev 37596)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c	2011-06-17 14:47:41 UTC (rev 37597)
@@ -32,6 +32,7 @@
 #include "DNA_movieclip_types.h"
 #include "DNA_object_types.h"	/* SELECT */
 #include "DNA_scene_types.h"
+#include "DNA_anim_types.h"
 
 #include "BLI_utildefines.h"
 #include "BLI_math.h"
@@ -39,16 +40,20 @@
 #include "BLI_rect.h"
 #include "BLI_blenlib.h"
 
+#include "BKE_main.h"
 #include "BKE_context.h"
 #include "BKE_movieclip.h"
 #include "BKE_tracking.h"
 #include "BKE_global.h"
+#include "BKE_animsys.h"
+#include "BKE_depsgraph.h"
 
 #include "WM_api.h"
 #include "WM_types.h"
 
 #include "ED_screen.h"
 #include "ED_clip.h"
+#include "ED_keyframing.h"
 
 #include "IMB_imbuf_types.h"
 
@@ -889,4 +894,88 @@
 
 	/* flags */
 	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
\ No newline at end of file
+}
+
+/********************** track to fcurves opertaotr *********************/
+
+static int track_to_fcurves_poll(bContext *C)
+{
+	Object *ob= CTX_data_active_object(C);
+	SpaceClip *sc= CTX_wm_space_clip(C);
+
+	if(ob && sc) {
+		MovieClip *clip= ED_space_clip(sc);
+		int type;
+		void *sel;
+
+		if(clip) {
+			BKE_movieclip_last_selection(clip, &type, &sel);
+			if(type==MCLIP_SEL_TRACK)
+				return 1;
+		}
+	}
+
+	return 0;
+}
+
+static int track_to_fcurves_exec(bContext *C, wmOperator *op)
+{
+	SpaceClip *sc= CTX_wm_space_clip(C);
+	MovieClip *clip= ED_space_clip(sc);
+	Object *ob= CTX_data_active_object(C);
+	Scene *scene= CTX_data_scene(C);
+	KeyingSet *ks;
+	int kflag, fra= SFRA, type;
+	MovieTrackingTrack *track;
+	bAction *act= verify_adt_action(&ob->id, 1);
+	MovieClipUser user= {0};
+	int width, height;
+	float scale= RNA_float_get(op->ptr, "scale");
+
+	BKE_movieclip_last_selection(clip, &type, (void**)&track);
+
+	ks= ANIM_builtin_keyingset_get_named(NULL, "Location");
+	kflag= ks->flag;
+	kflag |= ANIM_get_keyframing_flags(scene, 1);
+
+	(void)op;
+
+	BKE_movieclip_acquire_size(clip, &user, &width, &height);
+
+	while(fra<EFRA) {
+		MovieTrackingMarker *marker= BKE_tracking_get_marker(track, fra);
+
+		if(marker) {
+			FCurve *fcu;
+
+			fcu= verify_fcurve(act, ks->name, "location", 0, 1);
+			insert_vert_fcurve(fcu, fra, marker->pos[0]*width*scale, kflag);
+
+			fcu= verify_fcurve(act, ks->name, "location", 1, 1);
+			insert_vert_fcurve(fcu, fra, marker->pos[1]*height*scale, kflag);
+		}
+
+		fra++;
+	}
+
+	WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
+
+	return OPERATOR_FINISHED;
+}
+
+void CLIP_OT_track_to_fcurves(wmOperatorType *ot)
+{
+	/* identifiers */
+	ot->name= "Convert Track To FCurves";
+	ot->description= "Convert active track to f-curves for active object in the scene";
+	ot->idname= "CLIP_OT_track_to_fcurves";
+
+	/* api callbacks */
+	ot->exec= track_to_fcurves_exec;
+	ot->poll= track_to_fcurves_poll;
+
+	/* flags */
+	ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+	RNA_def_float(ot->srna, "scale", 1.f, -FLT_MAX, FLT_MAX, "Scale", "Scale factor for generated coordinates", -100.f, 100.f);
+}




More information about the Bf-blender-cvs mailing list