Fix for [#26322] x-mirror gives wrong results while editing hair particles
* Tsk! Particle mirroring was working fine for the case where subsurf modifier was before particles (orcos are transformed in this case), but not the other way around (unnecessary inverse transform of orcos). * Not really satisfied with having to check for the CD_ORIGINDEX layer, so if Brecht or somebody else knows a better way then please change this :)
This commit is contained in:
@@ -3347,7 +3347,8 @@ static void psys_face_mat(Object *ob, DerivedMesh *dm, ParticleData *pa, float m
|
||||
|
||||
/* ugly hack to use non-transformed orcos, since only those
|
||||
* give symmetric results for mirroring in particle mode */
|
||||
transform_mesh_orco_verts(ob->data, v, 3, 1);
|
||||
if(DM_get_vert_data_layer(dm, CD_ORIGINDEX))
|
||||
transform_mesh_orco_verts(ob->data, v, 3, 1);
|
||||
}
|
||||
else {
|
||||
dm->getVertCo(dm,mface->v1,v[0]);
|
||||
@@ -3375,7 +3376,8 @@ void psys_mat_hair_to_orco(Object *ob, DerivedMesh *dm, short from, ParticleData
|
||||
psys_particle_on_dm(dm, from, pa->num, pa->num_dmcache, pa->fuv, pa->foffset, vec, 0, 0, 0, orco, 0);
|
||||
|
||||
/* see psys_face_mat for why this function is called */
|
||||
transform_mesh_orco_verts(ob->data, &orco, 1, 1);
|
||||
if(DM_get_vert_data_layer(dm, CD_ORIGINDEX))
|
||||
transform_mesh_orco_verts(ob->data, &orco, 1, 1);
|
||||
VECCOPY(hairmat[3],orco);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user