Use numpy : http://www.numpy.org/


On Thu, May 30, 2013 at 4:42 PM, Eric Thivierge <ethivie...@hybride.com>wrote:

>  Well all my code is doing is creating a list of lists from the weights
> array nothing more.
>
> Should I consider this speed not slow then? When running various tools
> that use this call to the weights array it seems extremely slow. Am I just
> being impatient or on meshes with this density and number of deformers is
> it to be expected? Should I accept it or look for other ways to speed it up?
>
> Opinions welcome.
>
>
> Eric Thivierge
> ===============
> Character TD / RnD
> Hybride Technologies
>
>
> On 30/05/2013 4:38 PM, Jeremie Passerin wrote:
>
> just tested your scenario... got the same result here :D
> Actually your code is faster than mine
>
>
> On 30 May 2013 13:21, Eric Thivierge <ethivie...@hybride.com> wrote:
>
>>  Thanks Jeremie,
>>
>> I was referencing your code when I ran into the slowness to see if we are
>> doing anything different and we aren't really.
>>
>> As a test I'm grabbing the XSI Man Armored and selecting the body mesh
>> and doing a local subdiv refinement with a setting of 2 then freezing
>> modeling. Then running the following code with the body mesh selected:
>>
>> # Python
>> # =============================================
>> from platform import system as OStype
>> from time import clock
>>
>> xsi = Application
>> log = xsi.LogMessage
>> sel = xsi.Selection
>>
>> start_time = clock()
>>
>> weights = [list(x) for x in sel(0).Envelopes(0).Weights.Array]
>>
>> timeTaken = clock() - start_time
>>
>> units = ["seconds" if OStype() is "Windows" else "milliseconds"][0]
>> msg = "It took "+str(timeTaken)+" "+units+" to process your code."
>>
>> log(msg)
>> # =============================================
>>
>> It's taking around 6 seconds for me.
>>
>>
>>
>> Eric Thivierge
>> ===============
>> Character TD / RnD
>> Hybride Technologies
>>
>>
>>   On 30/05/2013 4:05 PM, Jeremie Passerin wrote:
>>
>> Writting to the envelope array is usually pretty fast for me... what's
>> taking time (in my case) is doing all the normalization of values...
>>
>> This is how I read my weights :
>>
>> def getWeights(envelopeOp):
>>   weightsTuple = envelopeOp.Weights.Array
>>  return [weightsTuple[j][i] for i in range(len(weightsTuple[0])) for j
>> in range(len(weightsTuple))]
>>
>>  This is an example of how I set the weights (average weights) :
>>
>> def averageWeights(envelopeOp, points=None):
>>  '''
>>  \remarks set the weights of given points to the average weights of
>> given points
>>  \param envelopeOp Envelope Operator - the envelope operator.
>>  \param points List of Integer - Index of vertices to average.
>>  '''
>>
>>  deformerCount = envelopeOp.Deformers.Count
>>  weightsTuple = envelopeOp.Weights.Array
>>  weights = getWeights(envelopeOp)
>>   if points is None:
>>  points = range(mesh.ActivePrimitive.Geometry.Points.Count)
>>   a = [0] * deformerCount
>>  for pointIndex in points:
>>  for def_index in range(deformerCount):
>>  a[def_index] +=  weightsTuple[def_index][pointIndex]
>>
>>  for pointIndex in points:
>>  for def_index in range(deformerCount):
>>  weights[pointIndex*deformerCount + def_index] = a[def_index]/len(points)
>>   envelopeOp.Weights.Array = weights
>>
>>
>> On 30 May 2013 12:58, Eric Thivierge <ethivie...@hybride.com> wrote:
>>
>>> Anyone know if there is a way to speed up reading and writing speeds to
>>> the Weights Array for envelopes? It's extremely slow on high point count /
>>> high deformer count meshes.
>>>
>>> I'm using Python but I'm not sure if that is the reason for the
>>> slowness. Anyone else already do some testing or have any findings that may
>>> help?
>>>
>>> I'm writing some common tools that many have already done such as
>>> normalizing weights, pruning, symmetrizing, etc.
>>>
>>> Any experiences confirming this slowness or experiences where it is
>>> exponentially faster in other languages are welcome too.
>>>
>>> Thanks,
>>>
>>> --
>>>  Eric Thivierge
>>> ===============
>>> Character TD / RnD
>>> Hybride Technologies
>>>
>>>
>>>
>>
>>
>
>


--

Reply via email to