PDA

View Full Version : Loosing constraints at animation time


Sinchi
03-18-2008, 02:25 PM
Good day everyone,

Some animators tell me that they randomly loose constraints in their animation scenes while animating referenced models. Lets say they constrain an object from model A to an object from model B and save the scene. When they re-open the scene, sometimes the constrain is gone as if it never existed.

Anyone else as experienced this kind of behavior on xsi 6.5 ?

Thanks for any inputs :)

Sinchi
03-18-2008, 03:11 PM
Ok, we found more detail and how to replicate the bug.

Lets assume two referenced models A and B.
Each model has two objects One and Two.

When A.One is constrained to B.One, the delta is updated by adding a stored constraints item.
Same thing if A.Two is constrained to B.Two, the delta is updated accordingly by adding a stored constraints item.
Now lets use the command RemoveAllCns on A.Two, all the stored constraints items are removed from the delta!
The A.One constrain is still there, so the animator does not see a problem until he re-opens the scene since the delta does not store it and can't recreate it.

So the only workaround I can think right now is to code my own RemoveAllCns and RemoveCns commands to avoid this problem.

Sinchi
03-18-2008, 03:17 PM
We also found out that it is possible to remove internal constraints from a refrenced model. These come back when the model is updated, but is it normal that we can remove them in the first place?

4602
03-18-2008, 06:13 PM
hy
given that the model is "not actually" in the scene, but he is being referenced, the constraint, wherever you put it, it's not on that specific object's kinematics, it's inside the delta.
otherwise it would mean the constrain it's stored on your external object, and that would happen only if you make it local and re-export.
indeed the remove constraint, removes the delta's storedCostraints item, and not the constraint you are looking for. theoretically you are supposed to remove the constraint manually from the object or go inside the storedConstraints and remove the desired items.
and it is pretty normal not being able to delete referenced model's objects, constraints or which ever. you would not want the animators messing up you rig :)
4602

Sinchi
03-18-2008, 06:28 PM
hy
it is pretty normal not being able to delete referenced model's objects, constraints or which ever. you would not want the animators messing up you rig :)
4602

Hi 4602, that is exactly my point :) I find this weird that an animator is able to remove an internal constraint from the referenced model....

4602
03-18-2008, 06:59 PM
sorry... i misread. i thought you where asking why it's NOT possible. however if you try to manually delete it, it should give you an error. invalid argument.
but you are right, the remove constraint and remove all constrains are indeed "buggy".
4602

thiago
03-25-2008, 01:08 AM
I would suggest you to send those scenes to Softimage support.
I got this kind of behavior using nested models but with some more testes I noticed that constraints are indeed buggy..
As a workaround, I would suggest you to lock your constraint if you don't want people to remove it... heh.

Sinchi
03-25-2008, 12:53 PM
Thanks Tiago for your answer, good workaround!

I've heard that Softimage is aware of the constraints problem in referenced models and it should be fixed in the next version. ;) In the meantime, I tell the animators to delete the constraints they don't want instead of removing them ;)

franky
03-25-2008, 04:52 PM
for now i only constrain from a reference model that is loaded AFTER the ref model that acts as the constrainer.
that worked so far.....
you can influence the loading order by naming them with numbers 1/2/3.....

Dennis Leong
04-04-2008, 12:53 PM
Yes, there is an issue in XSI 6.5 with removing constraints on referenced models. What happens is that although the constraint itself is removed internally from the object and from its StoredConstraints ActionDelta, the constraint info is still persisted in all the other ActionDeltas. What this means is if you create another constraint of the same type on the same object, then upon scene load your old constraints fcurves, expressions, etc. will return because the previous constraint's info is still in the delta.

So yes, you'll have to write your own constraint removal script. After running RemoveAllCns on an object, you should search the model's action deltas and remove any leftover references to the removed constraint.

Sinchi
04-04-2008, 01:51 PM
Thanks for your explanation ;)

scaron
04-04-2008, 05:10 PM
we have had to do the same for constraint removal.