Woo hoo!  Thanks Aligorith! :-D

--Nathan V

On Fri, Apr 23, 2010 at 7:14 AM, Joshua Leung <[email protected]> wrote:
> Revision: 28368
>          
> http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=28368
> Author:   aligorith
> Date:     2010-04-23 07:14:00 +0200 (Fri, 23 Apr 2010)
>
> Log Message:
> -----------
> Spline IK - Influence Control
>
> Made the 'Influence' slider work for Spline IK too, and made that setting 
> visible now that it works.
>
> Note that there is still some popping that can occur when going to/from 
> influence = 0.0. I'm not sure exactly what's causing this yet, but hopefully 
> it won't be too noticeable in practice.
>
> Modified Paths:
> --------------
>    trunk/blender/release/scripts/ui/properties_object_constraint.py
>    trunk/blender/source/blender/blenkernel/intern/armature.c
>
> Modified: trunk/blender/release/scripts/ui/properties_object_constraint.py
> ===================================================================
> --- trunk/blender/release/scripts/ui/properties_object_constraint.py    
> 2010-04-23 04:16:08 UTC (rev 28367)
> +++ trunk/blender/release/scripts/ui/properties_object_constraint.py    
> 2010-04-23 05:14:00 UTC (rev 28368)
> @@ -37,7 +37,7 @@
>             # match enum type to our functions, avoids a lookup table.
>             getattr(self, con.type)(context, box, con, wide_ui)
>
> -            if con.type not in ('RIGID_BODY_JOINT', 'SPLINE_IK', 'NULL'):
> +            if con.type not in ('RIGID_BODY_JOINT', 'NULL'):
>                 box.prop(con, "influence")
>
>     def space_template(self, layout, con, wide_ui, target=True, owner=True):
>
> Modified: trunk/blender/source/blender/blenkernel/intern/armature.c
> ===================================================================
> --- trunk/blender/source/blender/blenkernel/intern/armature.c   2010-04-23 
> 04:16:08 UTC (rev 28367)
> +++ trunk/blender/source/blender/blenkernel/intern/armature.c   2010-04-23 
> 05:14:00 UTC (rev 28368)
> @@ -2006,6 +2006,11 @@
>                rangle= dot_v3v3(rmat[1], splineVec);
>                rangle= acos( MAX2(-1.0f, MIN2(1.0f, rangle)) );
>
> +               /* multiply the magnitude of the angle by the influence of 
> the constraint to
> +                * control the influence of the SplineIK effect
> +                */
> +               rangle *= tree->con->enforce;
> +
>                /* construct rotation matrix from the axis-angle rotation 
> found above
>                 *      - this call takes care to make sure that the axis 
> provided is a unit vector first
>                 */
> @@ -2073,13 +2078,26 @@
>                }
>        }
>
> -       /* step 5: set the location of the bone in the matrix
> -        *      - when the 'no-root' option is affected, the chain can retain
> -        *        the shape but be moved elsewhere
> -        */
> +       /* step 5: set the location of the bone in the matrix */
>        if (ikData->flag & CONSTRAINT_SPLINEIK_NO_ROOT) {
> +               /* when the 'no-root' option is affected, the chain can retain
> +                * the shape but be moved elsewhere
> +                */
>                VECCOPY(poseHead, pchan->pose_head);
>        }
> +       else if (tree->con->enforce < 1.0f) {
> +               /* when the influence is too low
> +                *      - blend the positions for the 'root' bone
> +                *      - stick to the parent for any other
> +                */
> +               if (pchan->parent) {
> +                       VECCOPY(poseHead, pchan->pose_head);
> +               }
> +               else {
> +                       // FIXME: this introduces popping artifacts when we 
> reach 0.0
> +                       interp_v3_v3v3(poseHead, pchan->pose_head, poseHead, 
> tree->con->enforce);
> +               }
> +       }
>        VECCOPY(poseMat[3], poseHead);
>
>        /* finally, store the new transform */
>
>
> _______________________________________________
> Bf-blender-cvs mailing list
> [email protected]
> http://lists.blender.org/mailman/listinfo/bf-blender-cvs
>
_______________________________________________
Bf-committers mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-committers

Reply via email to