Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2020-08-26 16:28:44 +0300
committerCampbell Barton <ideasman42@gmail.com>2020-08-26 16:28:44 +0300
commit08ec9b71df3582d0797778baf2ff185c6ea9d3ab (patch)
treea527c90c584510b9ae35e2678d8cc3f76fd0f5da
parent826bd46e661b780c294c1dd076c563f33420e42f (diff)
parente0772c6607ae6cd48193101b39d7332cb76ab2c9 (diff)
Merge branch 'blender-v2.90-release' into master
-rw-r--r--source/blender/editors/armature/meshlaplacian.c4
-rw-r--r--source/blender/editors/space_buttons/buttons_context.c4
-rw-r--r--source/blender/modifiers/intern/MOD_meshdeform.c20
3 files changed, 17 insertions, 11 deletions
diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c
index 75ffd31854a..ceacd3333d5 100644
--- a/source/blender/editors/armature/meshlaplacian.c
+++ b/source/blender/editors/armature/meshlaplacian.c
@@ -37,6 +37,7 @@
#include "BKE_bvhutils.h"
#include "BKE_mesh.h"
#include "BKE_mesh_runtime.h"
+#include "BKE_mesh_wrapper.h"
#include "BKE_modifier.h"
#include "ED_armature.h"
@@ -1761,6 +1762,9 @@ void ED_mesh_deform_bind_callback(MeshDeformModifierData *mmd,
memset(&mdb, 0, sizeof(MeshDeformBind));
+ /* No need to support other kinds of mesh data as binding is a one-off action. */
+ BKE_mesh_wrapper_ensure_mdata(cagemesh);
+
/* get mesh and cage mesh */
mdb.vertexcos = MEM_callocN(sizeof(float[3]) * totvert, "MeshDeformCos");
mdb.totvert = totvert;
diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c
index 3976e18d70c..e567b3ca54c 100644
--- a/source/blender/editors/space_buttons/buttons_context.c
+++ b/source/blender/editors/space_buttons/buttons_context.c
@@ -795,8 +795,12 @@ const char *buttons_context_dir[] = {
"line_style",
"collection",
"gpencil",
+#ifdef WITH_HAIR_NODES
"hair",
+#endif
+#ifdef WITH_PARTICLE_NODES
"pointcloud",
+#endif
"volume",
NULL,
};
diff --git a/source/blender/modifiers/intern/MOD_meshdeform.c b/source/blender/modifiers/intern/MOD_meshdeform.c
index 79d666d9e2a..4dee70608f8 100644
--- a/source/blender/modifiers/intern/MOD_meshdeform.c
+++ b/source/blender/modifiers/intern/MOD_meshdeform.c
@@ -347,9 +347,8 @@ static void meshdeformModifier_do(ModifierData *md,
Mesh *cagemesh;
MDeformVert *dvert = NULL;
float imat[4][4], cagemat[4][4], iobmat[4][4], icagemat[3][3], cmat[4][4];
- float co[3], (*dco)[3] = NULL, (*bindcagecos)[3];
+ float(*dco)[3] = NULL, (*bindcagecos)[3];
int a, totvert, totcagevert, defgrp_index;
- float(*cagecos)[3] = NULL;
MeshdeformUserdata data;
static int recursive_bind_sentinel = 0;
@@ -400,7 +399,7 @@ static void meshdeformModifier_do(ModifierData *md,
/* verify we have compatible weights */
totvert = numVerts;
- totcagevert = cagemesh->totvert;
+ totcagevert = BKE_mesh_wrapper_vert_len(cagemesh);
if (mmd->totvert != totvert) {
BKE_modifier_set_error(md, "Vertices changed from %d to %d", mmd->totvert, totvert);
@@ -416,20 +415,20 @@ static void meshdeformModifier_do(ModifierData *md,
goto finally;
}
- /* setup deformation data */
- cagecos = BKE_mesh_vert_coords_alloc(cagemesh, NULL);
- bindcagecos = (float(*)[3])mmd->bindcagecos;
-
/* We allocate 1 element extra to make it possible to
* load the values to SSE registers, which are float4.
*/
dco = MEM_calloc_arrayN((totcagevert + 1), sizeof(*dco), "MDefDco");
zero_v3(dco[totcagevert]);
+
+ /* setup deformation data */
+ BKE_mesh_wrapper_vert_coords_copy(cagemesh, dco, totcagevert);
+ bindcagecos = (float(*)[3])mmd->bindcagecos;
+
for (a = 0; a < totcagevert; a++) {
/* get cage vertex in world space with binding transform */
- copy_v3_v3(co, cagecos[a]);
-
- mul_m4_v3(mmd->bindmat, co);
+ float co[3];
+ mul_v3_m4v3(co, mmd->bindmat, dco[a]);
/* compute difference with world space bind coord */
sub_v3_v3v3(dco[a], co, bindcagecos[a]);
}
@@ -453,7 +452,6 @@ static void meshdeformModifier_do(ModifierData *md,
finally:
MEM_SAFE_FREE(dco);
- MEM_SAFE_FREE(cagecos);
}
static void deformVerts(ModifierData *md,