diff options
-rw-r--r-- | source/blender/blenkernel/intern/displist.cc | 5 | ||||
-rw-r--r-- | source/blender/modifiers/intern/MOD_ui_common.c | 27 |
2 files changed, 31 insertions, 1 deletions
diff --git a/source/blender/blenkernel/intern/displist.cc b/source/blender/blenkernel/intern/displist.cc index 2b4bd3eb8f6..f8117a89198 100644 --- a/source/blender/blenkernel/intern/displist.cc +++ b/source/blender/blenkernel/intern/displist.cc @@ -532,6 +532,11 @@ static ModifierData *curve_get_tessellate_point(const Scene *scene, return pretessellatePoint; } + if (md->type == eModifierType_Smooth) { + /* Smooth modifier works with mesh edges explicitly (so needs tesselation, thus cannnot work on control points). */ + md->mode &= ~eModifierMode_ApplyOnSpline; + return pretessellatePoint; + } if (ELEM(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) { pretessellatePoint = md; diff --git a/source/blender/modifiers/intern/MOD_ui_common.c b/source/blender/modifiers/intern/MOD_ui_common.c index c027cae8cdb..e882435077a 100644 --- a/source/blender/modifiers/intern/MOD_ui_common.c +++ b/source/blender/modifiers/intern/MOD_ui_common.c @@ -326,8 +326,33 @@ static void modifier_panel_header(const bContext *C, Panel *panel) } } /* Tessellation point for curve-typed objects. */ else if (ELEM(ob->type, OB_CURVES_LEGACY, OB_SURF, OB_FONT)) { + /* Smooth modifier can work with tessellated curves only (works on mesh edges explicitly). */ + if (md->type == eModifierType_Smooth) { + /* Add button (appearing to be OFF) and add tip why this can't be changed. */ + sub = uiLayoutRow(row, true); + uiBlock *block = uiLayoutGetBlock(sub); + static int apply_on_spline_always_off_hack = 0; + uiBut *but = uiDefIconButBitI(block, + UI_BTYPE_TOGGLE, + eModifierMode_ApplyOnSpline, + 0, + ICON_SURFACE_DATA, + 0, + 0, + UI_UNIT_X - 2, + UI_UNIT_Y, + &apply_on_spline_always_off_hack, + 0.0, + 0.0, + 0.0, + 0.0, + TIP_("Apply on Spline")); + UI_but_disable( + but, TIP_("This modifier can only deform filled curve/surface, not the control points")); + buttons_number++; + } /* Some modifiers can work with pre-tessellated curves only. */ - if (ELEM(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) { + else if (ELEM(md->type, eModifierType_Hook, eModifierType_Softbody, eModifierType_MeshDeform)) { /* Add button (appearing to be ON) and add tip why this can't be changed. */ sub = uiLayoutRow(row, true); uiBlock *block = uiLayoutGetBlock(sub); |