[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [48113] trunk/blender/source/blender: Do not check result of BKE_tracking_marker_get -- it shall always

Sergey Sharybin sergey.vfx at gmail.com
Wed Jun 20 12:55:02 CEST 2012


Revision: 48113
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=48113
Author:   nazgul
Date:     2012-06-20 10:54:56 +0000 (Wed, 20 Jun 2012)
Log Message:
-----------
Do not check result of BKE_tracking_marker_get -- it shall always
return valid marker. If not -- let blender crash, because that means
something went really bad and silencing this isn't good idea.

Also made mask parenting to tracking data aware of clip's start frame.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_movieclip.h
    trunk/blender/source/blender/blenkernel/intern/mask.c
    trunk/blender/source/blender/blenkernel/intern/movieclip.c
    trunk/blender/source/blender/editors/mask/mask_relationships.c
    trunk/blender/source/blender/editors/space_clip/clip_draw.c

Modified: trunk/blender/source/blender/blenkernel/BKE_movieclip.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_movieclip.h	2012-06-20 10:42:41 UTC (rev 48112)
+++ trunk/blender/source/blender/blenkernel/BKE_movieclip.h	2012-06-20 10:54:56 UTC (rev 48113)
@@ -63,8 +63,8 @@
 void BKE_movieclip_build_proxy_frame(struct MovieClip *clip, int clip_flag, struct MovieDistortion *distortion,
                                      int cfra, int *build_sizes, int build_count, int undistorted);
 
-int BKE_movieclip_remap_scene_to_clip_frame(struct MovieClip *clip, int framenr);
-int BKE_movieclip_remap_clip_to_scene_frame(struct MovieClip *clip, int framenr);
+float BKE_movieclip_remap_scene_to_clip_frame(struct MovieClip *clip, float framenr);
+float BKE_movieclip_remap_clip_to_scene_frame(struct MovieClip *clip, float framenr);
 
 /* cacheing flags */
 #define MOVIECLIP_CACHE_SKIP        (1 << 0)

Modified: trunk/blender/source/blender/blenkernel/intern/mask.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/mask.c	2012-06-20 10:42:41 UTC (rev 48112)
+++ trunk/blender/source/blender/blenkernel/intern/mask.c	2012-06-20 10:54:56 UTC (rev 48113)
@@ -1160,12 +1160,13 @@
 
 			if (ob) {
 				MovieTrackingTrack *track = BKE_tracking_track_get_named(tracking, ob, parent->sub_parent);
+				float clip_framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, ctime);
 
 				MovieClipUser user = {0};
 				user.framenr = ctime;
 
 				if (track) {
-					MovieTrackingMarker *marker = BKE_tracking_marker_get(track, ctime);
+					MovieTrackingMarker *marker = BKE_tracking_marker_get(track, clip_framenr);
 					float marker_pos_ofs[2];
 					add_v2_v2v2(marker_pos_ofs, marker->pos, track->offset);
 					BKE_mask_coord_from_movieclip(clip, &user, r_co, marker_pos_ofs);

Modified: trunk/blender/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/movieclip.c	2012-06-20 10:42:41 UTC (rev 48112)
+++ trunk/blender/source/blender/blenkernel/intern/movieclip.c	2012-06-20 10:54:56 UTC (rev 48113)
@@ -1270,12 +1270,12 @@
 	clip->id.us = 0;
 }
 
-int BKE_movieclip_remap_scene_to_clip_frame(MovieClip *clip, int framenr)
+float BKE_movieclip_remap_scene_to_clip_frame(MovieClip *clip, float framenr)
 {
-	return framenr - clip->start_frame + 1;
+	return framenr - (float) clip->start_frame + 1.0f;
 }
 
-int BKE_movieclip_remap_clip_to_scene_frame(MovieClip *clip, int framenr)
+float BKE_movieclip_remap_clip_to_scene_frame(MovieClip *clip, float framenr)
 {
-	return framenr + clip->start_frame - 1;
+	return framenr + (float) clip->start_frame - 1.0f;
 }

Modified: trunk/blender/source/blender/editors/mask/mask_relationships.c
===================================================================
--- trunk/blender/source/blender/editors/mask/mask_relationships.c	2012-06-20 10:42:41 UTC (rev 48112)
+++ trunk/blender/source/blender/editors/mask/mask_relationships.c	2012-06-20 10:54:56 UTC (rev 48113)
@@ -44,6 +44,7 @@
 #include "WM_types.h"
 
 #include "ED_screen.h"
+#include "ED_clip.h"  /* frame remapping functions */
 #include "ED_mask.h"  /* own include */
 
 #include "mask_intern.h"  /* own include */
@@ -104,21 +105,25 @@
 	MovieClip *clip;
 	MovieTrackingTrack *track;
 	MovieTrackingMarker *marker;
-	MovieTrackingObject *tracking;
+	MovieTrackingObject *tracking_object;
 	/* done */
 
+	int framenr;
+
 	float marker_pos_ofs[2];
 	float parmask_pos[2];
 
 	if ((NULL == (sc = CTX_wm_space_clip(C))) ||
 	    (NULL == (clip = sc->clip)) ||
 	    (NULL == (track = clip->tracking.act_track)) ||
-	    (NULL == (marker = BKE_tracking_marker_get(track, sc->user.framenr))) ||
-	    (NULL == (tracking = BKE_tracking_object_get_active(&clip->tracking))))
+	    (NULL == (tracking_object = BKE_tracking_object_get_active(&clip->tracking))))
 	{
 		return OPERATOR_CANCELLED;
 	}
 
+	framenr = ED_space_clip_get_clip_frame_number(sc);
+	marker = BKE_tracking_marker_get(track, framenr);
+
 	add_v2_v2v2(marker_pos_ofs, marker->pos, track->offset);
 
 	BKE_mask_coord_from_movieclip(clip, &sc->user, parmask_pos, marker_pos_ofs);
@@ -138,7 +143,7 @@
 				if (MASKPOINT_ISSEL_ANY(point)) {
 					point->parent.id_type = ID_MC;
 					point->parent.id = &clip->id;
-					strcpy(point->parent.parent, tracking->name);
+					strcpy(point->parent.parent, tracking_object->name);
 					strcpy(point->parent.sub_parent, track->name);
 
 					copy_v2_v2(point->parent.parent_orig, parmask_pos);

Modified: trunk/blender/source/blender/editors/space_clip/clip_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_draw.c	2012-06-20 10:42:41 UTC (rev 48112)
+++ trunk/blender/source/blender/editors/space_clip/clip_draw.c	2012-06-20 10:54:56 UTC (rev 48113)
@@ -1497,11 +1497,9 @@
 
 				if (track) {
 					int framenr = ED_space_clip_get_clip_frame_number(sc);
-					/* don't get the exact marker since it may not exist for the frame */
 					MovieTrackingMarker *marker = BKE_tracking_marker_get(track, framenr);
-					if (marker) {
-						glTranslatef(marker->pos[0], marker->pos[1], 0.0f);
-					}
+
+					glTranslatef(marker->pos[0], marker->pos[1], 0.0f);
 				}
 			}
 




More information about the Bf-blender-cvs mailing list