From 15add11595fcefae604ec6980bcd840e3705232a Mon Sep 17 00:00:00 2001 From: Bastien Montagne Date: Mon, 26 Nov 2018 20:43:35 +0100 Subject: MOD_shrinkwrap: do not compute mesh when not needed. This modifier only uses mesh to get vgroup, which is only needed in case modified object is indeed a mesh! Building a mesh from curve here is not only useless and time-consuming, it will also easily fail the assert about same number of vertices! Note that surface_project and subsurf option also need more work at some point, but this is probably not that urgent for now. Also, use MOD_get_vgroup() helper in modifier code itself and pass resulting MDeformVert & index to BKE_shrinkwrap's `shrinkwrapModifier_deform()`, this is simpler and avoids duplicating vgroup handling code. Related to T57972. --- source/blender/blenkernel/BKE_shrinkwrap.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source/blender/blenkernel/BKE_shrinkwrap.h') diff --git a/source/blender/blenkernel/BKE_shrinkwrap.h b/source/blender/blenkernel/BKE_shrinkwrap.h index caba7a6f284..3ce5aa323c5 100644 --- a/source/blender/blenkernel/BKE_shrinkwrap.h +++ b/source/blender/blenkernel/BKE_shrinkwrap.h @@ -104,8 +104,9 @@ bool BKE_shrinkwrap_init_tree(struct ShrinkwrapTreeData *data, Mesh *mesh, int s void BKE_shrinkwrap_free_tree(struct ShrinkwrapTreeData *data); /* Implementation of the Shrinkwrap modifier */ -void shrinkwrapModifier_deform(struct ShrinkwrapModifierData *smd, struct Scene *scene, struct Object *ob, struct Mesh *mesh, - float (*vertexCos)[3], int numVerts); +void shrinkwrapModifier_deform( + struct ShrinkwrapModifierData *smd, struct Scene *scene, struct Object *ob, struct Mesh *mesh, + struct MDeformVert *dvert, const int defgrp_index, float (*vertexCos)[3], int numVerts); /* * This function casts a ray in the given BVHTree.. but it takes into consideration the space_transform, that is: -- cgit v1.2.3