We have too many assets to re-create them in 2013 or later. We have to accept assets as-is.
We have a number of clothing pieces which were weighted to deformers in the character rig, and some of those deformers have been since removed leaving invalid entries in the envelope. Envelopes.Deformers throws an error when used on these envelopes, so I wrote a tool which uses Envelope.GetDeformerWeights() to detect and repair the envelope by replacing the envelope with a new one using the remaining valid deformers. The end result is a new envelope with no prior history. These new envelopes work just like any other envelope in 7.5, even after being reloaded and worked over further. The problem is these envelopes do not respond in 2013. Softimage 2013 SP1 will load them, but the envelope will not find it's deformers even when present in the scene. It's as if the geometry never had an envelope in the first place. To make matters worse, Envelopes.Deformers is inaccessible and the workaround of using Envelope.GetDeformerWeights() throws and error as well. I have not found a way to extract the list of deformers from the envelope. Matt From: [email protected] [mailto:[email protected]] On Behalf Of Jeremie Passerin Sent: Tuesday, December 18, 2012 10:55 AM To: [email protected] Subject: Re: how to determine which deformers an envelope operator is looking for Hey Matt, Did you try to build this setup in 2013 or are you just testing with rigs created in 7.5 and loaded in 2013. Not ideal but maybe you can store the deformers name at some point in a userdatablob or or property during the rig creation. I'm wondering if envelopeOp.Deformers() is not accessible when you re-import you rigs, or if it's not accessible right from the beginning even after you created the envelope the first time. my 2c Jeremie On 18 December 2012 10:31, Matt Lind <[email protected]<mailto:[email protected]>> wrote: Perhaps you didn't read my post. Envelopes.Deformers is not accessible. Matt From: [email protected]<mailto:[email protected]> [mailto:[email protected]<mailto:[email protected]>] On Behalf Of Fabricio Chamon Sent: Tuesday, December 18, 2012 6:03 AM To: [email protected]<mailto:[email protected]> Subject: Re: how to determine which deformers an envelope operator is looking for Here on a simple scene it works ok...(cylinder enveloped to a 2-bone chain) logmessage (selection(0).envelopes(0).deformers.getAsText()) // INFO : cylinder,bone,bone1,eff funny thing is the cylinder itself got logged, also the effector that was not picked as deformer. 2012/12/18 Adam Sale <[email protected]<mailto:[email protected]>> envelope > Select deformer from envelope? On Mon, Dec 17, 2012 at 10:26 PM, Matt Lind <[email protected]<mailto:[email protected]>> wrote: 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

