Notifications
Clear all

[Closed] How to create a HI IK chain with script?

 S-S

Hi! I have been creating small scripts to help myself with repetitive rigging tasks. I have created automatic forearm twist bone creator script, foot roll setup, finger custom attribute interface and arm setup with fk-ik blend (EEK style)

I have a question, related to arms and legs. I would like to be able to create IK chains in addition to bones.
I have managed to create bones, but i haven’t quite figured it out how or if it is possible to create HI IK chain with max script (i’m in version 8)

This topic is nearly nonexistent in Max script reference, so:

  • Is it actually possible to do this?

If it is:

  • I think I should be using “iksys” and “ikchainControl” ?

  • I guess I should first create a bone chain?

  • And then, I guess I have to create a point helper for IK?

  • Then, I should somehow have “IKChainControl” in transform level?

    • I have no idea how to do it, i do know how to replace controllers though
  • Then bones controlled by IK should have “IKControl” ?

  • So, if anyone knows anything about this, I would appreciate it very much !

Thanks!

4 Replies

hi,
yes create the bone chain first (or any nodes)
the iksys creates the ik handle for you so you dont have to create a helper for this

ikhandle = iksys.ikchain startbone endbone “IKHiSolver”
mark

 S-S
  • Thanks Mark! You really know your stuff

  • I just wonder how you came up with that! I searched forums, but didn’t find anything. I think i also tried the method you showed, but with some invented string, and not “IKHiSolver”, and only got undefined?

  • Anyway, your method works just fine!

  • Big thanks!

hi,

yeah its all in the maxscript reference, but its a bit hard to decrypt if your not used to it

search for iksys and youll get

[left]Methods
[/left]
[left]<node>ikChain <node>startJoint <node>endJoint <string>solver
[/left]
[left]Where startJoint is the first node in the new chain (ancestor), endJoint is the last node in the chain (descendant) and assignEE is a boolean parameter: when true, a position end effector is crated at the endJoint.
[/left]
[left]<integer>solverCount()
[/left]
[left]The number of available solvers installed on the system
[/left]
[left]<string>solverName <integer>solverIndex
[/left]
[left]The name of the indexed solver
[/left]
[left]<string>solverUIName <integer>solverIndex
[/left]
[left]The UI Name of the indexed solver
[/left]
mark

 S-S

thanks Mark, now i just have to build my rig!