[Bf-blender-cvs] [24f4c98] HMD_viewport: Move interocular distance settings out of camera data
Julian Eisel
noreply at git.blender.org
Sun Oct 9 03:11:35 CEST 2016
Commit: 24f4c98cc2faf269b05e9ecae6507467da4a4751
Author: Julian Eisel
Date: Sun Oct 9 03:08:03 2016 +0200
Branches: HMD_viewport
https://developer.blender.org/rB24f4c98cc2faf269b05e9ecae6507467da4a4751
Move interocular distance settings out of camera data
These aren't just for the camera, but for entire HMD session.
===================================================================
M release/scripts/startup/bl_ui/properties_data_camera.py
M release/scripts/startup/bl_ui/properties_render_layer.py
M source/blender/makesdna/DNA_scene_types.h
M source/blender/makesrna/intern/rna_camera.c
M source/blender/makesrna/intern/rna_scene.c
===================================================================
diff --git a/release/scripts/startup/bl_ui/properties_data_camera.py b/release/scripts/startup/bl_ui/properties_data_camera.py
index 7283ed5..bee4286 100644
--- a/release/scripts/startup/bl_ui/properties_data_camera.py
+++ b/release/scripts/startup/bl_ui/properties_data_camera.py
@@ -156,12 +156,6 @@ 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
- 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")
-
col.row().prop(st, "convergence_mode", expand=True)
sub = col.column()
diff --git a/release/scripts/startup/bl_ui/properties_render_layer.py b/release/scripts/startup/bl_ui/properties_render_layer.py
index 66a0255..316a439 100644
--- a/release/scripts/startup/bl_ui/properties_render_layer.py
+++ b/release/scripts/startup/bl_ui/properties_render_layer.py
@@ -201,7 +201,7 @@ class RENDERLAYER_PT_views(RenderLayerButtonsPanel, Panel):
rv = rd.views.active
wm = context.window_manager
- layout.active = rd.use_multiview
+ layout.enabled = rd.use_multiview
basic_stereo = rd.views_format == 'STEREO_3D'
row = layout.row()
@@ -240,9 +240,16 @@ class RENDERLAYER_PT_views(RenderLayerButtonsPanel, Panel):
row.operator("wm.hmd_view_toggle", text=text_win)
row.operator("wm.hmd_session_run", text=text_run, icon=icon)
- col.prop(scene, "hmd_camlock")
- col.prop(scene, "use_hmd_view_lensdist", text="Lens Distortion")
- col.prop(scene, "hmd_view_shade", text="Shading")
+ row = col.row()
+ row.prop(scene, "hmd_camlock")
+ row.prop(scene, "use_hmd_view_lensdist", text="Lens Distortion")
+
+ layout.prop(scene, "hmd_view_shade", text="Shading")
+ layout.prop(scene, "use_hmd_device_ipd")
+
+ col = layout.column()
+ col.active = not scene.use_hmd_device_ipd
+ col.prop(scene, "hmd_interocular_distance")
if __name__ == "__main__": # only for live edit.
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 8ecb3d5..d9f9b40 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -1569,12 +1569,12 @@ typedef struct DisplaySafeAreas {
/* HMD View Settings */
/**
- * Settings that will be applied to the already opened HMD view or when opening one.
+ * Settings that will be applied to the already opened HMD view or when opening it.
*/
struct HMDViewSettings {
char view_shade; /* rna_enum_viewport_shade_items */
- char flag;
- char pad[2];
+ char flag, pad[2];
+ float interocular_distance;
};
/* HMDViewSettings.flag */
@@ -1582,6 +1582,7 @@ enum {
HMDVIEW_SESSION_RUNNING = (1 << 0),
HMDVIEW_IGNORE_ROT = (1 << 1),
HMDVIEW_USE_LENSDIST_FX = (1 << 2),
+ HMDVIEW_USE_DEVICE_IPD = (1 << 3),
};
/* *************************************************************** */
@@ -1677,7 +1678,6 @@ typedef struct Scene {
struct PreviewImage *preview;
struct HMDViewSettings hmd_settings;
- int pad2;
} Scene;
/* **************** RENDERDATA ********************* */
diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c
index 367b20d..8470668 100644
--- a/source/blender/makesrna/intern/rna_camera.c
+++ b/source/blender/makesrna/intern/rna_camera.c
@@ -44,25 +44,6 @@
#include "WM_api.h"
-static int rna_camera_stereo_use_device_ipd_editeable(PointerRNA *ptr, const char **r_info)
-{
-#ifdef WITH_INPUT_HMD
- if (U.hmd_device == -1 || WM_device_HMD_IPD_get() == -1) {
- Camera *cam = ptr->id.data;
-
- *r_info = (U.hmd_device == -1) ?
- "No valid HMD device selected (see User Preferences)" :
- "Active HMD device doesn't return valid interocular distance";
-
- cam->stereo.flag |= CAM_S3D_CUSTOM_IPD;
- return false;
- }
-#else
- UNUSED_VARS(ptr);
-#endif
- return PROP_EDITABLE;
-}
-
static float rna_Camera_angle_get(PointerRNA *ptr)
{
Camera *cam = ptr->id.data;
@@ -151,13 +132,6 @@ static void rna_def_camera_stereo_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Pivot", "");
RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
- prop = RNA_def_property(srna, "use_device_ipd", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CAM_S3D_CUSTOM_IPD);
- RNA_def_property_ui_text(prop, "Interocular Distance from HMD",
- "Request the interocular distance (distance between eyes) from the HMD driver");
- RNA_def_property_editable_func(prop, "rna_camera_stereo_use_device_ipd_editeable");
- RNA_def_property_update(prop, NC_OBJECT | ND_DRAW, NULL);
-
prop = RNA_def_property(srna, "interocular_distance", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_range(prop, 0.0f, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0f, 1e4f, 1, 3);
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index e8a9588..1ea9e1b 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -743,7 +743,7 @@ static void rna_Scene_hmd_camlock_update(
static void rna_Scene_hmd_view_shade_set(PointerRNA *ptr, int value)
{
- Scene *scene = (Scene *)ptr->data;
+ Scene *scene = ptr->data;
wmWindowManager *wm = G.main->wm.first;
wmWindow *win = wm->win_hmd;
@@ -763,7 +763,7 @@ static void rna_Scene_hmd_view_shade_set(PointerRNA *ptr, int value)
static void rna_Scene_hmd_view_lensdist_set(PointerRNA *ptr, int value)
{
- Scene *scene = (Scene *)ptr->data;
+ Scene *scene = ptr->data;
wmWindowManager *wm = G.main->wm.first;
wmWindow *win = wm->win_hmd;
@@ -790,6 +790,23 @@ static void rna_Scene_hmd_view_lensdist_set(PointerRNA *ptr, int value)
}
}
}
+
+static int rna_Scene_use_hmd_device_ipd_editeable(PointerRNA *ptr, const char **r_info)
+{
+
+ if (U.hmd_device == -1 || WM_device_HMD_IPD_get() == -1) {
+ Scene *scene = ptr->data;
+
+ *r_info = (U.hmd_device == -1) ?
+ "No valid HMD device selected (see User Preferences)" :
+ "Active HMD device doesn't return valid interocular distance";
+
+ scene->hmd_settings.flag |= HMDVIEW_USE_DEVICE_IPD;
+ return false;
+ }
+
+ return PROP_EDITABLE;
+}
#endif /* WITH_INPUT_HMD */
static void rna_Scene_framelen_update(Main *UNUSED(bmain), Scene *scene, PointerRNA *UNUSED(ptr))
@@ -7358,6 +7375,21 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "hmd_settings.flag", HMDVIEW_USE_LENSDIST_FX);
RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_hmd_view_lensdist_set");
RNA_def_property_ui_text(prop, "HMD View Lens Distortion", "Draw the HMD viewport using a distorted lens");
+
+ prop = RNA_def_property(srna, "use_hmd_device_ipd", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "hmd_settings.flag", HMDVIEW_USE_DEVICE_IPD);
+ RNA_def_property_ui_text(prop, "Interocular Distance from HMD",
+ "Request the interocular distance (distance between eyes) from the HMD driver");
+ RNA_def_property_editable_func(prop, "rna_Scene_use_hmd_device_ipd_editeable");
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
+
+ prop = RNA_def_property(srna, "hmd_interocular_distance", PROP_FLOAT, PROP_DISTANCE);
+ RNA_def_property_float_sdna(prop, NULL, "hmd_settings.interocular_distance");
+ RNA_def_property_range(prop, 0.0f, FLT_MAX);
+ RNA_def_property_ui_range(prop, 0.0f, 1e4f, 1, 3);
+ RNA_def_property_ui_text(prop, "Interocular Distance",
+ "Set the distance between the eyes - the stereo plane distance / 30 should be fine");
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL);
#endif
/* Nestled Data */
More information about the Bf-blender-cvs
mailing list