3d max Ik spline's behavior


#1

Hi everyone. I faced with random twist of IK spline bones. It’s really strange. I made spine of a dog with IK spline bones. When I rotate root control around Z (vertical axis) more then 90 degrees, dog’s spine gets random twist. Though I have picked up node for Ik spline solver. It happens only when I rotate root control, when I rotate COG control everything is OK. I can’t find the solution with google so I have to ask for help here. (I tested the dog’s rig in 2014 and 2015 max)
screenshots (look, upnode’s local Z always has up direction. what’s wrong with the bones?)
ikspl


#2

I’m sorry to say it’s broken beyond repair. There are many issues with spline ik and everybody rigs his own version of it. Paule Neale has some stuff available on custom spline rigs if I’m correct.

Sorry no good news…
Johan


#3

So. You mean standard IK spline in max is glitch and useless thing? If it’s so it’s really bad news( Thank you for reply.


#4

This is a terrible dream. I’ve made a custom IK spline (spline + path cnstr + IKHI solvers for bones). It works as I expected but when I rotate root control around Z I get twisting bones again(( IK’s swivel angel is wired with chest and hip controls. Now I’m thinking that something’s wrong with me but not with 3ds max.
You can see the twisting chain in the little part of the picture (about 90 degrees).

IK_cust


#5

When you create a SplineIKSolver by default your selection is changed to the IK goal object which is positioned at the end of your bone chain. With this object still selected, go to the Motion panel and navigate to the IK Solver Properties rollout and you’ll see there’s a pickbutton UI control which allows you to define the upnode; all of the bones will try to align their Z axis’ to this nodes Z axis, if you translate one of the SplineIK controls so that one of the bones is rotated more than 90 degrees in the Y axis then it will twist in X to try to realign itself with the upnode’s Z axis…

The problem is that you can only define one upnode for the solver, the Twist Start and Twist End Angle just rotate the bones in the local X axis. In Maya you have “advanced twist controls” which allow you to define upnodes for the start and end which help to avoid the problem (but not remove it entirely).

I would suggest watching Louis Marcoux excellent short tutorial series titled Customized Spline IK, although really what he creates is commonly referred to as a ribbon :stuck_out_tongue:


#6

Yes there is a pick button for IK spline upnode. But in the first picture in this thread I showed that I had picked the upnode. Even more, I was able to make a simple twist control like maya’s advanced twist with 2 up objects. I wired the Hip control.rotationX to Twist Start then linked and aligned point helper to the Chest control. Then I assigned Point.rotationX = - Hip.rotationX , took Point’s rotation X value with expose transform and wired it to Twist End Angle. And even now this chain is flipping while I’m rotating the root control. When I’m doing COG control everything is fine.
The only way I found is IKHI’s upnodes above the spine which controlled by position constraint. So I’m confused a little.
By the way.Thank you for tutors.


#7

Defining the Twist Start and Twist End Angle is not the same as having a start upnode and an end upnode like in Maya. As you mention you wired the Hip rotation X controller to the Twist Start, that means the twisting is happening only in the local space of the Hip: if you rotate the parent of the Hip control, you won’t see any effect on the twist that’s because the rotation X value doesn’t change. As well as what I’ve written, wiring a single rotation axis can be a tricky thing because you can also run into gimbal lock.


#8

Yes, you’re definitely right. But twist wiring kinda works with not extreme poses. And I need to pick upnode for the whole IK to have any effect when Hip control’s parent is rotated. Of course it’s not the same as maya’s tool, but looks like.


#9

I did quite a thorough investigation of this problem 2 years ago :wink:
https://vimeo.com/95459912