[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29421] trunk/blender/source/blender/ editors/space_view3d/view3d_view.c: [#22307] Camera Fly Mode Rolls Camera on local Z-axis

Campbell Barton ideasman42 at gmail.com
Sat Jun 12 01:25:38 CEST 2010


Revision: 29421
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29421
Author:   campbellbarton
Date:     2010-06-12 01:25:38 +0200 (Sat, 12 Jun 2010)

Log Message:
-----------
[#22307] Camera Fly Mode Rolls Camera on local Z-axis
z-roll was enabled by default, also made rotate less sensitive.

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

Modified: trunk/blender/source/blender/editors/space_view3d/view3d_view.c
===================================================================
--- trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2010-06-11 23:05:43 UTC (rev 29420)
+++ trunk/blender/source/blender/editors/space_view3d/view3d_view.c	2010-06-11 23:25:38 UTC (rev 29421)
@@ -2005,7 +2005,7 @@
 	fly->axis= 2;
 	fly->pan_view= FALSE;
 	fly->xlock= FALSE;
-	fly->zlock= TRUE;
+	fly->zlock= FALSE;
 	fly->xlock_momentum=0.0f;
 	fly->zlock_momentum=0.0f;
 	fly->grid= 1.0f;
@@ -2277,6 +2277,11 @@
 
 static int flyApply(bContext *C, FlyInfo *fly)
 {
+
+#define FLY_ROTATE_FAC 2.5f /* more is faster */
+#define FLY_ZUP_CORRECT_FAC 0.1f /* ammount to correct per step */
+#define FLY_ZUP_CORRECT_ACCEL 0.05f /* increase upright momentum each step */
+
 	/*
 	fly mode - Shift+F
 	a fly loop where the user can move move the view as if they are flying
@@ -2392,7 +2397,7 @@
 					upvec[1]=0;
 					upvec[2]=0;
 					mul_m3_v3(mat, upvec);
-					axis_angle_to_quat( tmp_quat, upvec, (float)moffset[1]*-time_redraw*20); /* Rotate about the relative up vec */
+					axis_angle_to_quat( tmp_quat, upvec, (float)moffset[1] * time_redraw * -FLY_ROTATE_FAC); /* Rotate about the relative up vec */
 					mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat);
 
 					if (fly->xlock) fly->xlock = 2; /*check for rotation*/
@@ -2424,7 +2429,7 @@
 						mul_m3_v3(mat, upvec);
 					}
 
-					axis_angle_to_quat( tmp_quat, upvec, (float)moffset[0]*time_redraw*20); /* Rotate about the relative up vec */
+					axis_angle_to_quat( tmp_quat, upvec, (float)moffset[0] * time_redraw * FLY_ROTATE_FAC); /* Rotate about the relative up vec */
 					mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat);
 
 					if (fly->xlock) fly->xlock = 2;/*check for rotation*/
@@ -2445,10 +2450,10 @@
 						upvec[2]=1;
 
 						mul_m3_v3(mat, upvec);
-						axis_angle_to_quat( tmp_quat, upvec, roll*time_redraw_clamped*fly->zlock_momentum*0.1); /* Rotate about the relative up vec */
+						axis_angle_to_quat( tmp_quat, upvec, roll*time_redraw_clamped*fly->zlock_momentum * FLY_ZUP_CORRECT_FAC); /* Rotate about the relative up vec */
 						mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat);
 
-						fly->zlock_momentum += 0.05f;
+						fly->zlock_momentum += FLY_ZUP_CORRECT_ACCEL;
 					} else {
 						fly->zlock=1; /* dont check until the view rotates again */
 						fly->zlock_momentum= 0.0f;





More information about the Bf-blender-cvs mailing list