We are trying to upgrade from Softimage 7.5 to Softimage 2013 SP1 and ran into 
a speed bump during testing.

Our workflow for character work is to create a master character rig which 
contains the skeleton and body (flesh) geometry.  We use separate models for 
clothing and other accessories which the character needs to wear.  This means 
the clothing geometry is enveloped to deformers in the master character rig.  
When a clothing model is imported into a scene, if the deformers are present 
(e.g. master character rig is in the scene) they activate and deform as 
expected.  If the deformers are not present, then the geometry sits still in 
the default rest pose as if no envelope existed. This workflow has been working 
for the past 5 years.

When these scenes and models are imported into Softimage 2013 SP1, the 
envelopes stop working, and sometimes Softimage crashes.  When clothing 
geometry is inspected in the weights editor, the deformer names are displayed 
as "invalid".

Digging into the SDK I got some basics.  For each enveloped piece of clothing 
geometry:

X3DObject.Envelopes(0)  returns valid envelope
Envelope.Weights.Array returns valid envelope weight data.
Envelope.Deformers throws 'invalid pointer' error, or returns an empty 
collection of deformers.

In essence, I have the weight values and the number of deformers in the 
envelope, but not the names of the deformers mapped to the weight values.  I 
need the deformer names.

I have worked around the problem in Softimage 7.5 by using 
Envelope.GetDeformerWeights( SceneObject ) and testing with every object in the 
scene.  I record each object which does not throw an error as well as the 
returned deformer weight data.  The end result is a collection of deformers and 
envelope data to rebuild the envelope.  I remove the original envelope and 
replace it with a new one using the accumulated data.  Works well.

When I try this technique in Softimage 2013 SP1, Envelope.GetDeformerWeights() 
throws an 'invalid argument specified' error on every object in the scene - 
including the true deformers of the envelope (in controlled tests).

How can I determine which deformers an envelope is looking for so the envelope 
can be rebuilt?

Matt



Reply via email to