diff --git a/source/blender/src/editface.c b/source/blender/src/editface.c index f3c4c258848..9024b10691f 100644 --- a/source/blender/src/editface.c +++ b/source/blender/src/editface.c @@ -90,6 +90,7 @@ #include "mydevice.h" #include "blendef.h" #include "butspace.h" +#include "multires.h" #include "BSE_trans_types.h" @@ -610,9 +611,16 @@ void default_uv(float uv[][2], float size) void make_tfaces(Mesh *me) { - if(!me->mtface) - me->mtface= CustomData_add_layer(&me->fdata, CD_MTFACE, CD_DEFAULT, - NULL, me->totface); + if(!me->mtface) { + if(me->mr) { + multires_add_layer(me, &me->mr->fdata, CD_MTFACE, + CustomData_number_of_layers(&me->fdata, CD_MTFACE)); + } + else { + me->mtface= CustomData_add_layer(&me->fdata, CD_MTFACE, CD_DEFAULT, + NULL, me->totface); + } + } } void reveal_tface() diff --git a/source/blender/src/multires-firstlevel.c b/source/blender/src/multires-firstlevel.c index 6c32a00ccd5..ce23caa4816 100644 --- a/source/blender/src/multires-firstlevel.c +++ b/source/blender/src/multires-firstlevel.c @@ -346,6 +346,8 @@ void multires_delete_layer(Mesh *me, CustomData *cd, const int type, int n) if(me && me->mr && cd) { MultiresLevel *lvl1= me->mr->levels.first; + multires_update_levels(me); + CustomData_set_layer_active(cd, type, n); CustomData_free_layer_active(cd, type, lvl1->totface); @@ -357,6 +359,8 @@ MultiresLevel *current_level(Multires *mr); void multires_add_layer(Mesh *me, CustomData *cd, const int type, const int n) { if(me && me->mr && cd) { + multires_update_levels(me); + if(CustomData_has_layer(cd, type)) CustomData_add_layer(cd, type, CD_DUPLICATE, CustomData_get_layer(cd, type), current_level(me->mr)->totface);