diff options
author | Mike Erwin <significant.bit@gmail.com> | 2012-01-21 07:37:44 +0400 |
---|---|---|
committer | Mike Erwin <significant.bit@gmail.com> | 2012-01-21 07:37:44 +0400 |
commit | e6d81c2c44660aa6ee613e6c96074b3993d21135 (patch) | |
tree | 811b4c229fb8d127bb3e1fc8afd4927a361a71e6 /source/blender/editors/space_view3d | |
parent | a98a75346c592bc0f44f40d7bb149bd31186b715 (diff) |
tidy up ndof handling code -- whitespace, comments, ndof->rvec[0] to ndof->rx, etc. no functional changes
Diffstat (limited to 'source/blender/editors/space_view3d')
-rw-r--r-- | source/blender/editors/space_view3d/view3d_edit.c | 108 |
1 files changed, 54 insertions, 54 deletions
diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 03dc906a84b..1a06a0d4821 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -961,8 +961,9 @@ void VIEW3D_OT_rotate(wmOperatorType *ot) ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; } -// NDOF utility functions -// (should these functions live in this file?) +/* NDOF utility functions + * (should these functions live in this file?) + */ float ndof_to_axis_angle(struct wmNDOFMotionData* ndof, float axis[3]) { return ndof->dt * normalize_v3_v3(axis, ndof->rvec); @@ -973,7 +974,7 @@ void ndof_to_quat(struct wmNDOFMotionData* ndof, float q[4]) float axis[3]; float angle; - angle= ndof_to_axis_angle(ndof, axis); + angle = ndof_to_axis_angle(ndof, axis); axis_angle_to_quat(q, axis, angle); } @@ -983,69 +984,67 @@ void ndof_to_quat(struct wmNDOFMotionData* ndof, float q[4]) */ static int ndof_orbit_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *event) { - if (event->type != NDOF_MOTION) { + if (event->type != NDOF_MOTION) return OPERATOR_CANCELLED; - } else { - View3D *v3d= CTX_wm_view3d(C); + View3D *v3d = CTX_wm_view3d(C); RegionView3D* rv3d = CTX_wm_region_view3d(C); wmNDOFMotionData* ndof = (wmNDOFMotionData*) event->customdata; ED_view3d_camera_lock_init(v3d, rv3d); - rv3d->rot_angle = 0.f; // off by default, until changed later this function + rv3d->rot_angle = 0.f; /* off by default, until changed later this function */ if (ndof->progress != P_FINISHING) { const float dt = ndof->dt; - - // tune these until everything feels right + + /* tune these until everything feels right */ const float rot_sensitivity = 1.f; const float zoom_sensitivity = 1.f; const float pan_sensitivity = 1.f; - - // rather have bool, but... - int has_rotation = rv3d->viewlock != RV3D_LOCKED && !is_zero_v3(ndof->rvec); - + + const int has_rotation = rv3d->viewlock != RV3D_LOCKED && !is_zero_v3(ndof->rvec); + float view_inv[4]; invert_qt_qt(view_inv, rv3d->viewquat); - - //#define DEBUG_NDOF_MOTION + + /* #define DEBUG_NDOF_MOTION */ #ifdef DEBUG_NDOF_MOTION printf("ndof: T=(%.2f,%.2f,%.2f) R=(%.2f,%.2f,%.2f) dt=%.3f delivered to 3D view\n", ndof->tx, ndof->ty, ndof->tz, ndof->rx, ndof->ry, ndof->rz, ndof->dt); #endif - - if (ndof->tvec[2]) { - // Zoom! - // velocity should be proportional to the linear velocity attained by rotational motion of same strength - // [got that?] - // proportional to arclength = radius * angle - - float zoom_distance = zoom_sensitivity * rv3d->dist * dt * ndof->tvec[2]; + + if (ndof->tz) { + /* Zoom! + * velocity should be proportional to the linear velocity attained by rotational motion of same strength + * [got that?] + * proportional to arclength = radius * angle + */ + float zoom_distance = zoom_sensitivity * rv3d->dist * dt * ndof->tz; if (U.ndof_flag & NDOF_ZOOM_INVERT) zoom_distance = -zoom_distance; rv3d->dist += zoom_distance; } - + if (rv3d->viewlock == RV3D_LOCKED) { /* rotation not allowed -- explore panning options instead */ - float pan_vec[3] = {ndof->tvec[0], ndof->tvec[1], 0.0f}; + float pan_vec[3] = {ndof->tx, ndof->ty, 0.0f}; mul_v3_fl(pan_vec, pan_sensitivity * rv3d->dist * dt); - + /* transform motion from view to world coordinates */ invert_qt_qt(view_inv, rv3d->viewquat); mul_qt_v3(view_inv, pan_vec); - + /* move center of view opposite of hand motion (this is camera mode, not object mode) */ sub_v3_v3(rv3d->ofs, pan_vec); } - + if (has_rotation) { - + rv3d->view = RV3D_VIEW_USER; - + if (U.flag & USER_TRACKBALL) { float rot[4]; float axis[3]; @@ -1060,44 +1059,46 @@ static int ndof_orbit_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *event if (U.ndof_flag & NDOF_ROTATE_INVERT_AXIS) axis[1] = -axis[1]; - // transform rotation axis from view to world coordinates + /* transform rotation axis from view to world coordinates */ mul_qt_v3(view_inv, axis); - - // update the onscreen doo-dad + + /* update the onscreen doo-dad */ rv3d->rot_angle = angle; copy_v3_v3(rv3d->rot_axis, axis); - + axis_angle_to_quat(rot, axis, angle); - // apply rotation + /* apply rotation */ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, rot); + } else { + /* turntable view code by John Aughey, adapted for 3D mouse by [mce] */ float angle, rot[4]; float xvec[3] = {1,0,0}; - + /* Determine the direction of the x vector (for rotating up and down) */ mul_qt_v3(view_inv, xvec); - + /* Perform the up/down rotation */ - angle = rot_sensitivity * dt * ndof->rvec[0]; + angle = rot_sensitivity * dt * ndof->rx; if (U.ndof_flag & NDOF_TILT_INVERT_AXIS) angle = -angle; rot[0] = cos(angle); mul_v3_v3fl(rot+1, xvec, sin(angle)); mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, rot); - + /* Perform the orbital rotation */ - angle = rot_sensitivity * dt * ndof->rvec[1]; + angle = rot_sensitivity * dt * ndof->ry; if (U.ndof_flag & NDOF_ROTATE_INVERT_AXIS) angle = -angle; - - // update the onscreen doo-dad + + /* update the onscreen doo-dad */ rv3d->rot_angle = angle; rv3d->rot_axis[0] = 0; rv3d->rot_axis[1] = 0; rv3d->rot_axis[2] = 1; - + rot[0] = cos(angle); rot[1] = rot[2] = 0.0; rot[3] = sin(angle); @@ -1134,9 +1135,8 @@ void VIEW3D_OT_ndof_orbit(struct wmOperatorType *ot) */ static int ndof_pan_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *event) { - if (event->type != NDOF_MOTION) { + if (event->type != NDOF_MOTION) return OPERATOR_CANCELLED; - } else { View3D *v3d= CTX_wm_view3d(C); RegionView3D* rv3d = CTX_wm_region_view3d(C); @@ -1144,13 +1144,13 @@ static int ndof_pan_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *event) ED_view3d_camera_lock_init(v3d, rv3d); - rv3d->rot_angle = 0.f; // we're panning here! so erase any leftover rotation from other operators + rv3d->rot_angle = 0.f; /* we're panning here! so erase any leftover rotation from other operators */ if (ndof->progress != P_FINISHING) { const float dt = ndof->dt; float view_inv[4]; -#if 0 // ------------------------------------------- zoom with Z - // tune these until everything feels right +#if 0 /* ------------------------------------------- zoom with Z */ + /* tune these until everything feels right */ const float zoom_sensitivity = 1.f; const float pan_sensitivity = 1.f; @@ -1158,18 +1158,18 @@ static int ndof_pan_invoke(bContext *C, wmOperator *UNUSED(op), wmEvent *event) ndof->tx, ndof->ty, 0 }; - // "zoom in" or "translate"? depends on zoom mode in user settings? + /* "zoom in" or "translate"? depends on zoom mode in user settings? */ if (ndof->tz) { float zoom_distance = zoom_sensitivity * rv3d->dist * dt * ndof->tz; rv3d->dist += zoom_distance; } - + mul_v3_fl(pan_vec, pan_sensitivity * rv3d->dist * dt); -#else // ------------------------------------------------------- dolly with Z - float speed = 10.f; // blender units per second - // ^^ this is ok for default cube scene, but should scale with.. something +#else /* ------------------------------------------------------- dolly with Z */ + float speed = 10.f; /* blender units per second */ + /* ^^ this is ok for default cube scene, but should scale with.. something */ - // tune these until everything feels right + /* tune these until everything feels right */ const float forward_sensitivity = 1.f; const float vertical_sensitivity = 0.4f; const float lateral_sensitivity = 0.6f; |