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:
authorJacques Lucke <jacques@blender.org>2022-03-02 19:13:57 +0300
committerJacques Lucke <jacques@blender.org>2022-03-02 19:13:57 +0300
commit037e1ad140d5c0b57d54f64e32a00f7961b7cc17 (patch)
tree88b39d9ab0920150a632dc6315aacd771306b20f /source/blender/blenkernel/intern/particle.c
parentd86f80f42ad8bb40aeb154980e5e0e2fa77412e2 (diff)
parent2fb31f34af84c39116742e20a12222099cd0ff9a (diff)
Merge branch 'blender-v3.1-release'
Diffstat (limited to 'source/blender/blenkernel/intern/particle.c')
-rw-r--r--source/blender/blenkernel/intern/particle.c33
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);
}
}
}