[Closed] BUG – Squash Bone Problem – 3dMax
Hi Everyone, I´m having a strange bug in 3d Studio Max 9 and on 2008 too.
I´m doing a simple Spine with squash, here the steps:
1. Bone chain with 3 bones, freeze length unchecked, squash and "Freezed controllers".
2. Circle spline to hold an attribute holder with a spinner.
3. Link the Parent bone to the circle spline.
4. "Wire parameters" on the zeroed X axis of the child bones to the Spinner, 1:1 ratio, no expressions.
I think it´s the simplest setup for squash in max, but, the first bone is not updating !
When I´m changing values on the Spinner, the spine squashs OK, but when I turn AUTO KEY ON, and create some keys for the spinner, the first bone dont update anymore.
If I move or rotate the first bone – POPS – it update for the actual correct state, but if you continue on moving the timeSlider, no update!!!
The anoying workaround is creating some keys on the first bone, in the same range of the spinner. But, there must be another way to solve this!
I´m using max 9 with sp2, tried on 2008 and the same problem goes on!!
Here is a link for the test scene: [Max File link]( http://usuarios.cmg.com.br/%7Ehp-mussarlz/SquashBug.zip)
And Here a little .swf animation of the problem: [.swf]( http://usuarios.cmg.com.br/%7Ehp-mussarlz/SquashBug.swf)
Thanks.
looks like the first bone doesn’t think there’s a need to update itself with every updation of the circle attrib …
Another work around would be to make a fake connection between the circle and the first bone.
for example, add a pos xyz to the position list of the first bone, and wire the circle’s squash attrib to the x position of this new controller, similar to what you have in the rest of the bones.
But then, in the expression dialog for this particular wiring, use:
squash/squash – 1
which would essentially nullify the effect of this wire, yet forcing the bone to update itself whenever the circle attrib changes…
Hi Aachoooo , thanks for replying
Your solution seems to be good but something get wrong when the slider value is 0.0 ! the entire chain disapear !!
Well, I did a diferent approach, a scripted custom Attribute., When the slider changes, it will generate some keys for the scale of the bone chain.
Pretty hacky, but, it´s working ! I hope autodesk fix this anoying thing!
oh yes, i missed that, a 0 divided by 0 must be causing it to go haywire.
Instead of
squash/squash – 1
you could type a simple 0
and it should still work …
and yes, I sure hope autodesk fixes this thing
cheers
try this, build a chain of three bones, with lengths of 50, and a nub bone at the end. Turn on squash in there bone options under character. And give there position controllers in there controller stack a position_XYZ().
Add a custom attribute to the first bone, with a spinner going from 0.0 to 100. Default value: 50.0
Then add a position script to each bone, (not the first) but including the nub. (the little bone, at the end)
In there position_XYZ controller assign a float script controller to there X position.
( with script it would be this: $.pos.controller[1].controller = float_script())
In the float script, assign a variable to the custom attribute parameter eg. squashVal = $.squashVal. as track not node, controller or constant.
in the script window, type: squashVal and evalute the script.
cheers,
Hi Eek, thanks for replying good solution, putting the attHolder on the first bone, forces it to update itself and squashs correctly.
by the way!! what´s the difference between “track” and “controller” inside the script controller? I never know how to choose
Thanks
So a Track is a attribute of a controller ( a specific variable). Where as a controller, what the track is under. There just different layers of a parameter:
$box01 = node
$box01.transform.pos.controller = controller
$box01.transform.pos.controller[1].value = track