Index: source/blender/modifiers/intern/MOD_simpledeform.c =================================================================== --- source/blender/modifiers/intern/MOD_simpledeform.c (revision 32395) +++ source/blender/modifiers/intern/MOD_simpledeform.c (working copy) @@ -77,6 +77,28 @@ } } + +static void simpleDeform_to_sphere(const float factor, const float dcut[3], float *co) +{ + float x = co[0], y = co[1], z = co[2]; + float r = sqrt(x*x+y*y+z*z); + if(r != 0.0f ) + { + co[0] =x+factor*(x/r-x); + co[1] =y+factor*(y/r-y); + co[2] =z+factor*(z/r-z); + } + + if(dcut) + { + co[0] += dcut[0]; + co[1] += dcut[1]; + co[2] += dcut[2]; + } +} + + + static void simpleDeform_stretch(const float factor, const float dcut[3], float *co) { float x = co[0], y = co[1], z = co[2]; @@ -223,10 +245,11 @@ switch(smd->mode) { - case MOD_SIMPLEDEFORM_MODE_TWIST: simpleDeform_callback = simpleDeform_twist; break; - case MOD_SIMPLEDEFORM_MODE_BEND: simpleDeform_callback = simpleDeform_bend; break; - case MOD_SIMPLEDEFORM_MODE_TAPER: simpleDeform_callback = simpleDeform_taper; break; - case MOD_SIMPLEDEFORM_MODE_STRETCH: simpleDeform_callback = simpleDeform_stretch; break; + case MOD_SIMPLEDEFORM_MODE_TWIST: simpleDeform_callback = simpleDeform_twist; break; + case MOD_SIMPLEDEFORM_MODE_BEND: simpleDeform_callback = simpleDeform_bend; break; + case MOD_SIMPLEDEFORM_MODE_TAPER: simpleDeform_callback = simpleDeform_taper; break; + case MOD_SIMPLEDEFORM_MODE_STRETCH: simpleDeform_callback = simpleDeform_stretch; break; + case MOD_SIMPLEDEFORM_MODE_TOSPHERE: simpleDeform_callback = simpleDeform_to_sphere; break; default: return; //No simpledeform mode? } Index: source/blender/makesdna/DNA_modifier_types.h =================================================================== --- source/blender/makesdna/DNA_modifier_types.h (revision 32395) +++ source/blender/makesdna/DNA_modifier_types.h (working copy) @@ -676,6 +676,7 @@ #define MOD_SIMPLEDEFORM_MODE_BEND 2 #define MOD_SIMPLEDEFORM_MODE_TAPER 3 #define MOD_SIMPLEDEFORM_MODE_STRETCH 4 +#define MOD_SIMPLEDEFORM_MODE_TOSPHERE 5 #define MOD_SIMPLEDEFORM_LOCK_AXIS_X (1<<0) #define MOD_SIMPLEDEFORM_LOCK_AXIS_Y (1<<1) Index: source/blender/makesrna/intern/rna_modifier.c =================================================================== --- source/blender/makesrna/intern/rna_modifier.c (revision 32395) +++ source/blender/makesrna/intern/rna_modifier.c (working copy) @@ -2021,6 +2021,7 @@ {MOD_SIMPLEDEFORM_MODE_BEND, "BEND", 0, "Bend", ""}, {MOD_SIMPLEDEFORM_MODE_TAPER, "TAPER", 0, "Taper", ""}, {MOD_SIMPLEDEFORM_MODE_STRETCH, "STRETCH", 0, "Stretch", ""}, + {MOD_SIMPLEDEFORM_MODE_TOSPHERE, "TO-SPHERE", 0, "To Sphere", ""}, {0, NULL, 0, NULL, NULL}}; srna= RNA_def_struct(brna, "SimpleDeformModifier", "Modifier");