diff options
5 files changed, 21 insertions, 6 deletions
diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index bc38214f101..cc0881e1a9a 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -4189,14 +4189,22 @@ class VIEW3D_PT_shading_lighting(Panel): sub.scale_y = 0.6 # smaller matcap/hdri preview if shading.light == 'STUDIO': - # Not implemented right now + userpref = context.user_preferences + system = userpref.system + sub.template_icon_view(shading, "studio_light", scale=3) - # if shading.selected_studio_light.type == 'WORLD': - # col.prop(shading, "studiolight_rotate_z", text="Rotation") + col = split.column() + col.operator('wm.studiolight_userpref_show', emboss=False, text="", icon='PREFERENCES') + split = layout.split(factor=0.9) col = split.column() - # col.operator('wm.studiolight_userpref_show', emboss=False, text="", icon='PREFERENCES') + row = col.row() + row.prop(shading, "use_world_space_lighting", text="", icon="WORLD", toggle=True) + row = row.row() + row.active = shading.use_world_space_lighting + row.prop(shading, "studiolight_rotate_z", text="Rotation") + col = split.column() # to align properly with above elif shading.light == 'MATCAP': sub.template_icon_view(shading, "studio_light", scale=3) diff --git a/source/blender/draw/engines/workbench/workbench_private.h b/source/blender/draw/engines/workbench/workbench_private.h index b1f3a589d05..9853737518c 100644 --- a/source/blender/draw/engines/workbench/workbench_private.h +++ b/source/blender/draw/engines/workbench/workbench_private.h @@ -46,6 +46,7 @@ #define FLAT_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_FLAT) #define STUDIOLIGHT_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_STUDIO) #define MATCAP_ENABLED(wpd) (wpd->shading.light == V3D_LIGHTING_MATCAP) +#define USE_WORLD_ORIENTATION(wpd) ((wpd->shading.flag & V3D_SHADING_WORLD_ORIENTATION) != 0) #define STUDIOLIGHT_TYPE_WORLD_ENABLED(wpd) (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_WORLD)) #define STUDIOLIGHT_TYPE_STUDIO_ENABLED(wpd) (STUDIOLIGHT_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_STUDIO)) #define STUDIOLIGHT_TYPE_MATCAP_ENABLED(wpd) (MATCAP_ENABLED(wpd) && (wpd->studio_light->flag & STUDIOLIGHT_TYPE_MATCAP)) diff --git a/source/blender/draw/engines/workbench/workbench_studiolight.c b/source/blender/draw/engines/workbench/workbench_studiolight.c index 183b285c69c..f0a166105ab 100644 --- a/source/blender/draw/engines/workbench/workbench_studiolight.c +++ b/source/blender/draw/engines/workbench/workbench_studiolight.c @@ -37,8 +37,7 @@ void studiolight_update_world(WORKBENCH_PrivateData *wpd, StudioLight *studiolig float view_matrix[4][4], rot_matrix[4][4]; DRW_viewport_matrix_get(view_matrix, DRW_MAT_VIEW); - /* TODO enable when we support studiolight presets. */ - if (STUDIOLIGHT_TYPE_WORLD_ENABLED(wpd) && false) { + if (USE_WORLD_ORIENTATION(wpd)) { axis_angle_to_mat4_single(rot_matrix, 'Y', -wpd->shading.studiolight_rot_z); mul_m4_m4m4(rot_matrix, rot_matrix, view_matrix); swap_v3_v3(rot_matrix[2], rot_matrix[1]); diff --git a/source/blender/makesdna/DNA_view3d_types.h b/source/blender/makesdna/DNA_view3d_types.h index 5c31f377447..79d2c230fdc 100644 --- a/source/blender/makesdna/DNA_view3d_types.h +++ b/source/blender/makesdna/DNA_view3d_types.h @@ -395,6 +395,7 @@ enum { V3D_SHADING_MATCAP_FLIP_X = (1 << 6), V3D_SHADING_SCENE_WORLD = (1 << 7), V3D_SHADING_XRAY_BONE = (1 << 8), + V3D_SHADING_WORLD_ORIENTATION = (1 << 9), }; /* View3DShading->color_type */ diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c index 74fb09f8088..e8cda30a511 100644 --- a/source/blender/makesrna/intern/rna_space.c +++ b/source/blender/makesrna/intern/rna_space.c @@ -2441,6 +2441,12 @@ static void rna_def_space_view3d_shading(BlenderRNA *brna) RNA_def_property_ui_text(prop, "Studiolight", "Studio lighting setup"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + prop = RNA_def_property(srna, "use_world_space_lighting", PROP_BOOLEAN, PROP_NONE); + RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SHADING_WORLD_ORIENTATION); + RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); + RNA_def_property_ui_text(prop, "World Space Lighting", "Make the lighting fixed and not follow the camera"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_VIEW3D, NULL); + prop = RNA_def_property(srna, "show_cavity", PROP_BOOLEAN, PROP_NONE); RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SHADING_CAVITY); RNA_def_property_clear_flag(prop, PROP_ANIMATABLE); |