This tutorial will demonstrate how to setup foot roll for a character using remapValue utility node. I came across the need for this kind of setup when there was constant demand from animators of the project I am working on, in which they wanted control over when the toe roll gets triggered.(If the foot roll was a value from 0 to 10 then they wanted the toe pivot to rotate during a random foot roll value(between 0 and 10)).So I had to think of a setup different from the conventional setup of set driven keys.Below is the step by step procedure for setting up the adaptable foot roll using remapValue nodes.
Create a joint chain for the leg(femur>tibia>ankle>ball>toe).Create ik handles from femur to ankle(RP solver), ankle to ball(SC solver), and ball to toe(SC solver).Create three groups(ankle_grp, ball_grp, toe_grp) at the respective ik handle position.Parent the ik handles to the respective groups.Create a leg control and add attributes[roll(min-0,max-10,default-0), roll_multiplier(min-0,max-90,default-45), roll_trigger(min-0,max-1,default-0.5)].Parent the ik handle groups under the leg control as shown below.
Create two remapValue utility nodes using the render utilities window or by running the command createNode remapValue in the Script Editor.Rename first remap value as ballRoll_rmv and the second as toeRoll_rmv.
select ballRoll_rmv and go to Attribute Editor and add inbeween value of 1 at position 0.5 in the value graph as shown in the figure. Edit value at position 1 to 0.
select toeRoll_rmv and go to Attribute Editor and add inbeween value of 0 at position 0.5 in the value graph as shown in the figure. Edit value at position 1 to 1.
Make the following connections from foot_ctr to ballRoll_rmv and toeRoll_rmv.
leg_ctr.roll to ballRoll_rmv.inputValue.
leg_ctr.roll_trigger to ballRoll_rmv.value.value_Position
leg_ctr.roll_multiplier to ballRoll_rmv.outputMax.
leg_ctr.roll to toeRoll_rmv.inputValue.
leg_ctr.roll_trigger to toeRoll_rmv.value.value_Position
leg_ctr.roll_multiplier to toeRoll_rmv.outputMax.
ballRoll_rmv.outValue to ball_grp.rotateX
toeRoll_rmv.outValue to toe_grp.rotateX
Set leg_ctr.roll_multiplier to 45 and leg_ctr.roll_trigger to .5
By varying the roll_trigger attribute, the animator can decide where the toe pivot rotation gets triggered.
You can download the example file here