[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [60822] trunk/blender/source/blender/ blenkernel/intern/scene.c: Fix #37097: Setting scene frame does not update active camera

Sergey Sharybin sergey.vfx at gmail.com
Thu Oct 17 16:10:03 CEST 2013


Revision: 60822
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=60822
Author:   nazgul
Date:     2013-10-17 14:10:03 +0000 (Thu, 17 Oct 2013)
Log Message:
-----------
Fix #37097: Setting scene frame does not update active camera

The issue was caused by uncertainty of current camera when
there're no markers to the left of current frame.

Now in this case camera from the top-left marker will be used.

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/intern/scene.c

Modified: trunk/blender/source/blender/blenkernel/intern/scene.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/scene.c	2013-10-17 14:04:10 UTC (rev 60821)
+++ trunk/blender/source/blender/blenkernel/intern/scene.c	2013-10-17 14:10:03 UTC (rev 60822)
@@ -874,18 +874,35 @@
 	TimeMarker *m;
 	int cfra = scene->r.cfra;
 	int frame = -(MAXFRAME + 1);
+	int min_frame = MAXFRAME + 1;
 	Object *camera = NULL;
+	Object *first_camera;
 
 	for (m = scene->markers.first; m; m = m->next) {
-		if (m->camera && (m->camera->restrictflag & OB_RESTRICT_RENDER) == 0 && (m->frame <= cfra) && (m->frame > frame)) {
-			camera = m->camera;
-			frame = m->frame;
+		if (m->camera && (m->camera->restrictflag & OB_RESTRICT_RENDER) == 0) {
+			if ((m->frame <= cfra) && (m->frame > frame)) {
+				camera = m->camera;
+				frame = m->frame;
 
-			if (frame == cfra)
-				break;
+				if (frame == cfra)
+					break;
+			}
 
+			if (m->frame < min_frame) {
+				first_camera = m->camera;
+				min_frame = m->frame;
+			}
 		}
 	}
+
+	if (camera == NULL) {
+		/* If there's no marker to the left of current frame,
+		 * use camera from left-most marker to solve all sort
+		 * of Schrodinger uncertainties.
+		 */
+		return first_camera;
+	}
+
 	return camera;
 }
 #endif




More information about the Bf-blender-cvs mailing list