Fix T51774: Children particles hair interpolation not correct with textures or dp.
authorBastien Montagne <montagne29@wanadoo.fr>
Sun, 18 Jun 2017 21:54:52 +0000 (23:54 +0200)
committerBastien Montagne <montagne29@wanadoo.fr>
Sun, 18 Jun 2017 22:03:36 +0000 (00:03 +0200)
Children where always getting at least one segment of fixed length...

Now fully hidden ones (zero length) get no segment at all.

Note that even very short ones keep getting one 'unit' length segment - would
rather avoid changing that at this point, given how complex children
particles 'length' can get with all kind of modifiers... Think we can
live with that for now anyway.

source/blender/blenkernel/intern/particle_child.c

index 842de869291b58facc98aaa6a878710ddaee037e..bfcda89a635bef8844042a41b702a82d8f5b8168 100644 (file)
@@ -355,9 +355,13 @@ void psys_apply_child_modifiers(ParticleThreadContext *ctx, struct ListBase *mod
 
        {
                const float step_length = 1.0f / (float)(totkeys - 1);
-               
                float cur_length = 0.0f;
-               
+
+               if (max_length <= 0.0f) {
+                       keys->segments = -1;
+                       totkeys = 0;
+               }
+
                /* we have to correct velocity because of kink & clump */
                for (k = 0, key = keys; k < totkeys; ++k, ++key) {
                        if (k >= 2) {