diff options
author | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-05-11 00:34:23 +0400 |
---|---|---|
committer | Nicholas Bishop <nicholasbishop@gmail.com> | 2012-05-11 00:34:23 +0400 |
commit | 0f57b0f1e514c8f13f2fcfeb71c6291640f88794 (patch) | |
tree | 9a8538f463a31b82a1b3639f74bb526645390d6c /source/blender/modifiers/intern/MOD_multires.c | |
parent | f4929ad609727354bb6356aef788e8f2fa92d341 (diff) |
Copy GridPaintMask to vertex paint mask when applying multires.
Adds new subsurf_copy_grid_paint_mask() function similar to
subsurf_copy_grid_hidden().
Diffstat (limited to 'source/blender/modifiers/intern/MOD_multires.c')
-rw-r--r-- | source/blender/modifiers/intern/MOD_multires.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/source/blender/modifiers/intern/MOD_multires.c b/source/blender/modifiers/intern/MOD_multires.c index 13028953c1c..ae5ac9ac718 100644 --- a/source/blender/modifiers/intern/MOD_multires.c +++ b/source/blender/modifiers/intern/MOD_multires.c @@ -100,10 +100,14 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm, cddm = CDDM_copy(result); - /* copy hidden flag to vertices */ + /* copy hidden/masks to vertices */ if (!useRenderParams) { struct MDisps *mdisps; + struct GridPaintMask *grid_paint_mask; + mdisps = CustomData_get_layer(&me->ldata, CD_MDISPS); + grid_paint_mask = CustomData_get_layer(&me->ldata, CD_GRID_PAINT_MASK); + if (mdisps) { subsurf_copy_grid_hidden(result, me->mpoly, cddm->getVertArray(cddm), @@ -116,6 +120,15 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob, DerivedMesh *dm, cddm->getPolyArray(cddm), cddm->getNumPolys(cddm)); } + if(grid_paint_mask) { + float *paint_mask = CustomData_add_layer(&cddm->vertData, + CD_PAINT_MASK, + CD_CALLOC, NULL, + cddm->getNumVerts(cddm)); + + subsurf_copy_grid_paint_mask(result, me->mpoly, + paint_mask, grid_paint_mask); + } } result->release(result); |