The ikSpringSolver can be accessed by typing in ikSpringSolver; in the MEL command line, then accessing the ik tool options, changing the ik type.
This is great for characters with multiple knees or more joints then a normal quadruped. All joints under this solver will rotate at an even amount, getting a really natural effect with incredible range of motion.
There was a problem with this, though, as I needed a greater amount of control over the scapula and radius so the animators could work with a few more poses. I found a solution in Morgan Loomis' Blog that suggested to nest an Rotate Plane Solver chain into the primary Spring Solver chain. This allows for the overall motion of the Spring, but with additional control added in the Rotate Plane. I made the Spring Chain the primary chain, which was the parent of the RP, or Secondary, Chain. I then had an overall Bind Chain being driven by the secondary.
For the front leg, the yellow is the primary chain, the pink is secondary, and the purple is the final bound chain.
Each set of joints had individual twist and pole vector values, though, so I point constrained a locator to the metacarpal (above the ankle) of the primary spring chain. That locator was then used as the pole vector of the secondary chain - preventing some different results outputting from each chain.
The additional movement given to the front leg was especially exciting. I placed the primary chain under an additional joint, allowing to push the scapula forward, and rotate in any direction, giving great movement with one simple control.
A similar movement can happen at the knee of the ram, but I put that as a value avar under the foot control object.
I also discovered a fun node called the annotation node, which creates a visual arrow to a determined point of your choice. I noticed it has ALWAYS been really hard to keep track of your Knee or Elbow Pole Vector controls because they often get lost in the scene, or into the character model itself while you are animating. Simply give the annotation node your World Matrix info of the object you want to point to into the annotationShape node and done! You can then move the origin of the annotation where you want, or constrain it, or whatever. I have my annotation pointing to a locator at the knee that is bending. The annotation is parent constrained under my control object.
The yellow line is the annotation object.
Remember that joint objects can have different drawing styles. In the attribute editor, change your drawing style from Bone to None to get rid of visual clutter. Or to perhaps clear things up, apply a drawing override to a joint chain so they are colored a little differently from the rest.
I also wanted that shoulder blade action we see so often in quadruped characters, so I have two joints, with a simple IK handle applied to the base so it can get some unique sliding action.
The base moves freely, but the end joint (which will be a bound joint) slides around the ik handle where the arrows are pointing. A nice simple control for the shoulder blade.
I've been discovering new things everyday, and its really exciting piecing this all together from other people and personal knowledge. I'll show more progress soon!
I saw that blogpost a little while ago! Cool stuff Landon, it is exciting.
ReplyDelete