diff options
Diffstat (limited to 'source/blender/editors/physics/particle_edit.c')
-rw-r--r-- | source/blender/editors/physics/particle_edit.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index f1e6f02cb39..ea35ad6dcd0 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -1463,26 +1463,28 @@ void recalc_emitter_field(Depsgraph *UNUSED(depsgraph), Object *UNUSED(ob), Part vec = edit->emitter_cosnos; nor = vec + 3; + const float(*vert_normals)[3] = BKE_mesh_vertex_normals_ensure(mesh); + for (i = 0; i < totface; i++, vec += 6, nor += 6) { MFace *mface = &mesh->mface[i]; MVert *mvert; mvert = &mesh->mvert[mface->v1]; copy_v3_v3(vec, mvert->co); - copy_v3fl_v3s(nor, mvert->no); + copy_v3_v3(nor, vert_normals[mface->v1]); mvert = &mesh->mvert[mface->v2]; add_v3_v3v3(vec, vec, mvert->co); - add_v3fl_v3fl_v3s(nor, nor, mvert->no); + add_v3_v3(nor, vert_normals[mface->v2]); mvert = &mesh->mvert[mface->v3]; add_v3_v3v3(vec, vec, mvert->co); - add_v3fl_v3fl_v3s(nor, nor, mvert->no); + add_v3_v3(nor, vert_normals[mface->v3]); if (mface->v4) { mvert = &mesh->mvert[mface->v4]; add_v3_v3v3(vec, vec, mvert->co); - add_v3fl_v3fl_v3s(nor, nor, mvert->no); + add_v3_v3(nor, vert_normals[mface->v4]); mul_v3_fl(vec, 0.25); } |