Fix T68878: Update shapekeys during transformation
Only use the hack in `key_block_get_data` for the bmesh shapekey. The remaining shapekeys can use the original offset values. Differential Revision: https://developer.blender.org/D6516
This commit is contained in:
parent
cfdb5b9a8b
commit
bde215a60c
Notes:
blender-bot
2023-02-14 03:44:41 +01:00
Referenced by issue #68878, Shape Keys do not update properly
|
@ -820,7 +820,7 @@ static void key_evaluate_relative(const int start,
|
|||
KeyBlock *refb;
|
||||
float weight,
|
||||
*weights = per_keyblock_weights ? per_keyblock_weights[keyblock_index] : NULL;
|
||||
char *freefrom = NULL, *freereffrom = NULL;
|
||||
char *freefrom = NULL;
|
||||
|
||||
/* reference now can be any block */
|
||||
refb = BLI_findlink(&key->block, kb->relative);
|
||||
|
@ -830,7 +830,10 @@ static void key_evaluate_relative(const int start,
|
|||
|
||||
poin = basispoin;
|
||||
from = key_block_get_data(key, actkb, kb, &freefrom);
|
||||
reffrom = key_block_get_data(key, actkb, refb, &freereffrom);
|
||||
|
||||
/* For meshes, use the original values instead of the bmesh values to
|
||||
* maintain a constant offset. */
|
||||
reffrom = refb->data;
|
||||
|
||||
poin += start * poinsize;
|
||||
reffrom += key->elemsize * start; // key elemsize yes!
|
||||
|
@ -876,9 +879,6 @@ static void key_evaluate_relative(const int start,
|
|||
if (freefrom) {
|
||||
MEM_freeN(freefrom);
|
||||
}
|
||||
if (freereffrom) {
|
||||
MEM_freeN(freereffrom);
|
||||
}
|
||||
BLI_assert(!"invalid 'cp[1]'");
|
||||
return;
|
||||
}
|
||||
|
@ -900,9 +900,6 @@ static void key_evaluate_relative(const int start,
|
|||
if (freefrom) {
|
||||
MEM_freeN(freefrom);
|
||||
}
|
||||
if (freereffrom) {
|
||||
MEM_freeN(freereffrom);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue