PDA

View Full Version : Fish IK



khalid
04-15-2005, 01:41 AM
Hi all,
I have been trying to create proper IK for the last day or two, I always end up with the wiggly effect, plus it snaps at sustain points, well I got tired finally and I think I probably have done everything wrong, Does anyone have a better concept on were is what!! can you check the scene file with the bones and IK and tell me what to do to improve!!
Thanks for your support,
khalid

MonroePoteet
04-16-2005, 10:54 AM
If you're trying to make a bone chain move in both directions around its rest position, forward IK may be easier. I've never had much success avoiding the "snap" in IK chains for snake/fish/wave type motion. There may be a trick to it, but I don't know what it is. In other words, just position each bone using keyframes to make the tail move the specific way you want.

I tend to use MathMotion for specific, smooth motion. For example, setting up a fish-tail chain with 5 bones works pretty well with the following values for the Heading on each successive bone in MathMotion:

Bone (1) = 0 (stable fish body)
Bone (2) = 0.4 * sin( (f + 0) * 20 * 3.141 / 180.0)
Bone (3) = 0.5 * sin( (f - 20) * 20 * 3.141 / 180.0)
Bone (4) = 0.6 * sin( (f - 40) * 20 * 3.141 / 180.0)
Bone (5) = 0.7 * sin( (f - 60) * 20 * 3.141 / 180.0)

The leading multiplier (0.4, 0.5, etc.) can be increased or decreased to change the magnitude of the wave at each bone. In this case, the value increases for each subsequent bone to give the "flip" at the end of the tail, while closer to the body has less angular variation.

The "f" is the frame number, and the subtraction from it (0,20,40,60) causes the wave to propogate down the tail. The value subtraced can be increased or decreased to slow-down or speed-up the wave motion down the tail.

The "20" multiplier determines the speed of the wave, and is a divisor for 360. In other words, a value of 20 means a complete cycle of the wave will occur in 18 frames (360 / 20). A value of 1 would mean the complete cycle is 360 frames. A value of 10 would complete a cycle in 36 frames. The same value must be used for all equations to make the wave propogation smooth.

The "3.141 / 180.0" is just converting the degrees calculated from the frame into radians for compatibility with the sine function.

mTp