So after a bit of editing, I have a better setup for my FootRoll attribute. This time, it actually moves realistically and starts with the ball of the foot and then moves on to the toe.
How it works is you have a Foot Roll Break value that represents the angle at which the toe starts to rotate up. At that value, the ball of the foot starts to straighten out until it is equal to twice the value of the Foot Roll Break. At that point, it will stay at zero, as the ball of the foot shouldn’t be bending forwards (although you can always make it do so with the Ball Rot attribute if you needed to).
So starting from the top of the node setup, we have our plusMinusAverage node which takes the difference between the Foot Roll value and the Foot Roll Break value. We then have a condition that checks if the Foot Roll value is greater than the Foot Roll Break value. If it is, we rotate the reverseToeSDK2 Group (group, not joint!) based on the difference calculated from our plusMinusAverage node. If it is, not, the value is zero.
For example, if the Foot Roll is at 35 and the Foot Roll Break is set to 30, we will have a rotation value of 5 handed off to our joint sdk group. The benefit of this, once again, is that it is linear and still allows our joints to be rotated independently.
Ok so the bottom portion is a bit more complicated but is still pretty straightforward. It relies on two conditions.
Condition 2 checks to see if the Foot Roll value is greater than the Foot Roll Break value. If it is, it is set the the value of the Foot Roll Break – (Foot Roll – Foot Roll Break). That’s what those two plusMinusAverage nodes are doing.
Then there’s Condition 3 that makes the foot stop bending once it is fully straight. That value is at twice the Foot Roll Break value, so we have it check to see if the Foot Roll value is greater than twice the Foot Roll Break value (that’s what multiplyDivide4 is doing). If it is, we set the output value to zero. Else, it is the same value as the output of Condition 2.
And that’s it! You now have a Foot Roll attribute using only nodes 🙂