Commit: 7125b76c9a0a1cf126e44850e7c4802bc0e3e37a
Author: Lukas Tönne
Date:   Fri May 22 17:25:48 2015 +0200
Branches: alembic
https://developer.blender.org/rB7125b76c9a0a1cf126e44850e7c4802bc0e3e37a

Take transformation of the duplicator object into accound for hair
cutting.

When using a dupli object from the same group as a target it is
sufficient to calculate the relative transform in the shared duplicator
local space. When using an external object though we have to transform
into world space first.

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

M       source/blender/blenkernel/intern/cache_library.c

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

diff --git a/source/blender/blenkernel/intern/cache_library.c 
b/source/blender/blenkernel/intern/cache_library.c
index 411ed78..2188023 100644
--- a/source/blender/blenkernel/intern/cache_library.c
+++ b/source/blender/blenkernel/intern/cache_library.c
@@ -1960,12 +1960,19 @@ static void haircut_process(HaircutCacheModifier *hmd, 
CacheProcessContext *ctx,
                if (dob->ob != ob)
                        continue;
                
-               /* instances are calculated relative to the strands object */
-               invert_m4_m4(mat, dob->mat);
-               
                memset(&haircut, 0, sizeof(haircut));
                haircut_data_get_bvhtree(&haircut, target_dm, true);
-               haircut_data_get_instances(&haircut, hmd->target, mat, 
dupli_target ? &data->dupcache->duplilist : NULL);
+               if (dupli_target) {
+                       /* instances are calculated relative to the strands 
object */
+                       invert_m4_m4(mat, dob->mat);
+                       haircut_data_get_instances(&haircut, hmd->target, mat, 
&data->dupcache->duplilist);
+               }
+               else {
+                       /* instances are calculated relative to the strands 
object */
+                       mul_m4_m4m4(mat, data->mat, dob->mat);
+                       invert_m4(mat);
+                       haircut_data_get_instances(&haircut, hmd->target, mat, 
NULL);
+               }
                
                haircut_apply(hmd, ctx, eval_mode, &haircut, parents, strands);

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to