Commit: f745564e4ee791e4faf804b09ce975b882f4f8d9 Author: Antony Riakiotakis Date: Mon Jul 21 12:02:05 2014 +0200 Branches: master https://developer.blender.org/rBf745564e4ee791e4faf804b09ce975b882f4f8d9
GSOC 2013 paint Yep, at last it's here! There are a few minor issues remaining but development can go on in master after discussion at blender institute. For full list of features see: http://wiki.blender.org/index.php/Dev:Ref/Release_Notes/2.72/Painting Thanks to Sergey and Campbell for the extensive review and to the countless artists that have given their input and reported issues during development. =================================================================== M SConstruct M release/scripts/startup/bl_ui/properties_paint_common.py M release/scripts/startup/bl_ui/space_image.py M release/scripts/startup/bl_ui/space_view3d.py M release/scripts/startup/bl_ui/space_view3d_toolbar.py M source/blender/blenkernel/BKE_DerivedMesh.h M source/blender/blenkernel/BKE_blender.h M source/blender/blenkernel/BKE_brush.h M source/blender/blenkernel/BKE_library.h M source/blender/blenkernel/BKE_main.h M source/blender/blenkernel/BKE_material.h M source/blender/blenkernel/BKE_paint.h M source/blender/blenkernel/intern/DerivedMesh.c M source/blender/blenkernel/intern/brush.c M source/blender/blenkernel/intern/cdderivedmesh.c M source/blender/blenkernel/intern/depsgraph.c M source/blender/blenkernel/intern/editderivedmesh.c M source/blender/blenkernel/intern/idcode.c M source/blender/blenkernel/intern/library.c M source/blender/blenkernel/intern/material.c M source/blender/blenkernel/intern/paint.c M source/blender/blenkernel/intern/subsurf_ccg.c M source/blender/blenkernel/intern/texture.c M source/blender/blenlib/BLI_math_color_blend.h M source/blender/blenlib/BLI_math_vector.h M source/blender/blenlib/intern/math_color_blend_inline.c M source/blender/blenloader/intern/readfile.c M source/blender/blenloader/intern/versioning_270.c M source/blender/blenloader/intern/writefile.c M source/blender/editors/datafiles/CMakeLists.txt M source/blender/editors/datafiles/SConscript M source/blender/editors/include/ED_datafiles.h M source/blender/editors/include/ED_image.h M source/blender/editors/include/ED_paint.h M source/blender/editors/include/ED_transform.h M source/blender/editors/include/ED_view3d.h M source/blender/editors/include/UI_icons.h M source/blender/editors/include/UI_interface.h M source/blender/editors/include/UI_resources.h M source/blender/editors/interface/interface_handlers.c M source/blender/editors/interface/interface_icons.c M source/blender/editors/interface/interface_intern.h M source/blender/editors/interface/interface_ops.c M source/blender/editors/interface/interface_templates.c M source/blender/editors/interface/interface_widgets.c M source/blender/editors/interface/resources.c M source/blender/editors/render/render_update.c M source/blender/editors/screen/screen_ops.c M source/blender/editors/sculpt_paint/CMakeLists.txt M source/blender/editors/sculpt_paint/paint_cursor.c A source/blender/editors/sculpt_paint/paint_curve.c M source/blender/editors/sculpt_paint/paint_image.c M source/blender/editors/sculpt_paint/paint_image_2d.c M source/blender/editors/sculpt_paint/paint_image_proj.c M source/blender/editors/sculpt_paint/paint_intern.h M source/blender/editors/sculpt_paint/paint_ops.c M source/blender/editors/sculpt_paint/paint_stroke.c M source/blender/editors/sculpt_paint/paint_undo.c M source/blender/editors/sculpt_paint/paint_utils.c M source/blender/editors/sculpt_paint/paint_vertex.c M source/blender/editors/sculpt_paint/sculpt.c M source/blender/editors/sculpt_paint/sculpt_undo.c M source/blender/editors/space_api/spacetypes.c M source/blender/editors/space_image/image_edit.c M source/blender/editors/space_image/image_ops.c M source/blender/editors/space_image/space_image.c M source/blender/editors/space_view3d/drawmesh.c M source/blender/editors/space_view3d/drawobject.c M source/blender/editors/space_view3d/space_view3d.c M source/blender/editors/space_view3d/view3d_draw.c M source/blender/editors/space_view3d/view3d_edit.c M source/blender/editors/space_view3d/view3d_header.c M source/blender/editors/transform/transform.c M source/blender/editors/transform/transform.h M source/blender/editors/transform/transform_constraints.c M source/blender/editors/transform/transform_conversions.c M source/blender/editors/transform/transform_generics.c M source/blender/editors/transform/transform_snap.c M source/blender/editors/uvedit/uvedit_draw.c M source/blender/editors/uvedit/uvedit_ops.c M source/blender/gpu/GPU_buffers.h M source/blender/gpu/GPU_draw.h M source/blender/gpu/intern/gpu_buffers.c M source/blender/gpu/intern/gpu_draw.c M source/blender/imbuf/IMB_imbuf.h M source/blender/imbuf/intern/rectop.c M source/blender/makesdna/DNA_ID.h M source/blender/makesdna/DNA_brush_types.h M source/blender/makesdna/DNA_material_types.h M source/blender/makesdna/DNA_scene_types.h M source/blender/makesdna/DNA_space_types.h M source/blender/makesdna/DNA_userdef_types.h M source/blender/makesrna/RNA_access.h M source/blender/makesrna/intern/rna_ID.c M source/blender/makesrna/intern/rna_brush.c M source/blender/makesrna/intern/rna_internal.h M source/blender/makesrna/intern/rna_material.c M source/blender/makesrna/intern/rna_mesh.c M source/blender/makesrna/intern/rna_scene.c M source/blender/makesrna/intern/rna_sculpt_paint.c M source/blender/makesrna/intern/rna_space.c M source/blender/makesrna/intern/rna_ui_api.c M source/blender/makesrna/intern/rna_userdef.c M source/blender/windowmanager/WM_api.h M source/blender/windowmanager/WM_types.h M source/blender/windowmanager/intern/wm.c M source/blender/windowmanager/intern/wm_dragdrop.c M source/blender/windowmanager/intern/wm_event_system.c M source/blender/windowmanager/intern/wm_window.c M source/blender/windowmanager/wm_event_types.h M source/blenderplayer/bad_level_call_stubs/stubs.c M source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_StorageIM.cpp M source/gameengine/VideoTexture/ImageBuff.cpp =================================================================== diff --git a/SConstruct b/SConstruct index 6abf91c..331158e 100644 --- a/SConstruct +++ b/SConstruct @@ -730,6 +730,8 @@ if B.targets != ['cudakernels']: data_to_c_simple("release/datafiles/brushicons/soften.png") data_to_c_simple("release/datafiles/brushicons/subtract.png") data_to_c_simple("release/datafiles/brushicons/texdraw.png") + data_to_c_simple("release/datafiles/brushicons/texfill.png") + data_to_c_simple("release/datafiles/brushicons/texmask.png") data_to_c_simple("release/datafiles/brushicons/thumb.png") data_to_c_simple("release/datafiles/brushicons/twist.png") data_to_c_simple("release/datafiles/brushicons/vertexdraw.png") diff --git a/release/scripts/startup/bl_ui/properties_paint_common.py b/release/scripts/startup/bl_ui/properties_paint_common.py index 462ca2e..8359ae6 100644 --- a/release/scripts/startup/bl_ui/properties_paint_common.py +++ b/release/scripts/startup/bl_ui/properties_paint_common.py @@ -50,6 +50,10 @@ class UnifiedPaintPanel(): row.prop(ups, "use_unified_strength", text="Strength") if context.weight_paint_object: parent.prop(ups, "use_unified_weight", text="Weight") + elif context.vertex_paint_object or context.image_paint_object: + parent.prop(ups, "use_unified_color", text="Color") + else: + parent.prop(ups, "use_unified_color", text="Color") @staticmethod def prop_unified_size(parent, context, brush, prop_name, icon='NONE', text="", slider=False): @@ -69,6 +73,105 @@ class UnifiedPaintPanel(): ptr = ups if ups.use_unified_weight else brush parent.prop(ptr, prop_name, icon=icon, text=text, slider=slider) + @staticmethod + def prop_unified_color(parent, context, brush, prop_name, text=""): + ups = context.tool_settings.unified_paint_settings + ptr = ups if ups.use_unified_color else brush + parent.prop(ptr, prop_name, text=text) + + @staticmethod + def prop_unified_color_picker(parent, context, brush, prop_name, value_slider=True): + ups = context.tool_settings.unified_paint_settings + ptr = ups if ups.use_unified_color else brush + parent.template_color_picker(ptr, prop_name, value_slider=value_slider) + + +def brush_texpaint_common(panel, context, layout, brush, settings): + capabilities = brush.image_paint_capabilities + + col = layout.column() + + if brush.image_tool in {'DRAW', 'FILL'}: + if brush.blend not in {'ERASE_ALPHA', 'ADD_ALPHA'}: + if not brush.use_gradient: + panel.prop_unified_color_picker(col, context, brush, "color", value_slider=True) + + if settings.palette: + col.template_palette(settings, "palette", color=True) + + if brush.use_gradient: + col.label("Gradient Colors") + col.template_color_ramp(brush, "gradient", expand=True) + + if brush.image_tool != 'FILL': + col.label("Background Color") + row = col.row(align=True) + panel.prop_unified_color(row, context, brush, "secondary_color", text="") + + if brush.image_tool == 'DRAW': + col.prop(brush, "gradient_stroke_mode", text="Mode") + if brush.gradient_stroke_mode in {'SPACING_REPEAT', 'SPACING_CLAMP'}: + col.prop(brush, "grad_spacing") + elif brush.image_tool == 'FILL': + col.prop(brush, "gradient_fill_mode") + else: + row = col.row(align=True) + panel.prop_unified_color(row, context, brush, "color", text="") + if brush.image_tool == 'FILL': + col.prop(brush, "fill_threshold") + else: + panel.prop_unified_color(row, context, brush, "secondary_color", text="") + row.separator() + row.operator("paint.brush_colors_flip", icon='FILE_REFRESH', text="") + + elif brush.image_tool == 'SOFTEN': + col = layout.column(align=True) + col.row().prop(brush, "direction", expand=True) + col.separator() + col.prop(brush, "sharp_threshold") + col.prop(brush, "blur_kernel_radius") + col.separator() + col.prop(brush, "blur_mode") + elif brush.image_tool == 'MASK': + col.prop(brush, "weight", text="Mask Value", slider=True) + + elif brush.image_tool == 'CLONE': + col.separator() + col.prop(brush, "clone_image", text="Image") + col.prop(brush, "clone_alpha", text="Alpha") + + col.separator() + + if capabilities.has_radius: + row = col.row(align=True) + panel.prop_unified_size(row, context, brush, "size", slider=True, text="Radius") + panel.prop_unified_size(row, context, brush, "use_pressure_size") + + row = col.row(align=True) + + if capabilities.has_space_attenuation: + row.prop(brush, "use_space_attenuation", toggle=True, icon_only=True) + + panel.prop_unified_strength(row, context, brush, "strength", text="Strength") + panel.prop_unified_strength(row, context, brush, "use_pressure_strength") + + if brush.image_tool in {'DRAW', 'FILL'}: + col.separator() + col.prop(brush, "blend", text="Blend") + + col = layout.column() + + # use_accumulate + if capabilities.has_accumulate: + col = layout.column(align=True) + col.prop(brush, "use_accumulate") + + col.prop(brush, "use_alpha") + col.prop(brush, "use_gradient") + + col.separator() + col.template_ID(settings, "palette", new="palette.new") + # Used in both the View3D toolbar and texture properties def brush_texture_settings(layout, brush, sculpt): @@ -136,6 +239,7 @@ def brush_mask_texture_settings(layout, brush): layout.operator("brush.stencil_reset_transform").mask = True col = layout.column() + col.prop(brush, "use_pressure_masking", text="") col.label(text="Angle:") col.active = brush.brush_capabilities.has_texture_angle col.prop(mask_tex_slot, "angle", text="") diff --git a/release/scripts/startup/bl_ui/space_image.py b/release/scripts/startup/bl_ui/space_image.py index 97c89df..b3ba3b6 100644 --- a/release/scripts/startup/bl_ui/space_image.py +++ b/release/scripts/startup/bl_ui/space_image.py @@ -22,6 +22,7 @@ from bpy.types import Header, Menu, Panel from bl_ui.properties_paint_common import ( UnifiedPaintPanel, brush_texture_settings, + brush_texpaint_common, brush_mask_texture_settings, ) from bl_ui.properties_grease_pencil_common import GreasePencilPanel @@ -31,13 +32,11 @@ from bpy.app.translations import pgettext_iface as iface_ class ImagePaintPanel(UnifiedPaintPanel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'TOOLS' - bl_category = "Tools" -class BrushButtonsPanel: +class BrushButtonsPanel(UnifiedPaintPanel): bl_space_type = 'IMAGE_EDITOR' bl_region_type = 'TOOLS' - bl_category = "Tools" @classmethod def poll(cls, context): @@ -66,6 +65,7 @@ class IMAGE_MT_view(Menu): sima = context.space_data uv = sima.uv_editor toolsettings = context.tool_settings + paint = toolsettings.image_paint show_uvedit = sima.show_uvedit show_render = sima.show_render @@ -80,6 +80,8 @@ class IMAGE_MT_view(Menu): layout.prop(toolsettings, "show_uv_local_view") layout.prop(uv, "show_other_objects") + if paint.brush and (context.image_paint_object or sima.mode == 'PAINT'): + layout.prop(uv, "show_texpaint") layout.separator() @@ -140,6 +142,24 @@ class IMAGE_MT_select(Menu): layout.operator("uv.select_split") +class IMAGE_MT_brush(Menu): + bl_label = "Brush" + + def draw(self, context): + layout = self.layout + toolsettings = context.tool_settings + settings = toolsettings.image_paint + brush = settings.brush + + ups = context.tool_settings.unified_paint_settings + layout.prop(ups, "use_unified_size", text="Unified Size") + layout.prop(ups, "use_unified_strength", text="Unified Strength") + layout.separator() + + # brush tool + layout.prop_menu_enum(brush, "image_tool") + + class IMAGE_MT_image(Menu): bl_label = "Image" @@ -382,7 +402,6 @@ class IMAGE_HT_header(Header): mode = sima.mode show_render = sima.show_render - # show_paint = sima.show_paint show_uvedit = sima.show_uvedit show_maskedit = sima.show_maskedit @@ -401,8 +420,7 @@ class IMAGE_HT_header(Header): row = layout.row() row.template_ID(sima, "mask", new="mask.new") - if show_uvedit or show_maskedit: - layout.prop(sima, "pivot_point", icon_only=True) + layout.prop(sima, "pivot_point", icon_only=True) # uv editing if show_uvedit: @@ -462,6 +480,7 @@ class MASK_MT_editor_menus(Menu): show_uvedit = sima.show_uvedit show_maskedit = sima.show_maskedit + show_paint = sima.show_paint layout.menu("IMAGE_MT_view") @@ -469,6 +488,8 @@ class MASK_MT_editor_menus(Menu): layout.menu("IMAGE_MT_select") if show_maskedit: layout.menu("MASK_MT_select") + if show_paint: + layout.menu("IMAGE_MT_brush") if ima and ima.is_dirty: layout.menu("IMAGE_MT_image", text="Image*") @@ -658,49 +679,27 @@ class IMAGE_PT_tools_transform_uvs(Panel, UVToolsPanel): col.operator("transform.shear") -class IMAGE_PT_paint(Panel, ImagePaintPanel): +class IMAGE_PT_paint(Panel, BrushButtonsPanel): bl_label = "Paint" - - @classmethod - def poll(cls, context): - sima = context.space_data - return sima.show_paint + bl_category = "Tools" def draw(self, context): layout = self.layout - toolsettings = context.tool_settings.image_paint - brush = toolsettings.brush + settings = context.tool_settings.image_paint + brush = settings.brush col = layout.colum @@ Diff output truncated at 10240 characters. @@ _______________________________________________ Bf-blender-cvs mailing list [email protected] http://lists.blender.org/mailman/listinfo/bf-blender-cvs
