[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [57267] trunk/blender/source/blender/ editors/space_view3d/view3d_fly.c: fix [#35650] parented camera behavior

Campbell Barton ideasman42 at gmail.com
Thu Jun 6 21:04:56 CEST 2013


Revision: 57267
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=57267
Author:   campbellbarton
Date:     2013-06-06 19:04:56 +0000 (Thu, 06 Jun 2013)
Log Message:
-----------
fix [#35650] parented camera behavior

fly mode with parenting was broken for both locked/unlocked parent mode.

Modified Paths:
--------------
    trunk/blender/source/blender/editors/space_view3d/view3d_fly.c

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_fly.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_fly.c	2013-06-06 14:06:12 UTC (rev 57266)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_fly.c	2013-06-06 19:04:56 UTC (rev 57267)
@@ -227,6 +227,9 @@
 	/* use for some lag */
 	float dvec_prev[3]; /* old for some lag */
 
+	/* for parenting calculation */
+	float view_mat_prev[4][4];
+
 } FlyInfo;
 
 static void drawFlyPixel(const struct bContext *UNUSED(C), ARegion *UNUSED(ar), void *arg)
@@ -409,6 +412,8 @@
 		/* Done with correcting for the dist */
 	}
 
+	ED_view3d_to_m4(fly->view_mat_prev, fly->rv3d->ofs, fly->rv3d->viewquat, fly->rv3d->dist);
+
 	/* center the mouse, probably the UI mafia are against this but without its quite annoying */
 	WM_cursor_warp(win, fly->ar->winrct.xmin + fly->ar->winx / 2, fly->ar->winrct.ymin + fly->ar->winy / 2);
 
@@ -731,21 +736,15 @@
 		Object *ob_update;
 
 		float view_mat[4][4];
-		float prev_view_mat[4][4];
 		float prev_view_imat[4][4];
 		float diff_mat[4][4];
 		float parent_mat[4][4];
-		float size_mat[4][4];
 
-		ED_view3d_to_m4(prev_view_mat, fly->rv3d->ofs, fly->rv3d->viewquat, fly->rv3d->dist);
-		invert_m4_m4(prev_view_imat, prev_view_mat);
+		invert_m4_m4(prev_view_imat, fly->view_mat_prev);
 		ED_view3d_to_m4(view_mat, rv3d->ofs, rv3d->viewquat, rv3d->dist);
 		mul_m4_m4m4(diff_mat, view_mat, prev_view_imat);
 		mul_m4_m4m4(parent_mat, diff_mat, fly->root_parent->obmat);
 
-		size_to_mat4(size_mat, fly->root_parent->size);
-		mul_m4_m4m4(parent_mat, parent_mat, size_mat);
-
 		BKE_object_apply_mat4(fly->root_parent, parent_mat, true, false);
 
 		// BKE_object_where_is_calc(scene, fly->root_parent);
@@ -756,6 +755,8 @@
 			ob_update = ob_update->parent;
 		}
 
+		copy_m4_m4(fly->view_mat_prev, view_mat);
+
 		id_key = &fly->root_parent->id;
 	}
 	else {
@@ -766,7 +767,7 @@
 		size_to_mat4(size_mat, v3d->camera->size);
 		mul_m4_m4m4(view_mat, view_mat, size_mat);
 
-		BKE_object_apply_mat4(v3d->camera, view_mat, true, false);
+		BKE_object_apply_mat4(v3d->camera, view_mat, true, true);
 
 		id_key = &v3d->camera->id;
 	}




More information about the Bf-blender-cvs mailing list