yeah Brad.. if only you had attached some sort of fee per post... the Gabe Toll.
Adam
----- Original Message -----
From: Bradley Gabe <withanar(at)stanwinston.com>
Date: Wednesday, March 14, 2007 10:29 am
Subject: Re: Envelope normalising tool??
> Is anyone else keeping score? My list posting technique has done a lot
> of good for a lot of people since I started counting.
>
> > Cool thanks lots - it turned out that the env op had become a
> little
> > unstable - saved the weights out, re-enveloped, loaded the save
> weight
> > preset - all happy again!!
> >
> > Thanks again
> >
> > Sandy
> >
> > ----------------------------------------------------------
> > Sandy Sutherland Digital Doodeller - TD
> > Blackginger (Cape) http://www.blackginger.tv
> > mailto:sandy(at)blackginger.tv
> > (P) (+27 21) 488 1188 (Cel) 0827893789
> > ----------------------------------------------------------
> > ----- Original Message -----
> > From: "Francois Lord" <francoislord(at)gmail.com>
> > To: <XSI(at)Softimage.COM>
> > Sent: Wednesday, March 14, 2007 4:55 PM
> > Subject: Re: Envelope normalising tool??
> >
> >
> > > Here is one, it's in Python.
> > >
> > >
> > >
> > > Sandy Sutherland wrote:
> > >> Hi All - we have a little problem here - one of the guys has been
> > >> rigging a character and has found that some of the points are
> not 100%
> > >> weighted - anyone got a tool that can correct this - i have
> tried the
> > >> one on XSIbase, but it errors out
> > >>
> > >> 'ERROR : Object required: 'objenvelope.Model' - [line 39 in
> > >> w:\workgroup_5\data\scripts\Envelope_Checker.vbs]
> > >>
> > >> EnvelopeChecker
> > >>
> > >> We are on 5.11 BTW
> > >>
> > >> Thanks
> > >>
> > >> Sandy
> > >>
> > >> ----------------------------------------------------------
> > >> Sandy Sutherland Digital Doodeller - TD
> > >> Blackginger (Cape) http://www.blackginger.tv
> > >> mailto:sandy(at)blackginger.tv
> > >> (P) (+27 21) 488 1188 (Cel) 0827893789
> > >> ----------------------------------------------------------
> > >
> >
> >
> > -----------------------------------------------------------------
> ---------------
> >
> >
> > > from buzz.xsi import *
> > > import win32com.client
> > >
> > > iModified = 0
> > > oDeformer = xsi.PickElement(c.siObjectFilter, "Pick deformer")(2)
> > >
> > > for oObj in xsi.Selection:
> > > if xsi.ClassName(oObj) != "X3DObject":
> > > log(oObj.FullName +" is not an X3DObject.",2)
> > > continue
> > > try:
> > > oEnvelope = oObj.ActivePrimitive.NestedObjects("Envelope
> Operator")> > except:
> > > log(oObj.FullName + " doesn't have an envelope operator.",2)
> > > continue
> > > if not oEnvelope:
> > > log(oObj.FullName + " doesn't have an envelope operator.",2)
> > > continue
> > >
> > > Application.FreezeObj(oObj.Fullname +
> ".polymsh.cls.*.Envelope_Weights",
> > > "", "")
> > > tW = oEnvelope.Weights.Array
> > >
> > > # Find where is the picked deformer in the Weights Array.
> > > oDeformersColl = oEnvelope.Deformers
> > > for i in range(oDeformersColl.Count):
> > > if oDeformersColl(i).FullName == oDeformer.FullName:
> > > break
> > > else: # Picked object is not deformer
> > > log(oDeformer.FullName + " is not currently a deformer for
> object: " +
> > > oObj.FullName + ". Skipping object.",2)
> > > continue
> > > iDeformerPos = i
> > >
> > > # Inverse the two dimentions of the tuple so that we can work
> on points,
> > > not deformers.
> > > lWeights = [[r[column] for r in tW] for column in
> range(len(tW[0]))]> >
> > > # For each point, calculate the total weight value.
> > > for iPoint in range(len(lWeights)):
> > > fTotalValue = 0
> > > for iDeformer in range(len(lWeights[0])):
> > > fTotalValue = fTotalValue + lWeights[iPoint][iDeformer]
> > >
> > > # Isolate vertices with less than 100% weight.
> > > # Due to a float precision error, most points are not exactly
> at 100%, we
> > > must accept a somewhat wider range.
> > > if fTotalValue < 99.9999:
> > > # Set point weight for picked deformer at 100 - fTotalvalue
> (the missing
> > > part).
> > > lWeights[iPoint][iDeformerPos] =
> lWeights[iPoint][iDeformerPos] + 100 -
> > > fTotalValue
> > > iModified = iModified + 1
> > >
> > > # Revert back the two dimensions of the tuple and assign.
> > > if iModified:
> > > tNewW = [[r[column] for r in lWeights] for column in
> > > range(len(lWeights[0]))]
> > > oEnvelope.Weights.Array = tNewW
> > > sFormat = "%s: %d points (%.1f%%) have been modified"
> > > log(sFormat % (oObj.FullName, iModified, iModified /
> > > float(len(lWeights))*100))
> > >
> > > Application.FreezeObj(oObj.Fullname +
> ".polymsh.cls.*.Envelope_Weights",
> > > "", "")
> > >
> >
> > ---
> > Unsubscribe? Mail Majordomo(at)Softimage.COM with the following
> text in body:
> > unsubscribe xsi
>
> ---
> Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text
> in body:
> unsubscribe xsi
>
---
Unsubscribe? Mail Majordomo(at)Softimage.COM with the following text in body:
unsubscribe xsi