[Bf-blender-cvs] [64a4d4e] master: Fix for particle instance initial frames.

Lukas Tönne noreply at git.blender.org
Tue Jan 20 09:53:00 CET 2015


Commit: 64a4d4ed2564e8a0dad6bfc1117812b2feabbfa8
Author: Lukas Tönne
Date:   Mon Nov 17 17:45:21 2014 +0100
Branches: master
https://developer.blender.org/rB64a4d4ed2564e8a0dad6bfc1117812b2feabbfa8

Fix for particle instance initial frames.

These were not orthonormal and tended to flip with changing hair
direction, now use the particle hair matrix which is stable wrt. the
mesh surface.

===================================================================

M	source/blender/modifiers/intern/MOD_particleinstance.c

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_particleinstance.c b/source/blender/modifiers/intern/MOD_particleinstance.c
index e58ec24..fbb2e16 100644
--- a/source/blender/modifiers/intern/MOD_particleinstance.c
+++ b/source/blender/modifiers/intern/MOD_particleinstance.c
@@ -43,6 +43,7 @@
 #include "BLI_utildefines.h"
 
 #include "BKE_cdderivedmesh.h"
+#include "BKE_effect.h"
 #include "BKE_global.h"
 #include "BKE_lattice.h"
 #include "BKE_modifier.h"
@@ -327,17 +328,11 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
 
 				/* Incrementally Rotating Frame (Bishop Frame) */
 				if (k == 0) {
+					float hairmat[4][4];
 					float mat[3][3];
-					float temp[3] = {0.0f, 0.0f, 0.0f};
-					temp[axis] = 1.0f;
 					
-					/* normal direction */
-					copy_v3_v3(mat[0], state.vel);
-					/* tangent from projecting axis onto the surface plane */
-					project_v3_plane(mat[1], state.vel, temp);
-					normalize_v3(mat[1]);
-					/* cotangent */
-					cross_v3_v3v3(mat[2], mat[0], mat[1]);
+					psys_mat_hair_to_global(sim.ob, sim.psmd->dm, sim.psys->part->from, pa, hairmat);
+					copy_m3_m4(mat, hairmat);
 					/* to quaternion */
 					mat3_to_quat(frame, mat);
 					
@@ -355,7 +350,7 @@ static DerivedMesh *applyModifier(ModifierData *md, Object *ob,
 					mul_qt_qtqt(frame, rot, frame);
 					
 					copy_v3_v3(prev_dir, state.vel);
-					}
+				}
 				
 				copy_qt_qt(state.rot, frame);
 #if 0




More information about the Bf-blender-cvs mailing list