diff options
author | Jacques Lucke <jacques@blender.org> | 2022-03-02 19:13:57 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-03-02 19:13:57 +0300 |
commit | 037e1ad140d5c0b57d54f64e32a00f7961b7cc17 (patch) | |
tree | 88b39d9ab0920150a632dc6315aacd771306b20f /source/blender/blenkernel/intern/particle.c | |
parent | d86f80f42ad8bb40aeb154980e5e0e2fa77412e2 (diff) | |
parent | 2fb31f34af84c39116742e20a12222099cd0ff9a (diff) |
Merge branch 'blender-v3.1-release'
Diffstat (limited to 'source/blender/blenkernel/intern/particle.c')
-rw-r--r-- | source/blender/blenkernel/intern/particle.c | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c index 56d640b8ac0..c47b22dcd34 100644 --- a/source/blender/blenkernel/intern/particle.c +++ b/source/blender/blenkernel/intern/particle.c @@ -1657,7 +1657,8 @@ static void interpolate_pathcache(ParticleCacheKey *first, float t, ParticleCach /* Particles on a dm */ /************************************************/ -void psys_interpolate_face(MVert *mvert, +void psys_interpolate_face(Mesh *mesh, + MVert *mvert, const float (*vert_normals)[3], MFace *mface, MTFace *tface, @@ -1777,6 +1778,7 @@ void psys_interpolate_face(MVert *mvert, else { interp_v3_v3v3v3(orco, o1, o2, o3, w); } + BKE_mesh_orco_verts_transform(mesh, (float(*)[3])orco, 1, true); } else { copy_v3_v3(orco, vec); @@ -2121,6 +2123,7 @@ void psys_particle_on_dm(Mesh *mesh_final, if (orco) { if (orcodata) { copy_v3_v3(orco, orcodata[mapindex]); + BKE_mesh_orco_verts_transform(mesh_final, (float(*)[3])orco, 1, true); } else { copy_v3_v3(orco, vec); @@ -2146,8 +2149,18 @@ void psys_particle_on_dm(Mesh *mesh_final, } if (from == PART_FROM_VOLUME) { - psys_interpolate_face( - mvert, vert_normals, mface, mtface, orcodata, mapfw, vec, tmpnor, utan, vtan, orco); + psys_interpolate_face(mesh_final, + mvert, + vert_normals, + mface, + mtface, + orcodata, + mapfw, + vec, + tmpnor, + utan, + vtan, + orco); if (nor) { copy_v3_v3(nor, tmpnor); } @@ -2159,8 +2172,18 @@ void psys_particle_on_dm(Mesh *mesh_final, add_v3_v3(vec, tmpnor); } else { - psys_interpolate_face( - mvert, vert_normals, mface, mtface, orcodata, mapfw, vec, nor, utan, vtan, orco); + psys_interpolate_face(mesh_final, + mvert, + vert_normals, + mface, + mtface, + orcodata, + mapfw, + vec, + nor, + utan, + vtan, + orco); } } } |