diff options
Diffstat (limited to 'release')
32 files changed, 66 insertions, 98 deletions
diff --git a/release/datafiles/locale b/release/datafiles/locale -Subproject 1d9b8b2ffa67a8832073acf316150b2dfaa2db0 +Subproject 0fd21a7cc382066d184fda8153f925bb825af2c diff --git a/release/scripts/addons b/release/scripts/addons -Subproject 47a32a5370d36942674621e5a03e57e8dd4986d +Subproject 9a9832d5d7fe61a446516f2e2722f8356bd7e70 diff --git a/release/scripts/modules/bpy_extras/object_utils.py b/release/scripts/modules/bpy_extras/object_utils.py index 540bc75cece..5b7f26ff89c 100644 --- a/release/scripts/modules/bpy_extras/object_utils.py +++ b/release/scripts/modules/bpy_extras/object_utils.py @@ -256,15 +256,15 @@ def world_to_camera_view(scene, obj, coord): z = -co_local.z camera = obj.data - frame = [-v for v in camera.view_frame(scene=scene)[:3]] + frame = [v for v in camera.view_frame(scene=scene)[:3]] if camera.type != 'ORTHO': if z == 0.0: return Vector((0.5, 0.5, 0.0)) else: - frame = [(v / (v.z / z)) for v in frame] + frame = [-(v / (v.z / z)) for v in frame] - min_x, max_x = frame[1].x, frame[2].x - min_y, max_y = frame[0].y, frame[1].y + min_x, max_x = frame[2].x, frame[1].x + min_y, max_y = frame[1].y, frame[0].y x = (co_local.x - min_x) / (max_x - min_x) y = (co_local.y - min_y) / (max_y - min_y) diff --git a/release/scripts/presets/tracking_camera/1__colon__2.3_inch.py b/release/scripts/presets/tracking_camera/1__colon__2.3_inch.py index 218e51a53a6..9fcd40fbb65 100644 --- a/release/scripts/presets/tracking_camera/1__colon__2.3_inch.py +++ b/release/scripts/presets/tracking_camera/1__colon__2.3_inch.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/1__colon__2.5_inch.py b/release/scripts/presets/tracking_camera/1__colon__2.5_inch.py index 0f16dc9b503..2f064e59838 100644 --- a/release/scripts/presets/tracking_camera/1__colon__2.5_inch.py +++ b/release/scripts/presets/tracking_camera/1__colon__2.5_inch.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/2__colon__3_inch.py b/release/scripts/presets/tracking_camera/2__colon__3_inch.py index 079d0c6308f..8936e627d77 100644 --- a/release/scripts/presets/tracking_camera/2__colon__3_inch.py +++ b/release/scripts/presets/tracking_camera/2__colon__3_inch.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/4__colon__3_inch.py b/release/scripts/presets/tracking_camera/4__colon__3_inch.py index 0d3313ab755..2317715e1b4 100644 --- a/release/scripts/presets/tracking_camera/4__colon__3_inch.py +++ b/release/scripts/presets/tracking_camera/4__colon__3_inch.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Arri_Alexa.py b/release/scripts/presets/tracking_camera/Arri_Alexa.py index 7144f9a03aa..ded361ec965 100644 --- a/release/scripts/presets/tracking_camera/Arri_Alexa.py +++ b/release/scripts/presets/tracking_camera/Arri_Alexa.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Canon_1100D.py b/release/scripts/presets/tracking_camera/Canon_1100D.py index dc09e3d0896..96d6d456337 100644 --- a/release/scripts/presets/tracking_camera/Canon_1100D.py +++ b/release/scripts/presets/tracking_camera/Canon_1100D.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Canon_APS-C.py b/release/scripts/presets/tracking_camera/Canon_APS-C.py index c55716a06a8..cc4da545272 100644 --- a/release/scripts/presets/tracking_camera/Canon_APS-C.py +++ b/release/scripts/presets/tracking_camera/Canon_APS-C.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Canon_APS-H.py b/release/scripts/presets/tracking_camera/Canon_APS-H.py index 0b757edef20..853edd5dcba 100644 --- a/release/scripts/presets/tracking_camera/Canon_APS-H.py +++ b/release/scripts/presets/tracking_camera/Canon_APS-H.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Canon_C300.py b/release/scripts/presets/tracking_camera/Canon_C300.py index 24fbbc78ff7..809f8f432f8 100644 --- a/release/scripts/presets/tracking_camera/Canon_C300.py +++ b/release/scripts/presets/tracking_camera/Canon_C300.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Full_Frame_35mm_Camera.py b/release/scripts/presets/tracking_camera/Full_Frame_35mm_Camera.py index 478e53584fb..0f3da0b4d72 100644 --- a/release/scripts/presets/tracking_camera/Full_Frame_35mm_Camera.py +++ b/release/scripts/presets/tracking_camera/Full_Frame_35mm_Camera.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/GoPro_Hero3_Black.py b/release/scripts/presets/tracking_camera/GoPro_Hero3_Black.py index 47e026e9d00..29851352284 100644 --- a/release/scripts/presets/tracking_camera/GoPro_Hero3_Black.py +++ b/release/scripts/presets/tracking_camera/GoPro_Hero3_Black.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/GoPro_Hero3_Silver.py b/release/scripts/presets/tracking_camera/GoPro_Hero3_Silver.py index 10ca885769a..9e08cf283a7 100644 --- a/release/scripts/presets/tracking_camera/GoPro_Hero3_Silver.py +++ b/release/scripts/presets/tracking_camera/GoPro_Hero3_Silver.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/GoPro_Hero3_White.py b/release/scripts/presets/tracking_camera/GoPro_Hero3_White.py index c9bda2258c8..6b1f9d97e81 100644 --- a/release/scripts/presets/tracking_camera/GoPro_Hero3_White.py +++ b/release/scripts/presets/tracking_camera/GoPro_Hero3_White.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Nexus_5.py b/release/scripts/presets/tracking_camera/Nexus_5.py index 68ec347d3e1..172c8e93bfd 100644 --- a/release/scripts/presets/tracking_camera/Nexus_5.py +++ b/release/scripts/presets/tracking_camera/Nexus_5.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Samsung_Galaxy_S3.py b/release/scripts/presets/tracking_camera/Samsung_Galaxy_S3.py index 6dbdaefbd2f..d10994e45f5 100644 --- a/release/scripts/presets/tracking_camera/Samsung_Galaxy_S3.py +++ b/release/scripts/presets/tracking_camera/Samsung_Galaxy_S3.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Samsung_Galaxy_S4.py b/release/scripts/presets/tracking_camera/Samsung_Galaxy_S4.py index 051cdf64402..c5fef80b3de 100644 --- a/release/scripts/presets/tracking_camera/Samsung_Galaxy_S4.py +++ b/release/scripts/presets/tracking_camera/Samsung_Galaxy_S4.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Super_16.py b/release/scripts/presets/tracking_camera/Super_16.py index f1a8bb37328..e94da9a99ba 100644 --- a/release/scripts/presets/tracking_camera/Super_16.py +++ b/release/scripts/presets/tracking_camera/Super_16.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/Super_35.py b/release/scripts/presets/tracking_camera/Super_35.py index f533d3e4bcf..e07edc3a22c 100644 --- a/release/scripts/presets/tracking_camera/Super_35.py +++ b/release/scripts/presets/tracking_camera/Super_35.py @@ -7,4 +7,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/iPhone_4.py b/release/scripts/presets/tracking_camera/iPhone_4.py index b0ac49706b3..220e5e08147 100644 --- a/release/scripts/presets/tracking_camera/iPhone_4.py +++ b/release/scripts/presets/tracking_camera/iPhone_4.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/iPhone_4S.py b/release/scripts/presets/tracking_camera/iPhone_4S.py index 2569f9b412b..686cffc8f99 100644 --- a/release/scripts/presets/tracking_camera/iPhone_4S.py +++ b/release/scripts/presets/tracking_camera/iPhone_4S.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/presets/tracking_camera/iPhone_5.py b/release/scripts/presets/tracking_camera/iPhone_5.py index f7944e3fa63..d8e05da8425 100644 --- a/release/scripts/presets/tracking_camera/iPhone_5.py +++ b/release/scripts/presets/tracking_camera/iPhone_5.py @@ -8,4 +8,3 @@ camera.pixel_aspect = 1 camera.k1 = 0.0 camera.k2 = 0.0 camera.k3 = 0.0 - diff --git a/release/scripts/startup/bl_ui/properties_data_bone.py b/release/scripts/startup/bl_ui/properties_data_bone.py index aca358870c8..ff4425fbb73 100644 --- a/release/scripts/startup/bl_ui/properties_data_bone.py +++ b/release/scripts/startup/bl_ui/properties_data_bone.py @@ -267,7 +267,7 @@ class BONE_PT_display(BoneButtonsPanel, Panel): if bone: col = layout.column() - col.prop(bone, "hide", text="Hide") + col.prop(bone, "hide", text="Hide", toggle=0) class BONE_PT_display_custom_shape(BoneButtonsPanel, Panel): diff --git a/release/scripts/startup/bl_ui/properties_physics_fluid.py b/release/scripts/startup/bl_ui/properties_physics_fluid.py index 4b0791a63e6..2c8ed363738 100644 --- a/release/scripts/startup/bl_ui/properties_physics_fluid.py +++ b/release/scripts/startup/bl_ui/properties_physics_fluid.py @@ -237,7 +237,7 @@ class PHYSICS_PT_settings(PhysicButtonsPanel, Panel): col = grid.column() col.prop(flow, "flow_behavior", expand=False) if flow.flow_behavior in {'INFLOW', 'OUTFLOW'}: - col.prop(flow, "use_inflow", text="Use Flow") + col.prop(flow, "use_inflow") col.prop(flow, "subframes", text="Sampling Substeps") diff --git a/release/scripts/startup/bl_ui/properties_render.py b/release/scripts/startup/bl_ui/properties_render.py index b1ae6290ae7..155bbb523c7 100644 --- a/release/scripts/startup/bl_ui/properties_render.py +++ b/release/scripts/startup/bl_ui/properties_render.py @@ -551,7 +551,6 @@ class RENDER_PT_gpencil(RenderButtonsPanel, Panel): col.prop(props, "antialias_threshold") - class RENDER_PT_opengl_sampling(RenderButtonsPanel, Panel): bl_label = "Sampling" COMPAT_ENGINES = {'BLENDER_WORKBENCH'} diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index bc4665209aa..76b7fc7f156 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -93,9 +93,6 @@ class IMAGE_MT_view(Menu): layout.separator() layout.prop(sima, "use_realtime_update") - if show_uvedit: - layout.prop(tool_settings, "show_uv_local_view") - layout.prop(uv, "show_metadata") if paint.brush and (context.image_paint_object or sima.mode == 'PAINT'): diff --git a/release/scripts/startup/bl_ui/space_topbar.py b/release/scripts/startup/bl_ui/space_topbar.py index 9aedd7ef0b3..6fc29119cdc 100644 --- a/release/scripts/startup/bl_ui/space_topbar.py +++ b/release/scripts/startup/bl_ui/space_topbar.py @@ -309,16 +309,18 @@ class TOPBAR_MT_file_new(Menu): template_paths = bpy.utils.app_template_paths() - # expand template paths - app_templates = [] + # Expand template paths. + + # Use a set to avoid duplicate user/system templates. + # This is a corner case, but users managed to do it! T76849. + app_templates = set() for path in template_paths: for d in os.listdir(path): if d.startswith(("__", ".")): continue template = os.path.join(path, d) if os.path.isdir(template): - # template_paths_expand.append(template) - app_templates.append(d) + app_templates.add(d) return sorted(app_templates) diff --git a/release/scripts/startup/bl_ui/space_userpref.py b/release/scripts/startup/bl_ui/space_userpref.py index 153533dbde6..3baedd889e0 100644 --- a/release/scripts/startup/bl_ui/space_userpref.py +++ b/release/scripts/startup/bl_ui/space_userpref.py @@ -1080,7 +1080,7 @@ class PreferenceThemeSpacePanel: PreferenceThemeSpacePanel._theme_generic(layout, data, self.theme_area) -class ThemeGenericClassGenerator(): +class ThemeGenericClassGenerator: @staticmethod def generate_panel_classes_for_wcols(): @@ -1436,16 +1436,7 @@ class USERPREF_PT_input_ndof(InputPanel, CenterAlignMixIn, Panel): prefs = context.preferences inputs = prefs.inputs - flow = layout.grid_flow(row_major=False, columns=0, even_columns=True, even_rows=False, align=False) - - flow.prop(inputs, "ndof_sensitivity", text="Pan Sensitivity") - flow.prop(inputs, "ndof_orbit_sensitivity", text="Orbit Sensitivity") - flow.prop(inputs, "ndof_deadzone", text="Deadzone") - - layout.separator() - - flow.row().prop(inputs, "ndof_view_navigate_method", expand=True) - flow.row().prop(inputs, "ndof_view_rotate_method", expand=True) + USERPREF_PT_ndof_settings.draw_settings(layout, inputs) # ----------------------------------------------------------------------------- @@ -1584,71 +1575,65 @@ class USERPREF_PT_ndof_settings(Panel): bl_label = "3D Mouse Settings" bl_space_type = 'TOPBAR' # dummy. bl_region_type = 'HEADER' + bl_ui_units_x = 12 - def draw(self, context): - layout = self.layout - layout.use_property_split = True - layout.use_property_decorate = False # No animation. - - input_prefs = context.preferences.inputs - - is_view3d = context.space_data.type == 'VIEW_3D' + @staticmethod + def draw_settings(layout, props, show_3dview_settings=True): + col = layout.column() + col.prop(props, "ndof_sensitivity", text="Pan Sensitivity") + col.prop(props, "ndof_orbit_sensitivity") + col.prop(props, "ndof_deadzone") - col = layout.column(align=True) - col.prop(input_prefs, "ndof_sensitivity") - col.prop(input_prefs, "ndof_orbit_sensitivity") - col.prop(input_prefs, "ndof_deadzone") + layout.separator() - if is_view3d: - layout.separator() - layout.prop(input_prefs, "ndof_show_guide") + if show_3dview_settings: + col = layout.column() + col.row().prop(props, "ndof_view_navigate_method", expand=True, text="Navigation") + col.row().prop(props, "ndof_view_rotate_method", expand=True, text="Rotation") layout.separator() - layout.label(text="Orbit Style") - layout.row().prop(input_prefs, "ndof_view_navigate_method", text="Navigate") - layout.row().prop(input_prefs, "ndof_view_rotate_method", text="Orbit") - layout.separator() - layout.label(text="Orbit Options") - split = layout.split(factor=0.6) - row = split.row() - row.alignment = 'RIGHT' - row.label(text="Invert Axis") - row = split.row(align=True) - for text, attr in ( - ("X", "ndof_rotx_invert_axis"), - ("Y", "ndof_roty_invert_axis"), - ("Z", "ndof_rotz_invert_axis"), - ): - row.prop(input_prefs, attr, text=text, toggle=True) + col = layout.column() + if show_3dview_settings: + col.prop(props, "ndof_show_guide") + col.prop(props, "ndof_zoom_invert") + row = col.row(heading="Pan") + row.prop(props, "ndof_pan_yz_swap_axis", text="Swap Y and Z Axes") - # view2d use pan/zoom layout.separator() - layout.label(text="Pan Options") - split = layout.split(factor=0.6) - row = split.row() - row.alignment = 'RIGHT' - row.label(text="Invert Axis") - row = split.row(align=True) + row = layout.row(heading=("Invert Axis Pan" if show_3dview_settings else "Invert Pan Axis")) for text, attr in ( ("X", "ndof_panx_invert_axis"), ("Y", "ndof_pany_invert_axis"), ("Z", "ndof_panz_invert_axis"), ): - row.prop(input_prefs, attr, text=text, toggle=True) + row.prop(props, attr, text=text, toggle=True) - layout.prop(input_prefs, "ndof_pan_yz_swap_axis") - - layout.label(text="Zoom Options") - layout.prop(input_prefs, "ndof_zoom_invert") + if show_3dview_settings: + row = layout.row(heading="Orbit") + for text, attr in ( + ("X", "ndof_rotx_invert_axis"), + ("Y", "ndof_roty_invert_axis"), + ("Z", "ndof_rotz_invert_axis"), + ): + row.prop(props, attr, text=text, toggle=True) - if is_view3d: layout.separator() - layout.label(text="Fly/Walk Options") - layout.prop(input_prefs, "ndof_fly_helicopter") - layout.prop(input_prefs, "ndof_lock_horizon") + col = layout.column(heading="Fly/Walk") + col.prop(props, "ndof_lock_horizon") + col.prop(props, "ndof_fly_helicopter") + + def draw(self, context): + layout = self.layout + layout.use_property_split = True + layout.use_property_decorate = False # No animation. + + input_prefs = context.preferences.inputs + + is_view3d = context.space_data.type == 'VIEW_3D' + self.draw_settings(layout, input_prefs, is_view3d) # ----------------------------------------------------------------------------- # Key-Map Editor Panels diff --git a/release/scripts/startup/bl_ui/space_view3d.py b/release/scripts/startup/bl_ui/space_view3d.py index 664c40f2ec7..7ed969bc921 100644 --- a/release/scripts/startup/bl_ui/space_view3d.py +++ b/release/scripts/startup/bl_ui/space_view3d.py @@ -3183,7 +3183,6 @@ class VIEW3D_MT_face_sets_init(Menu): op.mode = 'FACE_MAPS' - class VIEW3D_MT_particle(Menu): bl_label = "Particle" @@ -3762,6 +3761,11 @@ class VIEW3D_MT_edit_mesh_context_menu(Menu): col.separator() + col.operator("mesh.mark_seam").clear = False + col.operator("mesh.mark_seam", text="Clear Seam").clear = True + + col.separator() + col.operator("mesh.mark_sharp") col.operator("mesh.mark_sharp", text="Clear Sharp").clear = True @@ -4007,6 +4011,11 @@ class VIEW3D_MT_edit_mesh_edges(Menu): layout.separator() + layout.operator("mesh.mark_seam").clear = False + layout.operator("mesh.mark_seam", text="Clear Seam").clear = True + + layout.separator() + layout.operator("mesh.mark_sharp") layout.operator("mesh.mark_sharp", text="Clear Sharp").clear = True @@ -5270,6 +5279,7 @@ class VIEW3D_MT_sculpt_mask_edit_pie(Menu): op.mode = 'INVERT' op = pie.operator("paint.mask_flood_fill", text='Clear Mask') op.mode = 'VALUE' + op.value = 0.0 op = pie.operator("sculpt.mask_filter", text='Smooth Mask') op.filter_type = 'SMOOTH' op.auto_iteration_count = True diff --git a/release/scripts/startup/bl_ui/space_view3d_toolbar.py b/release/scripts/startup/bl_ui/space_view3d_toolbar.py index 83144b33c67..3d72a2a588c 100644 --- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py +++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py @@ -777,10 +777,6 @@ class VIEW3D_PT_sculpt_dyntopo(Panel, View3DPaintPanel): col.prop(sculpt, "use_smooth_shading") - - - - class VIEW3D_PT_sculpt_voxel_remesh(Panel, View3DPaintPanel): bl_context = ".sculpt_mode" # dot on purpose (access from topbar) bl_label = "Remesh" |