[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