Modifiers: pass the ob->data to the modifier if the mesh param is NULL
This enables the modifiers to access things like vertex groups. Care should be taken to not modifier the mesh itself in this case.
This commit is contained in:
parent
9a79178c2e
commit
002dcd2001
|
@ -109,11 +109,11 @@ static void deformVerts(ModifierData *md, const ModifierEvalContext *ctx,
|
|||
int numVerts)
|
||||
{
|
||||
LatticeModifierData *lmd = (LatticeModifierData *) md;
|
||||
|
||||
struct Mesh *mesh_src = mesh ? mesh : ctx->object->data;
|
||||
|
||||
modifier_vgroup_cache(md, vertexCos); /* if next modifier needs original vertices */
|
||||
|
||||
lattice_deform_verts(lmd->object, ctx->object, mesh,
|
||||
lattice_deform_verts(lmd->object, ctx->object, mesh_src,
|
||||
vertexCos, numVerts, lmd->name, lmd->strength);
|
||||
}
|
||||
|
||||
|
|
|
@ -40,6 +40,7 @@
|
|||
#include "BLI_utildefines.h"
|
||||
|
||||
#include "BKE_cdderivedmesh.h"
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_mesh.h"
|
||||
#include "BKE_library_query.h"
|
||||
#include "BKE_modifier.h"
|
||||
|
@ -47,6 +48,8 @@
|
|||
|
||||
#include "MOD_util.h"
|
||||
|
||||
#include "bmesh.h"
|
||||
|
||||
#define BEND_EPS 0.000001f
|
||||
|
||||
/* Re-maps the indicies for X Y Z by shifting them up and wrapping, such that
|
||||
|
@ -389,16 +392,21 @@ static void deformVerts(ModifierData *md, const ModifierEvalContext *ctx,
|
|||
float (*vertexCos)[3],
|
||||
int numVerts)
|
||||
{
|
||||
SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh, vertexCos, numVerts);
|
||||
Mesh *mesh_src = mesh ? mesh : ctx->object->data;
|
||||
SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts);
|
||||
}
|
||||
|
||||
static void deformVertsEM(ModifierData *md, const ModifierEvalContext *ctx,
|
||||
struct BMEditMesh *UNUSED(editData),
|
||||
struct BMEditMesh *editData,
|
||||
struct Mesh *mesh,
|
||||
float (*vertexCos)[3],
|
||||
int numVerts)
|
||||
{
|
||||
SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh, vertexCos, numVerts);
|
||||
Mesh *mesh_src = mesh;
|
||||
if (!mesh) {
|
||||
mesh_src = BKE_bmesh_to_mesh_nomain(editData->bm, &(struct BMeshToMeshParams){0});
|
||||
}
|
||||
SimpleDeformModifier_do((SimpleDeformModifierData *)md, ctx->object, mesh_src, vertexCos, numVerts);
|
||||
}
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue