[Bf-blender-cvs] [6784706] HMD_viewport: Couple of fix for case no device is available/active

Julian Eisel noreply at git.blender.org
Wed Nov 23 23:14:43 CET 2016


Commit: 67847067b9929b2da56cc9e25425f0f2417bfaf0
Author: Julian Eisel
Date:   Wed Nov 23 17:58:58 2016 +0100
Branches: HMD_viewport
https://developer.blender.org/rB67847067b9929b2da56cc9e25425f0f2417bfaf0

Couple of fix for case no device is available/active

Fixes:
* HMD device option using invalid value
* HMD view drawing on-screen info and using wrong matrices
* Hardly usable 3D view due to projection and modelview matrix being unit matrices
All issues where only visible when the HMD device option is set to 'None'

===================================================================

M	source/blender/editors/interface/resources.c
M	source/blender/editors/space_view3d/view3d_draw.c

===================================================================

diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c
index 65ef3b7..06902bd 100644
--- a/source/blender/editors/interface/resources.c
+++ b/source/blender/editors/interface/resources.c
@@ -2767,7 +2767,7 @@ void init_userdef_do_versions(void)
 	 */
 	{
 #ifdef WITH_INPUT_HMD
-		if (WM_device_HMD_num_devices_get() > -1) {
+		if (WM_device_HMD_num_devices_get() > 0) {
 			U.hmd_settings.device = 0;
 		}
 		else
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index d1cde5b..2701327 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -3628,18 +3628,21 @@ static bool view3d_stereo3d_active(const bContext *C, Scene *scene, View3D *v3d,
 
 static bool view3d_hmd_view_active(wmWindowManager *wm, wmWindow *win)
 {
-	return ((wm->hmd_view.hmd_win == win) &&
-	        (wm->hmd_view.hmd_win->screen->is_hmd_running) &&
-	        (U.hmd_settings.device > -1));
+	return ((wm->hmd_view.hmd_win == win) && (wm->hmd_view.hmd_win->screen->is_hmd_running));
 }
 
 static void view3d_hmd_view_get_matrices(
         RegionView3D *rv3d, const bool is_left,
         float r_modelviewmat[4][4], float r_projectionmat[4][4])
 {
+	const bool has_device = U.hmd_settings.device > -1;
 	const bool use_device_rot = U.hmd_settings.flag & USER_HMD_USE_DEVICE_ROT;
 
-	if (use_device_rot) {
+	if (!has_device) {
+		copy_m4_m4(r_modelviewmat, rv3d->viewmat);
+		copy_m4_m4(r_projectionmat, rv3d->winmat);
+	}
+	else if (use_device_rot) {
 		WM_device_HMD_modelview_matrix_get(is_left, r_modelviewmat);
 		WM_device_HMD_projection_matrix_get(is_left, r_projectionmat);




More information about the Bf-blender-cvs mailing list