Dogs and wolves are species of canidae, as are foxes, jackals, and coyotes.
This page gives some suggestions for how to characterize a canine skeleton for use with HumanIK. Note that there are many possible ways to characterize a canine skeleton; the suggestions below may or may not be appropriate for use with your own characters.
To see a working demonstration of the suggestions on this page, run the Quadrupeds example included with the HumanIK SDK. The HIKSamples.sln solution in <HumanIK_installation_folder>/solutions/<platform_and_toolset> integrates the projects and source code for the samples. For details, see HumanIK Samples.
See also the Quadrupeds.fbx file in <HumanIK_installation_folder>/data/molecule/scenes.
The neutral stance for your character must meet all the requirements for the quadruped neutral stance that are outlined on the Using HumanIK for Quadrupeds page.
Mapping the upper joints in the hind limbs of a wolf or other canine is straightforward. Mapping the lower joints is slightly trickier, since a wolf walks on the tips of its toes:
To improve the general feel of the poses generated by the IK solver for the hind legs, it is typically best to prevent the hind legs from opening to their full extension during an IK solve. To do this, you can reduce the maximum extension of the leg in the character's HIKPropertySetState to a lower value. A good value for a wolf is typically about 170 degrees.
HIKSetPropertyValue(props, HIKLeftLegMaxExtensionAngle, 170.0f); HIKSetPropertyValue(props, HIKRightLegMaxExtensionAngle, 170.0f);
Mapping the fore limbs of a wolf or other canine is fairly straightforward if you follow the template below.
Because the elbow joint of the wolf is located quite high above the ground, it can be a good idea to limit its maximal extension to a value between 120° to 150°. This prevents the forelimbs from straightening too much when trying to reach a target.
HIKSetPropertyValue(props, HIKLeftArmMaxExtensionAngle, 140.0f); HIKSetPropertyValue(props, HIKRightArmMaxExtensionAngle, 140.0f);