[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38955] branches/soc-2011-salad: Merging r38901 through r38952 from soc-2011-tomato into soc-2011-salad

Sergey Sharybin g.ulairi at gmail.com
Tue Aug 2 20:46:23 CEST 2011


Revision: 38955
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38955
Author:   nazgul
Date:     2011-08-02 18:46:23 +0000 (Tue, 02 Aug 2011)
Log Message:
-----------
Merging r38901 through r38952 from soc-2011-tomato into soc-2011-salad

Revision Links:
--------------
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38901
    http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38952

Modified Paths:
--------------
    branches/soc-2011-salad/build_files/scons/config/darwin-config.py
    branches/soc-2011-salad/release/scripts/startup/bl_ui/space_clip.py
    branches/soc-2011-salad/source/blender/blenkernel/BKE_tracking.h
    branches/soc-2011-salad/source/blender/blenkernel/intern/tracking.c
    branches/soc-2011-salad/source/blender/blenloader/intern/readfile.c
    branches/soc-2011-salad/source/blender/blenloader/intern/writefile.c
    branches/soc-2011-salad/source/blender/editors/space_clip/clip_draw.c
    branches/soc-2011-salad/source/blender/editors/space_clip/space_clip.c
    branches/soc-2011-salad/source/blender/editors/space_clip/tracking_ops.c
    branches/soc-2011-salad/source/blender/editors/space_view3d/drawobject.c
    branches/soc-2011-salad/source/blender/makesdna/DNA_tracking_types.h
    branches/soc-2011-salad/source/blender/makesrna/intern/rna_tracking.c

Property Changed:
----------------
    branches/soc-2011-salad/


Property changes on: branches/soc-2011-salad
___________________________________________________________________
Modified: svn:mergeinfo
   - /branches/soc-2010-jwilkins:28499-37009
/branches/soc-2010-nicolasbishop:28448-30783,30792-30793,30797-30798,30815
/branches/soc-2011-carrot:36854,37548,37564,37602,37622,37848,38043,38064,38226,38231,38282,38620,38661-38662
/branches/soc-2011-cucumber:36829-36994
/branches/soc-2011-onion:36833-38309
/branches/soc-2011-pepper:36830-38934
/branches/soc-2011-tomato:36831-38900
/trunk/blender:36834-38951
   + /branches/soc-2010-jwilkins:28499-37009
/branches/soc-2010-nicolasbishop:28448-30783,30792-30793,30797-30798,30815
/branches/soc-2011-carrot:36854,37548,37564,37602,37622,37848,38043,38064,38226,38231,38282,38620,38661-38662
/branches/soc-2011-cucumber:36829-36994
/branches/soc-2011-onion:36833-38309
/branches/soc-2011-pepper:36830-38934
/branches/soc-2011-tomato:36831-38952
/trunk/blender:36834-38951

Modified: branches/soc-2011-salad/build_files/scons/config/darwin-config.py
===================================================================
--- branches/soc-2011-salad/build_files/scons/config/darwin-config.py	2011-08-02 18:43:00 UTC (rev 38954)
+++ branches/soc-2011-salad/build_files/scons/config/darwin-config.py	2011-08-02 18:46:23 UTC (rev 38955)
@@ -265,6 +265,7 @@
 elif MACOSX_ARCHITECTURE == 'x86_64':
     BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-msse2']
 #On-Surface Brush
+
 WITH_BF_ONSURFACEBRUSH = True
 
 # SpaceNavigator and related 3D mice

Modified: branches/soc-2011-salad/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- branches/soc-2011-salad/release/scripts/startup/bl_ui/space_clip.py	2011-08-02 18:43:00 UTC (rev 38954)
+++ branches/soc-2011-salad/release/scripts/startup/bl_ui/space_clip.py	2011-08-02 18:46:23 UTC (rev 38955)
@@ -113,7 +113,13 @@
         layout.template_ID(sc, "clip")
         layout.template_running_jobs()
 
+        if clip:
+            r = clip.tracking.reconstruction
 
+            if r.is_reconstructed:
+                layout.label(text="Average solve error: %.4f"  % (r.average_error))
+
+
 class CLIP_PT_tools(bpy.types.Panel):
     bl_space_type = 'CLIP_EDITOR'
     bl_region_type = 'TOOLS'
@@ -577,6 +583,9 @@
         op = layout.operator("clip.select_grouped", text="Select Disabled")
         op.group = 'DISABLED'
 
+        op = layout.operator("clip.select_grouped", text="Select Failed")
+        op.group = 'FAILED'
+
         op = layout.operator("clip.select_grouped", text="Select by Color")
         op.group = 'COLOR'
 

Modified: branches/soc-2011-salad/source/blender/blenkernel/BKE_tracking.h
===================================================================
--- branches/soc-2011-salad/source/blender/blenkernel/BKE_tracking.h	2011-08-02 18:43:00 UTC (rev 38954)
+++ branches/soc-2011-salad/source/blender/blenkernel/BKE_tracking.h	2011-08-02 18:46:23 UTC (rev 38955)
@@ -71,7 +71,7 @@
 void BKE_tracking_sync_user(struct MovieClipUser *user, struct MovieTrackingContext *context);
 int BKE_tracking_next(struct MovieTrackingContext *context);
 
-float BKE_tracking_solve_reconstruction(struct MovieClip *clip);
+float BKE_tracking_solve_reconstruction(struct MovieTracking *tracking, int width, int height);
 
 void BKE_track_unique_name(struct MovieTracking *tracking, struct MovieTrackingTrack *track);
 struct MovieTrackingTrack *BKE_find_track_by_name(struct MovieTracking *tracking, const char *name);

Modified: branches/soc-2011-salad/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-salad/source/blender/blenkernel/intern/tracking.c	2011-08-02 18:43:00 UTC (rev 38954)
+++ branches/soc-2011-salad/source/blender/blenkernel/intern/tracking.c	2011-08-02 18:46:23 UTC (rev 38955)
@@ -448,8 +448,8 @@
 
 	BLI_freelistN(&tracking->tracks);
 
-	if(tracking->camera.reconstructed)
-		MEM_freeN(tracking->camera.reconstructed);
+	if(tracking->reconstruction.cameras)
+		MEM_freeN(tracking->reconstruction.cameras);
 
 	if(tracking->stabilization.scaleibuf)
 		IMB_freeImBuf(tracking->stabilization.scaleibuf);
@@ -871,17 +871,13 @@
 }
 
 #if WITH_LIBMV
-static struct libmv_Tracks *create_libmv_tracks(MovieClip *clip)
+static struct libmv_Tracks *create_libmv_tracks(MovieTracking *tracking, int width, int height)
 {
-	int width, height;
 	int tracknr= 0;
 	MovieTrackingTrack *track;
 	struct libmv_Tracks *tracks= libmv_tracksNew();;
 
-	/* XXX: could fail if footage uses images with different sizes */
-	BKE_movieclip_acquire_size(clip, NULL, &width, &height);
-
-	track= clip->tracking.tracks.first;
+	track= tracking->tracks.first;
 	while(track) {
 		int a= 0;
 
@@ -899,13 +895,12 @@
 	return tracks;
 }
 
-static int retrive_libmv_reconstruct(MovieClip *clip, struct libmv_Reconstruction *reconstruction)
+static int retrive_libmv_reconstruct(MovieTracking *tracking, struct libmv_Reconstruction *libmv_reconstruction)
 {
 	int tracknr= 0;
 	int sfra= INT_MAX, efra= INT_MIN, a, origin_set= 0;
-	MovieTracking *tracking= &clip->tracking;
 	MovieTrackingTrack *track;
-	MovieTrackingCamera *camera;
+	MovieTrackingReconstruction *reconstruction= &tracking->reconstruction;
 	MovieReconstructedCamera *reconstructed;
 	float origin[3]= {0.0f, 0.f, 0.0f};
 	int ok= 1;
@@ -914,7 +909,7 @@
 	while(track) {
 		double pos[3];
 
-		if(libmv_reporojectionPointForTrack(reconstruction, tracknr, pos)) {
+		if(libmv_reporojectionPointForTrack(libmv_reconstruction, tracknr, pos)) {
 			track->bundle_pos[0]= pos[0];
 			track->bundle_pos[1]= pos[1];
 			track->bundle_pos[2]= pos[2];
@@ -936,19 +931,17 @@
 		tracknr++;
 	}
 
-	camera= &tracking->camera;
+	if(reconstruction->cameras)
+		MEM_freeN(reconstruction->cameras);
 
-	if(camera->reconstructed)
-		MEM_freeN(camera->reconstructed);
-
-	camera->reconnr= 0;
-	camera->reconstructed= NULL;
+	reconstruction->camnr= 0;
+	reconstruction->cameras= NULL;
 	reconstructed= MEM_callocN((efra-sfra+1)*sizeof(MovieReconstructedCamera), "temp reconstructed camera");
 
 	for(a= sfra; a<=efra; a++) {
 		double matd[4][4];
 
-		if(libmv_reporojectionCameraForImage(reconstruction, a, matd)) {
+		if(libmv_reporojectionCameraForImage(libmv_reconstruction, a, matd)) {
 			int i, j;
 			float mat[4][4];
 
@@ -964,18 +957,18 @@
 			if(origin_set)
 				sub_v3_v3(mat[3], origin);
 
-			copy_m4_m4(reconstructed[camera->reconnr].mat, mat);
-			reconstructed[camera->reconnr].framenr= a;
-			camera->reconnr++;
+			copy_m4_m4(reconstructed[reconstruction->camnr].mat, mat);
+			reconstructed[reconstruction->camnr].framenr= a;
+			reconstruction->camnr++;
 		} else {
 			ok= 0;
 			printf("No camera for frame %d\n", a);
 		}
 	}
 
-	if(camera->reconnr) {
-		camera->reconstructed= MEM_callocN(camera->reconnr*sizeof(MovieReconstructedCamera), "reconstructed camera");
-		memcpy(camera->reconstructed, reconstructed, camera->reconnr*sizeof(MovieReconstructedCamera));
+	if(reconstruction->camnr) {
+		reconstruction->cameras= MEM_callocN(reconstruction->camnr*sizeof(MovieReconstructedCamera), "reconstructed camera");
+		memcpy(reconstruction->cameras, reconstructed, reconstruction->camnr*sizeof(MovieReconstructedCamera));
 	}
 
 	if(origin_set) {
@@ -995,25 +988,28 @@
 
 #endif
 
-float BKE_tracking_solve_reconstruction(MovieClip *clip)
+float BKE_tracking_solve_reconstruction(MovieTracking *tracking, int width, int height)
 {
 #if WITH_LIBMV
 	{
-		MovieTrackingCamera *camera= &clip->tracking.camera;
-		MovieTracking *tracking= &clip->tracking;
-		struct libmv_Tracks *tracks= create_libmv_tracks(clip);
+		MovieTrackingCamera *camera= &tracking->camera;
+		struct libmv_Tracks *tracks= create_libmv_tracks(tracking, width, height);
 		struct libmv_Reconstruction *reconstruction = libmv_solveReconstruction(tracks,
 		        tracking->settings.keyframe1, tracking->settings.keyframe2,
 		        camera->focal, camera->principal[0], camera->principal[1],
 		        camera->k1, camera->k2, camera->k3);
 		float error= libmv_reprojectionError(reconstruction);
 
-		if(!retrive_libmv_reconstruct(clip, reconstruction))
+		tracking->reconstruction.error= error;
+
+		if(!retrive_libmv_reconstruct(tracking, reconstruction))
 			error= -1.f;
 
 		libmv_destroyReconstruction(reconstruction);
 		libmv_tracksDestroy(tracks);
 
+		tracking->reconstruction.flag|= TRACKING_RECONSTRUCTED;
+
 		return error;
 	}
 #endif
@@ -1040,22 +1036,22 @@
 
 MovieReconstructedCamera *BKE_tracking_get_reconstructed_camera(MovieTracking *tracking, int framenr)
 {
-	MovieTrackingCamera *camera= &tracking->camera;
+	MovieTrackingReconstruction *reconstruction= &tracking->reconstruction;
 	int a= 0, d= 1;
 
-	if(!camera->reconnr)
+	if(!reconstruction->camnr)
 		return NULL;
 
-	if(camera->last_camera<camera->reconnr)
-		a= camera->last_camera;
+	if(reconstruction->last_camera<reconstruction->camnr)
+		a= reconstruction->last_camera;
 
-	if(camera->reconstructed[a].framenr>=framenr)
+	if(reconstruction->cameras[a].framenr>=framenr)
 		d= -1;
 
-	while(a>=0 && a<camera->reconnr) {
-		if(camera->reconstructed[a].framenr==framenr) {
-			camera->last_camera= a;
-			return &camera->reconstructed[a];
+	while(a>=0 && a<reconstruction->camnr) {
+		if(reconstruction->cameras[a].framenr==framenr) {
+			reconstruction->last_camera= a;
+			return &reconstruction->cameras[a];
 
 			break;
 		}

Modified: branches/soc-2011-salad/source/blender/blenloader/intern/readfile.c
===================================================================
--- branches/soc-2011-salad/source/blender/blenloader/intern/readfile.c	2011-08-02 18:43:00 UTC (rev 38954)
+++ branches/soc-2011-salad/source/blender/blenloader/intern/readfile.c	2011-08-02 18:46:23 UTC (rev 38955)
@@ -5798,7 +5798,7 @@
 	if(fd->movieclipmap) clip->cache= newmclipadr(fd, clip->cache);
 	else clip->cache= NULL;
 
-	tracking->camera.reconstructed= newdataadr(fd, tracking->camera.reconstructed);
+	tracking->reconstruction.cameras= newdataadr(fd, tracking->reconstruction.cameras);
 
 	link_list(fd, &tracking->tracks);
 

Modified: branches/soc-2011-salad/source/blender/blenloader/intern/writefile.c
===================================================================
--- branches/soc-2011-salad/source/blender/blenloader/intern/writefile.c	2011-08-02 18:43:00 UTC (rev 38954)
+++ branches/soc-2011-salad/source/blender/blenloader/intern/writefile.c	2011-08-02 18:46:23 UTC (rev 38955)
@@ -2504,8 +2504,8 @@

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list