[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38434] branches/soc-2011-tomato/source/ blender: Camera tracking integration
Sergey Sharybin
g.ulairi at gmail.com
Sat Jul 16 12:30:52 CEST 2011
Revision: 38434
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38434
Author: nazgul
Date: 2011-07-16 10:30:51 +0000 (Sat, 16 Jul 2011)
Log Message:
-----------
Camera tracking integration
===========================
- Silent compilator's warning about possible uninitialized
variable usage in set floor operator.
- Check tracks cound on both of keyframes before reconstruction.
- Refresh 3d viewport when deleting track with bundle.
Modified Paths:
--------------
branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c
branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c
Modified: branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c
===================================================================
--- branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c 2011-07-16 10:01:00 UTC (rev 38433)
+++ branches/soc-2011-tomato/source/blender/blenkernel/intern/tracking.c 2011-07-16 10:30:51 UTC (rev 38434)
@@ -307,7 +307,7 @@
int BKE_tracking_has_marker(MovieTrackingTrack *track, int framenr)
{
- return BKE_tracking_get_marker(track, framenr) != 0;
+ return BKE_tracking_exact_marker(track, framenr) != 0;
}
void BKE_tracking_free_track(MovieTrackingTrack *track)
Modified: branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c
===================================================================
--- branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c 2011-07-16 10:01:00 UTC (rev 38433)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/clip_buttons.c 2011-07-16 10:30:51 UTC (rev 38434)
@@ -260,7 +260,7 @@
if(type!=MCLIP_SEL_TRACK)
return 0;
- return BKE_tracking_has_marker(track, sc->user.framenr);
+ return 1;
}
static void clip_panel_marker(const bContext *C, Panel *pa)
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-07-16 10:01:00 UTC (rev 38433)
+++ branches/soc-2011-tomato/source/blender/editors/space_clip/tracking_ops.c 2011-07-16 10:30:51 UTC (rev 38434)
@@ -214,11 +214,15 @@
SpaceClip *sc= CTX_wm_space_clip(C);
MovieClip *clip= ED_space_clip(sc);
MovieTrackingTrack *track= clip->tracking.tracks.first, *next;
+ int has_bundle= 0;
while(track) {
next= track->next;
if(TRACK_VIEW_SELECTED(track)) {
+ if(track->flag&TRACK_HAS_BUNDLE)
+ has_bundle= 1;
+
BKE_tracking_free_track(track);
BLI_freelinkN(&clip->tracking.tracks, track);
}
@@ -229,6 +233,9 @@
BKE_movieclip_set_selection(clip, MCLIP_SEL_NONE, NULL);
WM_event_add_notifier(C, NC_MOVIECLIP|NA_EDITED, clip);
+ if(has_bundle)
+ WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, NULL);
+
return OPERATOR_FINISHED;
}
@@ -646,11 +653,9 @@
action= SEL_SELECT;
track= clip->tracking.tracks.first;
while(track) {
- if(BKE_tracking_has_marker(track, framenr)) {
- if(TRACK_VIEW_SELECTED(track)) {
- action= SEL_DESELECT;
- break;
- }
+ if(TRACK_VIEW_SELECTED(track)) {
+ action= SEL_DESELECT;
+ break;
}
track= track->next;
@@ -981,14 +986,33 @@
/********************** solve camera operator *********************/
+static int check_solve_tarck_count(MovieTracking *tracking)
+{
+ int tot= 0;
+ int frame1= tracking->settings.keyframe1, frame2= tracking->settings.keyframe2;
+ MovieTrackingTrack *track;
+
+ track= tracking->tracks.first;
+ while(track) {
+ if(BKE_tracking_has_marker(track, frame1))
+ if(BKE_tracking_has_marker(track, frame2))
+ tot++;
+
+ track= track->next;
+ }
+
+ return tot>=10;
+}
+
static int solve_camera_exec(bContext *C, wmOperator *op)
{
SpaceClip *sc= CTX_wm_space_clip(C);
MovieClip *clip= ED_space_clip(sc);
Scene *scene= CTX_data_scene(C);
- if(BLI_countlist(&clip->tracking.tracks)<10) {
- BKE_report(op->reports, RPT_ERROR, "At least 10 tracks are needed for reconstruction");
+ if(!check_solve_tarck_count(&clip->tracking)) {
+ BKE_report(op->reports, RPT_ERROR, "At least 10 tracks on both of keyframes are needed for reconstruction");
+ return OPERATOR_CANCELLED;
}
BKE_tracking_solve_reconstruction(clip);
@@ -1318,7 +1342,7 @@
Object *camera= scene->camera;
Object *parent= camera;
int tot= 0, sel_type;
- float vec[3][3], mat[4][4], obmat[4][4], newmat[4][4], orig[3];
+ float vec[3][3], mat[4][4], obmat[4][4], newmat[4][4], orig[3]= {0.f, 0.f, 0.f};
float rot[4][4]={{0.f, 0.f, -1.f, 0.f},
{0.f, 1.f, 0.f, 0.f},
{1.f, 0.f, 0.f, 0.f},
More information about the Bf-blender-cvs
mailing list