[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [47534] trunk/blender: Changed semantic of recently added start_frame

Sergey Sharybin sergey.vfx at gmail.com
Wed Jun 6 20:58:31 CEST 2012


Revision: 47534
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=47534
Author:   nazgul
Date:     2012-06-06 18:58:30 +0000 (Wed, 06 Jun 2012)
Log Message:
-----------
Changed semantic of recently added start_frame

Now it's indicates at which scene frame number movie clip starts playing back.
This this setting is still belongs to clip datavlock and used by all users of
clip such as movie compositor nodes, constraints and so.

After long discussion and thoughts about this it was decided that this would
match image's current behavior (which initially seen a bit crappy), but that's
actually allows:

- Keep semantics of start frame in image and clip datablocks in sync
- Allows to support features like support of loading image sequences
  with crappy numbers in suffix which doesn't fit long int.
- Allows to eliminate extra boolean checkbox to control such kind of offset.

Hopefully from pipeline POV it wouldn't hurt because idea of having this things
implemented in original way was  working only if sequence before processing
started naming form 001.

Modified Paths:
--------------
    trunk/blender/release/scripts/startup/bl_ui/space_clip.py
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenkernel/BKE_movieclip.h
    trunk/blender/source/blender/blenkernel/intern/constraint.c
    trunk/blender/source/blender/blenkernel/intern/movieclip.c
    trunk/blender/source/blender/blenkernel/intern/tracking.c
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/include/ED_clip.h
    trunk/blender/source/blender/editors/space_clip/clip_draw.c
    trunk/blender/source/blender/editors/space_clip/clip_editor.c
    trunk/blender/source/blender/editors/space_clip/tracking_ops.c
    trunk/blender/source/blender/editors/transform/transform_conversions.c
    trunk/blender/source/blender/makesdna/DNA_movieclip_types.h
    trunk/blender/source/blender/makesrna/intern/rna_movieclip.c

Modified: trunk/blender/release/scripts/startup/bl_ui/space_clip.py
===================================================================
--- trunk/blender/release/scripts/startup/bl_ui/space_clip.py	2012-06-06 18:55:44 UTC (rev 47533)
+++ trunk/blender/release/scripts/startup/bl_ui/space_clip.py	2012-06-06 18:58:30 UTC (rev 47534)
@@ -960,9 +960,7 @@
 
         col = layout.column()
         col.template_movieclip(sc, "clip", compact=True)
-        col.prop(clip, "use_custom_start_frame")
-        if clip.use_custom_start_frame:
-            col.prop(clip, "start_frame")
+        col.prop(clip, "start_frame")
 
 
 class CLIP_PT_tools_clip(CLIP_PT_clip_view_panel, Panel):

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2012-06-06 18:55:44 UTC (rev 47533)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2012-06-06 18:58:30 UTC (rev 47534)
@@ -42,7 +42,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         263
-#define BLENDER_SUBVERSION      9
+#define BLENDER_SUBVERSION      10
 
 #define BLENDER_MINVERSION      250
 #define BLENDER_MINSUBVERSION   0

Modified: trunk/blender/source/blender/blenkernel/BKE_movieclip.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_movieclip.h	2012-06-06 18:55:44 UTC (rev 47533)
+++ trunk/blender/source/blender/blenkernel/BKE_movieclip.h	2012-06-06 18:58:30 UTC (rev 47534)
@@ -63,6 +63,9 @@
 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);
+
 /* cacheing flags */
 #define MOVIECLIP_CACHE_SKIP        (1 << 0)
 

Modified: trunk/blender/source/blender/blenkernel/intern/constraint.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/constraint.c	2012-06-06 18:55:44 UTC (rev 47533)
+++ trunk/blender/source/blender/blenkernel/intern/constraint.c	2012-06-06 18:58:30 UTC (rev 47534)
@@ -3897,6 +3897,7 @@
 	MovieTrackingTrack *track;
 	MovieTrackingObject *tracking_object;
 	Object *camob = data->camera ? data->camera : scene->camera;
+	int framenr;
 
 	if (data->flag & FOLLOWTRACK_ACTIVECLIP)
 		clip = scene->clip;
@@ -3919,6 +3920,8 @@
 	if (!track)
 		return;
 
+	framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, scene->r.cfra);
+
 	if (data->flag & FOLLOWTRACK_USE_3D_POSITION) {
 		if (track->flag & TRACK_HAS_BUNDLE) {
 			float obmat[4][4], mat[4][4];
@@ -3930,7 +3933,7 @@
 
 				copy_m4_m4(mat, camob->obmat);
 
-				BKE_tracking_get_interpolated_camera(tracking, tracking_object, scene->r.cfra, imat);
+				BKE_tracking_get_interpolated_camera(tracking, tracking_object, framenr, imat);
 				invert_m4(imat);
 
 				mul_serie_m4(cob->matrix, obmat, mat, imat, NULL, NULL, NULL, NULL, NULL);
@@ -3969,7 +3972,7 @@
 			CameraParams params;
 			float pos[2], rmat[4][4];
 
-			marker = BKE_tracking_get_marker(track, scene->r.cfra);
+			marker = BKE_tracking_get_marker(track, framenr);
 
 			add_v2_v2v2(pos, marker->pos, track->offset);
 
@@ -4092,8 +4095,9 @@
 		float mat[4][4], obmat[4][4];
 		MovieTracking *tracking = &clip->tracking;
 		MovieTrackingObject *object = BKE_tracking_get_camera_object(tracking);
+		int framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, scene->r.cfra);
 
-		BKE_tracking_get_interpolated_camera(tracking, object, scene->r.cfra, mat);
+		BKE_tracking_get_interpolated_camera(tracking, object, framenr, mat);
 
 		copy_m4_m4(obmat, cob->matrix);
 
@@ -4156,10 +4160,11 @@
 
 		if (object) {
 			float mat[4][4], obmat[4][4], imat[4][4], cammat[4][4], camimat[4][4], parmat[4][4];
+			int framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, scene->r.cfra);
 
 			BKE_object_where_is_calc_mat4(scene, camob, cammat);
 
-			BKE_tracking_get_interpolated_camera(tracking, object, scene->r.cfra, mat);
+			BKE_tracking_get_interpolated_camera(tracking, object, framenr, mat);
 
 			invert_m4_m4(camimat, cammat);
 			mult_m4_m4m4(parmat, cammat, data->invmat);

Modified: trunk/blender/source/blender/blenkernel/intern/movieclip.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/movieclip.c	2012-06-06 18:55:44 UTC (rev 47533)
+++ trunk/blender/source/blender/blenkernel/intern/movieclip.c	2012-06-06 18:58:30 UTC (rev 47534)
@@ -153,18 +153,13 @@
 	BLI_strncpy(name, clip->name, sizeof(clip->name));
 	BLI_stringdec(name, head, tail, &numlen);
 
-	if (clip->flag & MCLIP_CUSTOM_START_FRAME) {
-		offset = clip->start_frame;
-	}
-	else {
-		/* movieclips always points to first image from sequence,
-		 * autoguess offset for now. could be something smarter in the future
-		 */
-		offset = sequence_guess_offset(clip->name, strlen(head), numlen);
-	}
+	/* movieclips always points to first image from sequence,
+	 * autoguess offset for now. could be something smarter in the future
+	 */
+	offset = sequence_guess_offset(clip->name, strlen(head), numlen);
 
 	if (numlen)
-		BLI_stringenc(name, head, tail, numlen, offset + framenr - 1);
+		BLI_stringenc(name, head, tail, numlen, offset + framenr - clip->start_frame);
 	else
 		BLI_strncpy(name, clip->name, sizeof(clip->name));
 
@@ -176,6 +171,7 @@
 {
 	int size = rendersize_to_number(proxy_render_size);
 	char dir[FILE_MAX], clipdir[FILE_MAX], clipfile[FILE_MAX];
+	int proxynr = framenr - clip->start_frame + 1;
 
 	BLI_split_dirfile(clip->name, clipdir, clipfile, FILE_MAX, FILE_MAX);
 
@@ -187,9 +183,9 @@
 	}
 
 	if (undistorted)
-		BLI_snprintf(name, FILE_MAX, "%s/%s/proxy_%d_undistorted/%08d", dir, clipfile, size, framenr);
+		BLI_snprintf(name, FILE_MAX, "%s/%s/proxy_%d_undistorted/%08d", dir, clipfile, size, proxynr);
 	else
-		BLI_snprintf(name, FILE_MAX, "%s/%s/proxy_%d/%08d", dir, clipfile, size, framenr);
+		BLI_snprintf(name, FILE_MAX, "%s/%s/proxy_%d/%08d", dir, clipfile, size, proxynr);
 
 	BLI_path_abs(name, G.main->name);
 	BLI_path_frame(name, 1, 0);
@@ -254,12 +250,8 @@
 		int fra;
 
 		dur = IMB_anim_get_duration(clip->anim, tc);
-		fra = framenr - 1;
+		fra = framenr - clip->start_frame;
 
-		if (clip->flag & MCLIP_CUSTOM_START_FRAME) {
-			fra += clip->start_frame - 1;
-		}
-
 		if (fra < 0)
 			fra = 0;
 
@@ -1038,7 +1030,8 @@
 
 		if (act_track) {
 			MovieTrackingTrack *track = act_track;
-			MovieTrackingMarker *marker = BKE_tracking_get_marker(track, user->framenr);
+			int framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, user->framenr);
+			MovieTrackingMarker *marker = BKE_tracking_get_marker(track, framenr);
 
 			if (marker->flag & MARKER_DISABLED) {
 				scopes->track_disabled = TRUE;
@@ -1230,3 +1223,13 @@
 
 	clip->id.us = 0;
 }
+
+int BKE_movieclip_remap_scene_to_clip_frame(MovieClip *clip, int framenr)
+{
+	return framenr - clip->start_frame + 1;
+}
+
+int BKE_movieclip_remap_clip_to_scene_frame(MovieClip *clip, int framenr)
+{
+	return framenr + clip->start_frame - 1;
+}

Modified: trunk/blender/source/blender/blenkernel/intern/tracking.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/tracking.c	2012-06-06 18:55:44 UTC (rev 47533)
+++ trunk/blender/source/blender/blenkernel/intern/tracking.c	2012-06-06 18:58:30 UTC (rev 47534)
@@ -972,7 +972,8 @@
 	track = tracksbase->first;
 	while (track) {
 		if (TRACK_SELECTED(track) && (track->flag & (TRACK_LOCKED | TRACK_HIDDEN)) == 0) {
-			MovieTrackingMarker *marker = BKE_tracking_get_marker(track, user->framenr);
+			int framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, user->framenr);
+			MovieTrackingMarker *marker = BKE_tracking_get_marker(track, framenr);
 
 			if ((marker->flag & MARKER_DISABLED) == 0)
 				num_tracks++;
@@ -993,7 +994,8 @@
 		track = tracksbase->first;
 		while (track) {
 			if (TRACK_SELECTED(track) && (track->flag & (TRACK_HIDDEN | TRACK_LOCKED)) == 0) {
-				MovieTrackingMarker *marker = BKE_tracking_get_marker(track, user->framenr);
+				int framenr = BKE_movieclip_remap_scene_to_clip_frame(clip, user->framenr);
+				MovieTrackingMarker *marker = BKE_tracking_get_marker(track, framenr);
 
 				if ((marker->flag & MARKER_DISABLED) == 0) {
 					TrackContext track_context;
@@ -1311,7 +1313,7 @@
 	ImBuf *ibuf;
 	MovieClipUser user = context->user;
 
-	user.framenr = framenr;
+	user.framenr = BKE_movieclip_remap_clip_to_scene_frame(context->clip, framenr);
 
 	ibuf = BKE_movieclip_get_ibuf_flag(context->clip, &user, context->clip_flag, MOVIECLIP_CACHE_SKIP);
 
@@ -1399,7 +1401,7 @@
 int BKE_tracking_next(MovieTrackingContext *context)
 {
 	ImBuf *ibuf_new;
-	int curfra = context->user.framenr;
+	int curfra =  BKE_movieclip_remap_scene_to_clip_frame(context->clip, context->user.framenr);
 	int a, ok = FALSE, map_size;
 
 	map_size = tracks_map_size(context->tracks_map);
@@ -1529,7 +1531,7 @@
 				marker_new.framenr = nextfra;
 				marker_new.flag |= MARKER_DISABLED;
 
-				#pragma omp critical
+				//#pragma omp critical
 				{
 					BKE_tracking_insert_marker(track, &marker_new);
 				}

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2012-06-06 18:55:44 UTC (rev 47533)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2012-06-06 18:58:30 UTC (rev 47534)
@@ -7636,42 +7636,53 @@
 			ntreetype->foreach_nodetree(main, NULL, do_version_ntree_image_user_264);
 	}
 
-	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
-	/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
-	{
-		Scene *scene;
-		// composite redesign
-		for (scene=main->scene.first; scene; scene=scene->id.next) {
-			if (scene->nodetree) {
-				if (scene->nodetree->chunksize == 0) {
-					scene->nodetree->chunksize = 256;
+	if (main->versionfile < 263 || (main->versionfile == 263 && main->subversionfile < 10)) {
+		{
+			Scene *scene;
+			// composite redesign

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list