Commit: f8cfffec4f4c1f87fc9a958284dddeb6bd45229d Author: Julian Eisel Date: Tue Oct 11 22:44:14 2016 +0200 Branches: HMD_viewport https://developer.blender.org/rBf8cfffec4f4c1f87fc9a958284dddeb6bd45229d
Use center as pivot for rotating views, avoid passing around arg =================================================================== M source/blender/editors/space_view3d/view3d_draw.c =================================================================== diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index 0ba48cc..c9c5fde 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -3775,15 +3775,17 @@ static void view3d_stereo3d_setup(Scene *scene, View3D *v3d, ARegion *ar, const #else if (is_hmd_view) { Camera *data = v3d->camera->data; - short view_format = scene->r.views_format; - short convergence_mode = data->stereo.convergence_mode; - float ipd_override = (U.hmd_device != -1 && (scene->hmd_settings.flag & HMDVIEW_USE_DEVICE_IPD)) ? - WM_device_HMD_IPD_get() : scene->hmd_settings.interocular_distance; + const short view_format = scene->r.views_format; + const short convergence_mode = data->stereo.convergence_mode; + const short pivot = data->stereo.pivot; + const float ipd_override = (U.hmd_device != -1 && (scene->hmd_settings.flag & HMDVIEW_USE_DEVICE_IPD)) ? + WM_device_HMD_IPD_get() : scene->hmd_settings.interocular_distance; float viewmat[4][4]; float projmat[4][4]; BLI_lock_thread(LOCK_VIEW3D); data->stereo.convergence_mode = CAM_S3D_PARALLEL; + data->stereo.pivot = CAM_S3D_PIVOT_CENTER; scene->r.views_format = SCE_VIEWS_FORMAT_STEREO_3D; BKE_camera_multiview_view_matrix(&scene->r, v3d->camera, is_left, ipd_override, viewmat); @@ -3792,6 +3794,7 @@ static void view3d_stereo3d_setup(Scene *scene, View3D *v3d, ARegion *ar, const view3d_main_region_setup_view(scene, v3d, ar, viewmat, projmat); data->stereo.convergence_mode = convergence_mode; + data->stereo.pivot = pivot; scene->r.views_format = view_format; BLI_unlock_thread(LOCK_VIEW3D); } @@ -3865,10 +3868,19 @@ static void update_lods(Scene *scene, float camera_pos[3]) } #endif +static bool view3d_stereo3d_is_hmd_view(wmWindowManager *wm, wmWindow *win, Scene *scene) +{ +#ifdef WITH_INPUT_HMD + return (wm->win_hmd == win && (scene->hmd_settings.flag & HMDVIEW_SESSION_RUNNING)); +#else + UNUSED_VARS(wm, win, scene); + return false; +#endif +} + static void view3d_main_region_draw_objects( const bContext *C, Scene *scene, View3D *v3d, - ARegion *ar, const char **grid_unit, - const bool is_hmd_view) + ARegion *ar, const char **grid_unit) { wmWindow *win = CTX_wm_window(C); RegionView3D *rv3d = ar->regiondata; @@ -3889,6 +3901,7 @@ static void view3d_main_region_draw_objects( /* setup the view matrix */ if (view3d_stereo3d_active(C, scene, v3d, rv3d)) { + const bool is_hmd_view = view3d_stereo3d_is_hmd_view(CTX_wm_manager(C), win, scene); view3d_stereo3d_setup(scene, v3d, ar, is_hmd_view); } else { @@ -4074,13 +4087,6 @@ void view3d_main_region_draw(const bContext *C, ARegion *ar) const char *grid_unit = NULL; rcti border_rect; bool render_border, clip_border; - const bool is_hmd_view = -#ifdef WITH_INPUT_HMD - ((CTX_wm_manager(C)->win_hmd == CTX_wm_window(C)) && - (scene->hmd_settings.flag & HMDVIEW_SESSION_RUNNING)); -#else - false; -#endif /* if we only redraw render border area, skip opengl draw and also * don't do scissor because it's already set */ @@ -4089,7 +4095,7 @@ void view3d_main_region_draw(const bContext *C, ARegion *ar) /* draw viewport using opengl */ if (v3d->drawtype != OB_RENDER || !view3d_main_region_do_render_draw(scene) || clip_border) { - view3d_main_region_draw_objects(C, scene, v3d, ar, &grid_unit, is_hmd_view); + view3d_main_region_draw_objects(C, scene, v3d, ar, &grid_unit); #ifdef DEBUG_DRAW bl_debug_draw(); @@ -4099,7 +4105,7 @@ void view3d_main_region_draw(const bContext *C, ARegion *ar) ED_region_pixelspace(ar); - if (is_hmd_view) { + if (view3d_stereo3d_is_hmd_view(CTX_wm_manager(C), CTX_wm_window(C), scene)) { return; } } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs