[Bf-blender-cvs] [f40b223] HMD_viewport: HMD view doesn't require own multiview mode anymore

Julian Eisel noreply at git.blender.org
Sun Oct 9 01:24:44 CEST 2016


Commit: f40b22365da21ed140e75b94e2bb13ab5ffbf0e0
Author: Julian Eisel
Date:   Sun Oct 9 01:22:25 2016 +0200
Branches: HMD_viewport
https://developer.blender.org/rBf40b22365da21ed140e75b94e2bb13ab5ffbf0e0

HMD view doesn't require own multiview mode anymore

HMD view buttons and options are always visible in "Views" panel now (Properties Editor -> Render Layers context).

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

M	release/scripts/startup/bl_ui/properties_data_camera.py
M	release/scripts/startup/bl_ui/properties_render_layer.py
M	source/blender/blenkernel/BKE_camera.h
M	source/blender/blenkernel/intern/camera.c
M	source/blender/editors/space_view3d/drawobject.c
M	source/blender/editors/space_view3d/view3d_draw.c
M	source/blender/makesdna/DNA_scene_types.h
M	source/blender/makesrna/intern/rna_scene.c
M	source/blender/windowmanager/intern/wm_stereo.c

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

diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py
index c9352b8..7283ed5 100644
--- a/release/scripts/startup/bl_ui/properties_data_camera.py
+++ b/release/scripts/startup/bl_ui/properties_data_camera.py
@@ -143,7 +143,7 @@ class DATA_PT_camera_stereoscopy(CameraButtonsPanel, Panel):
     def poll(cls, context):
         render = context.scene.render
         return (super().poll(context) and render.use_multiview and
-                render.views_format in {'STEREO_3D', 'HMD'})
+                render.views_format == 'STEREO_3D')
 
     def draw(self, context):
         layout = self.layout
@@ -156,31 +156,31 @@ class DATA_PT_camera_stereoscopy(CameraButtonsPanel, Panel):
         is_spherical_stereo = cam.type != 'ORTHO' and render.use_spherical_stereo
         use_spherical_stereo = is_spherical_stereo and st.use_spherical_stereo
 
-        if render.views_format == 'HMD':
-            col.prop(st, "use_device_ipd")
-            subcol = col.column()
-            subcol.active = not st.use_device_ipd
-            subcol.prop(st, "interocular_distance")
-        else:
-            col.row().prop(st, "convergence_mode", expand=True)
+        col.prop(st, "use_device_ipd")
+        subcol = col.column()
+        subcol.active = not st.use_device_ipd
+        # TODO needs own property for HMD IPD
+        # subcol.prop(st, "interocular_distance")
 
-            sub = col.column()
-            sub.active = st.convergence_mode != 'PARALLEL'
-            sub.prop(st, "convergence_distance")
+        col.row().prop(st, "convergence_mode", expand=True)
 
-            col.prop(st, "interocular_distance")
+        sub = col.column()
+        sub.active = st.convergence_mode != 'PARALLEL'
+        sub.prop(st, "convergence_distance")
 
-            if is_spherical_stereo:
-                col.separator()
-                row = col.row()
-                row.prop(st, "use_spherical_stereo")
-                sub = row.row()
-                sub.active = st.use_spherical_stereo
-                sub.prop(st, "use_pole_merge")
-                row = col.row(align=True)
-                row.active = st.use_pole_merge
-                row.prop(st, "pole_merge_angle_from")
-                row.prop(st, "pole_merge_angle_to")
+        col.prop(st, "interocular_distance")
+
+        if is_spherical_stereo:
+            col.separator()
+            row = col.row()
+            row.prop(st, "use_spherical_stereo")
+            sub = row.row()
+            sub.active = st.use_spherical_stereo
+            sub.prop(st, "use_pole_merge")
+            row = col.row(align=True)
+            row.active = st.use_pole_merge
+            row.prop(st, "pole_merge_angle_from")
+            row.prop(st, "pole_merge_angle_to")
 
         col.label(text="Pivot:")
         row = col.row()
diff --git a/release/scripts/startup/bl_ui/properties_render_layer.py b/release/scripts/startup/bl_ui/properties_render_layer.py
index 5b8aeed..0ca1a97 100644
--- a/release/scripts/startup/bl_ui/properties_render_layer.py
+++ b/release/scripts/startup/bl_ui/properties_render_layer.py
@@ -199,6 +199,7 @@ class RENDERLAYER_PT_views(RenderLayerButtonsPanel, Panel):
         scene = context.scene
         rd = scene.render
         rv = rd.views.active
+        wm = context.window_manager
 
         layout.active = rd.use_multiview
         basic_stereo = rd.views_format == 'STEREO_3D'
@@ -224,23 +225,24 @@ class RENDERLAYER_PT_views(RenderLayerButtonsPanel, Panel):
             row = layout.row()
             row.label(text="Camera Suffix:")
             row.prop(rv, "camera_suffix", text="")
-        else:
-            wm = context.window_manager
 
-            running = scene.hmd_running
-            text_win = "Close HMD Window" if wm.has_hmd_window else "Open HMD Window"
-            text_run = "Stop Session" if running else "Start Session"
-            icon = 'PAUSE' if running else 'PLAY'
+        running = scene.hmd_running
+        text_win = "Close HMD Window" if wm.has_hmd_window else "Open HMD Window"
+        text_run = "Stop Session" if running else "Start Session"
+        icon = 'PAUSE' if running else 'PLAY'
 
-            col = layout.column()
+        layout.separator()
+        layout.label(text="HMD View:")
+
+        col = layout.column()
 
-            row = col.row(align=True)
-            row.operator("wm.hmd_view_toggle", text=text_win)
-            row.operator("wm.hmd_session_run", text=text_run, icon=icon)
+        row = col.row(align=True)
+        row.operator("wm.hmd_view_toggle", text=text_win)
+        row.operator("wm.hmd_session_run", text=text_run, icon=icon)
 
-            col.prop(rd, "hmd_camlock")
-            col.prop(rd, "use_hmd_view_lensdist", text="Lens Distortion")
-            col.prop(rd, "hmd_view_shade", text="Shading")
+        col.prop(rd, "hmd_camlock")
+        col.prop(rd, "use_hmd_view_lensdist", text="Lens Distortion")
+        col.prop(rd, "hmd_view_shade", text="Shading")
 
 
 if __name__ == "__main__":  # only for live edit.
diff --git a/source/blender/blenkernel/BKE_camera.h b/source/blender/blenkernel/BKE_camera.h
index bfc49b5..eee7271 100644
--- a/source/blender/blenkernel/BKE_camera.h
+++ b/source/blender/blenkernel/BKE_camera.h
@@ -140,8 +140,9 @@ void BKE_camera_to_gpu_dof(struct Object *camera, struct GPUFXSettings *r_fx_set
 /* Camera multi-view API */
 
 struct Object *BKE_camera_multiview_render(struct Scene *scene, struct Object *camera, const char *viewname);
-void           BKE_camera_multiview_view_matrix(struct RenderData *rd, struct Object *camera, const bool is_left, float r_viewmat[4][4]);
+void           BKE_camera_multiview_view_matrix(struct RenderData *rd, struct Object *camera, const bool is_left, const bool is_hmd_view, float r_viewmat[4][4]);
 void           BKE_camera_multiview_proj_matrix(const bool is_left, float r_projmat[4][4]);
+void           BKE_camera_multiview_model_matrix_ex(struct RenderData *rd, struct Object *camera, const char *viewname, const bool is_hmd_view, float r_modelmat[4][4]);
 void           BKE_camera_multiview_model_matrix(struct RenderData *rd, struct Object *camera, const char *viewname, float r_modelmat[4][4]);
 float          BKE_camera_multiview_shift_x(struct RenderData *rd, struct Object *camera, const char *viewname);
 void           BKE_camera_multiview_params(struct RenderData *rd, struct CameraParams *params, struct Object *camera, const char *viewname);
diff --git a/source/blender/blenkernel/intern/camera.c b/source/blender/blenkernel/intern/camera.c
index 74431c7..860ff3a 100644
--- a/source/blender/blenkernel/intern/camera.c
+++ b/source/blender/blenkernel/intern/camera.c
@@ -677,7 +677,7 @@ static void camera_model_matrix(Object *camera, float r_modelmat[4][4])
 }
 
 static void camera_stereo3d_model_matrix(
-        Object *camera, const bool is_left, const bool is_hmd,
+        Object *camera, const bool is_left, const bool is_hmd_view,
         float r_modelmat[4][4])
 {
 	Camera *data = (Camera *)camera->data;
@@ -693,14 +693,14 @@ static void camera_stereo3d_model_matrix(
 
 #ifdef WITH_INPUT_HMD
 	/* Try to get the interocular distance from the HMD */
-	if (is_hmd && U.hmd_device != -1 && !(data->stereo.flag & CAM_S3D_CUSTOM_IPD)) {
+	if (is_hmd_view && U.hmd_device != -1 && !(data->stereo.flag & CAM_S3D_CUSTOM_IPD)) {
 		const float device_ipd = WM_device_HMD_IPD_get();
 		if (device_ipd != -1) {
 			interocular_distance = device_ipd;
 		}
 	}
 #else
-	UNUSED_VARS(is_hmd);
+	UNUSED_VARS(is_hmd_view);
 #endif
 
 	if (((pivot == CAM_S3D_PIVOT_LEFT) && is_left) ||
@@ -723,7 +723,7 @@ static void camera_stereo3d_model_matrix(
 	/* rotation */
 	if (convergence_mode == CAM_S3D_TOE
 #ifdef WITH_INPUT_HMD
-	    && !is_hmd
+	    && !is_hmd_view
 #endif
 	    )
 	{
@@ -791,9 +791,12 @@ static void camera_stereo3d_model_matrix(
 }
 
 /* the view matrix is used by the viewport drawing, it is basically the inverted model matrix */
-void BKE_camera_multiview_view_matrix(RenderData *rd, Object *camera, const bool is_left, float r_viewmat[4][4])
+void BKE_camera_multiview_view_matrix(
+        RenderData *rd, Object *camera, const bool is_left, const bool is_hmd_view,
+        float r_viewmat[4][4])
 {
-	BKE_camera_multiview_model_matrix(rd, camera, is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME, r_viewmat);
+	BKE_camera_multiview_model_matrix_ex(rd, camera, is_left ? STEREO_LEFT_NAME : STEREO_RIGHT_NAME,
+	                                     is_hmd_view, r_viewmat);
 	invert_m4(r_viewmat);
 }
 
@@ -825,7 +828,9 @@ static bool camera_is_left(const char *viewname)
 	return true;
 }
 
-void BKE_camera_multiview_model_matrix(RenderData *rd, Object *camera, const char *viewname, float r_modelmat[4][4])
+void BKE_camera_multiview_model_matrix_ex(
+        RenderData *rd, Object *camera, const char *viewname, const bool is_hmd_view,
+        float r_modelmat[4][4])
 {
 	const bool is_multiview = (rd && rd->scemode & R_MULTIVIEW) != 0;
 
@@ -837,11 +842,16 @@ void BKE_camera_multiview_model_matrix(RenderData *rd, Object *camera, const cha
 	}
 	else { /* SCE_VIEWS_SETUP_BASIC */
 		const bool is_left = camera_is_left(viewname);
-		camera_stereo3d_model_matrix(camera, is_left, rd->views_format == SCE_VIEWS_FORMAT_HMD, r_modelmat);
+		camera_stereo3d_model_matrix(camera, is_left, is_hmd_view, r_modelmat);
 	}
 	normalize_m4(r_modelmat);
 }
 
+void BKE_camera_multiview_model_matrix(RenderData *rd, Object *camera, const char *viewname, float r_modelmat[4][4])
+{
+	BKE_camera_multiview_model_matrix_ex(rd, camera, viewname, false, r_modelmat);
+}
+
 bool BKE_camera_multiview_spherical_stereo(RenderData *rd, Object *camera)
 {
 	Camera *cam;
@@ -963,7 +973,7 @@ float BKE_camera_multiview_shift_x(RenderData *rd, Object *camera, const char *v
 	if (!is_multiview) {
 		return data->shiftx;
 	}
-	else if (ELEM(rd->views_format, SCE_VIEWS_FORMAT_MULTIVIEW, SCE_VIEWS_FORMAT_HMD)) {
+	else if (ELEM(rd->views_format, SCE_VIEWS_FORMAT_MULTIVIEW)) {
 		return data->shiftx;
 	}
 	else { /* SCE_VIEWS_SETUP_BASIC */
@@ -973,8 +983,7 @@ float BKE_camera_multiview_shift_x(RenderData *rd, Object *camera, const char *v
 
 void BKE_came

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list