[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