Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2016-03-07 03:24:03 +0300
committerCampbell Barton <ideasman42@gmail.com>2016-03-07 03:24:03 +0300
commitd086f6aa5c26d445aef1ebd04e6c8501f6189d91 (patch)
treef1e2db6aa603099ca3152087dbe31412c6a8d1dc /source/blender/blenkernel/intern/shrinkwrap.c
parent5fd0c1ed3f54bf960a7f79e0724ef56f8335de18 (diff)
Shrink Wrap modifier: invert vgroup option
D1839 from @Orgold
Diffstat (limited to 'source/blender/blenkernel/intern/shrinkwrap.c')
-rw-r--r--source/blender/blenkernel/intern/shrinkwrap.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c
index bbed4ccfae7..d40d83aa4eb 100644
--- a/source/blender/blenkernel/intern/shrinkwrap.c
+++ b/source/blender/blenkernel/intern/shrinkwrap.c
@@ -96,6 +96,11 @@ static void shrinkwrap_calc_nearest_vertex(ShrinkwrapCalcData *calc)
float *co = calc->vertexCos[i];
float tmp_co[3];
float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup);
+
+ if (calc->invert_vgroup) {
+ weight = 1.0f - weight;
+ }
+
if (weight == 0.0f) {
continue;
}
@@ -411,6 +416,11 @@ static void shrinkwrap_calc_nearest_surface_point(ShrinkwrapCalcData *calc)
float *co = calc->vertexCos[i];
float tmp_co[3];
float weight = defvert_array_find_weight_safe(calc->dvert, i, calc->vgroup);
+
+ if (calc->invert_vgroup) {
+ weight = 1.0f - weight;
+ }
+
if (weight == 0.0f) continue;
/* Convert the vertex to tree coordinates */
@@ -480,6 +490,7 @@ void shrinkwrapModifier_deform(ShrinkwrapModifierData *smd, Object *ob, DerivedM
calc.ob = ob;
calc.numVerts = numVerts;
calc.vertexCos = vertexCos;
+ calc.invert_vgroup = (smd->shrinkOpts & MOD_SHRINKWRAP_INVERT_VGROUP) != 0;
/* DeformVertex */
calc.vgroup = defgroup_name_index(calc.ob, calc.smd->vgroup_name);