Tail curling / flipping issue


#1

Hi,

still workin on my chameleon rig (3ds max)…

Next problem I´m facing:

For the tail I built a simple FK chain with several controls linked together.

  1. Created bone chain.
  2. Created control object every 5 Bones.
  3. Orientation constrained bones in between to surrounding control objects.
  4. Weighed orientation constrains.
  5. Linked all control objects together.

By selecting some or all of the controls and rotating them together, I can make the tail curl.
But unfortunately it doesn´t curl the way I want it to curl:

http://www.flickr.com/photos/28846954@N06/7165955493/

To form the helix, some bones need to be rotated more than 180° and of course then I get undesired flipping…

My rigging knowledge is still very basic, is there any way to fix this, without scripted controllers?


#2

One easy workaround would be to put the euler rotation controllers for the controls into lists (just do that quickly by freezing the rotation: alt+RMB --> freeze rotation; that’ll make a list and another euler on top, edit the zero euler weight in the list) and then reducing the weight percentage of the euler controller in the rotation list. For example, you could have your bone hierarchy going from the base to the tip have their (zero) euler controller weights something like the following: 20, 30, 40, 50, 60, 70,80, 90, 100. You have to figure out the exact weights either by trial and error or mathematically by taking into account the function for the spiral curve and the lengths of the bones. The last bone will rotate fully when you rotate, while the closer to the base ones will rotate less.


#3

Thanks for the reply, but I´m currently testing another solution I found here:

http://joleanes.com/technical_stuff/Rolling_Chain.php

This actually looks like exactly what I need…:wink:

I got the first part of the solution working by using a setup with point helpers path constrained to the spline and then using position constraints and look at constraints to keep the bones attached to the spline, instead of a spline IK solution. This way I got the first part of his solution working already, unfortunately he´s not going into detail very much, so now I´m trying to reproduce the second part…


#4

Yeah, well, I ALMOST got it working…

I reproduced the curling with a bone chain constraint to helpers on a path constraint on a spline with a bend modifier…

Then I build an FK Chain based on a splineIK on top.

And then I used a third chain and orientation constrained it to both, so I could blend between the two.

Wich was a pain in the a**, because each chain consisted of 40 bones.
Everything looked great until I skinned the mesh to it and finally saw the flipping on the Bones of the curl-chain…

Any idea on how to solve this issue? Or do you need more information?


#5

Actually…Mister Joleanes also has a handy little script on his page called “chain tools”:

http://joleanes.com/scripts_plugins/chaintools.php

I already downloaded it and messed around with it a bit before rigging the tail, so I took a closer look at the description.

He already implemented a solution for avoiding the flipping issue, using quaternion aims.
I took a look at the rotation scripts but this is still way over my head. Fortunately I can still press the right buttons…:wink:

So now I can simply create a bone chain with as many bones as I want, select the right checkboxes and then just put my bend modifier on top of the base spline…voila!
Curling+FK Control!

Last thing I need to do: wire the helpers that control the rotation of the chain to control objects, so I don´t have to mess around with 40 helpers for my FK stuff…


#6

Ok, so now it´s almost working perfectly…

The only issue I´m left with: since the bend modifier squashes the spline while its curling up, I get some undesired bone stretching. There´s a spinner included in the script, that lets you control the stretch factor, but if I set it to 0, the last couple of bones in the hierarchy loose orientation…


#7

Hello InsertMesh. I could be missing something in your initial post, but in order to get the spiral form of the chameleon tail, I think you can also do this with a bone chain. It’s been awhile since I’ve been in max, but in XSI you can create a bone chain where each bone is smaller than the next. If you have 11 bones and each bone is lets say 90 percent the size of the next bone, then when you curl the tail you should get the effect. The key is that your bones at the end of the tail are closer together than the ones at the beginning - which is true to many skeletal arrangements in real animals.

Hope this helps.


#8

Hey artist x,

Interesting observation…always a good idea to turn to nature when it comes to figuring out how things work.
But the problems I was facing where mostly due to technical problems because of the way rotations work with Euler angles. Like I mentioned above: I found a scripted solution, but I’m pretty sure I’m not able yet to change the script to make a bonechain with degrading bone length…so for now I’ll go with the solution I found…


#9

This thread has been automatically closed as it remained inactive for 12 months. If you wish to continue the discussion, please create a new thread in the appropriate forum.