diff options
author | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-05-22 18:53:18 +0300 |
---|---|---|
committer | Brecht Van Lommel <brechtvanlommel@gmail.com> | 2018-05-22 19:43:20 +0300 |
commit | 2fb9a50a4f740fdbec12d3e89fb5a927f10c60e1 (patch) | |
tree | 13891c5b5b1ba33449e4e114a79a2f88aa760ced /source/blender/blenkernel/intern/modifier.c | |
parent | c080c096ce38ffd7aca46f97174612fe8773bb08 (diff) |
Fix T55146: hair + subsurf modifier not positioning hair correctly.
ORIGSPACE data was not being preserved correctly through subsurf.
Diffstat (limited to 'source/blender/blenkernel/intern/modifier.c')
-rw-r--r-- | source/blender/blenkernel/intern/modifier.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c index b49df101fe6..c43a2e3b8ec 100644 --- a/source/blender/blenkernel/intern/modifier.c +++ b/source/blender/blenkernel/intern/modifier.c @@ -890,7 +890,7 @@ void modifier_deformVerts(struct ModifierData *md, const ModifierEvalContext *ct else { DerivedMesh *dm = NULL; if (mesh) { - dm = CDDM_from_mesh(mesh); + dm = CDDM_from_mesh_ex(mesh, CD_REFERENCE, CD_MASK_EVERYTHING); } mti->deformVerts_DM(md, ctx, dm, vertexCos, numVerts); @@ -926,7 +926,7 @@ void modifier_deformMatrices(struct ModifierData *md, const ModifierEvalContext else { DerivedMesh *dm = NULL; if (mesh) { - dm = CDDM_from_mesh(mesh); + dm = CDDM_from_mesh_ex(mesh, CD_REFERENCE, CD_MASK_EVERYTHING); } mti->deformMatrices_DM(md, ctx, dm, vertexCos, defMats, numVerts); @@ -949,7 +949,7 @@ void modifier_deformVertsEM(struct ModifierData *md, const ModifierEvalContext * else { DerivedMesh *dm = NULL; if (mesh) { - dm = CDDM_from_mesh(mesh); + dm = CDDM_from_mesh_ex(mesh, CD_REFERENCE, CD_MASK_EVERYTHING); } mti->deformVertsEM_DM(md, ctx, editData, dm, vertexCos, numVerts); @@ -972,7 +972,7 @@ void modifier_deformMatricesEM(struct ModifierData *md, const ModifierEvalContex else { DerivedMesh *dm = NULL; if (mesh) { - dm = CDDM_from_mesh(mesh); + dm = CDDM_from_mesh_ex(mesh, CD_REFERENCE, CD_MASK_EVERYTHING); } mti->deformMatricesEM_DM(md, ctx, editData, dm, vertexCos, defMats, numVerts); @@ -992,7 +992,7 @@ struct Mesh *modifier_applyModifier(struct ModifierData *md, const ModifierEvalC return mti->applyModifier(md, ctx, mesh); } else { - DerivedMesh *dm = CDDM_from_mesh(mesh); + DerivedMesh *dm = CDDM_from_mesh_ex(mesh, CD_REFERENCE, CD_MASK_EVERYTHING); DerivedMesh *ndm = mti->applyModifier_DM(md, ctx, dm); @@ -1028,7 +1028,7 @@ struct Mesh *modifier_applyModifierEM(struct ModifierData *md, const ModifierEva return mti->applyModifierEM(md, ctx, editData, mesh); } else { - DerivedMesh *dm = CDDM_from_mesh(mesh); + DerivedMesh *dm = CDDM_from_mesh_ex(mesh, CD_REFERENCE, CD_MASK_EVERYTHING); DerivedMesh *ndm = mti->applyModifierEM_DM(md, ctx, editData, dm); @@ -1164,7 +1164,7 @@ struct DerivedMesh *modifier_applyModifier_DM_deprecated(struct ModifierData *md struct Mesh *new_mesh = mti->applyModifier(md, ctx, mesh); /* Make a DM that doesn't reference new_mesh so we can free the latter. */ - DerivedMesh *ndm = CDDM_from_mesh_ex(new_mesh, CD_DUPLICATE); + DerivedMesh *ndm = CDDM_from_mesh_ex(new_mesh, CD_DUPLICATE, CD_MASK_EVERYTHING); if (new_mesh != mesh) { BKE_id_free(NULL, new_mesh); @@ -1197,7 +1197,7 @@ struct DerivedMesh *modifier_applyModifierEM_DM_deprecated(struct ModifierData * struct Mesh *new_mesh = mti->applyModifierEM(md, ctx, editData, mesh); /* Make a DM that doesn't reference new_mesh so we can free the latter. */ - DerivedMesh *ndm = CDDM_from_mesh_ex(new_mesh, CD_DUPLICATE); + DerivedMesh *ndm = CDDM_from_mesh_ex(new_mesh, CD_DUPLICATE, CD_MASK_EVERYTHING); if (new_mesh != mesh) { BKE_id_free(NULL, new_mesh); |