## Envelope.SetDeformerWeights2

### Introduced

v10.5 (2012)

### Description

Sets the envelope weights for a given deformer without normalizing the weights. Use the Envelope.SetDeformerWeights method if you want to normalize weights.
The deformer weights need to be passed in the cluster index order not in the geometry index order. To retrieve the cluster index corresponding to a given geometry index you can use Envelope.Elements in conjunction with ClusterElementCollection.FindIndex.

### C# Syntax

    Envelope.SetDeformerWeights2( X3DObject, Object );

### Scripting Syntax

    Envelope.SetDeformerWeights2( Deformer, [Weights] );

### Parameters

Parameter | Type | Description
--- | --- | ---
Deformer | X3DObject or expression | deformer object
Weights | Array of Doubles | Array of weights, one for each point influenced by the Envelope

### Examples

#### Python Example

    # This example shows how to set vertex envelope weights
    # on a deformer without normalizing the weights
    xsiApp = Application
    # Create the scene made of a cube and 3 nulls
    xsiApp.NewScene( None, False )
    root = xsiApp.ActiveProject.ActiveScene.Root
    grid = root.AddGeometry( "cube", "MeshSurface" )
    n = root.AddNull()
    n1 = root.AddNull()
    n2 = root.AddNull()
    # Move the nulls
    xsiApp.Translate( n, 1, 0, 1 )
    xsiApp.Translate( n1, 0, 0, 1 )
    xsiApp.Translate( n2, 0, 0, 0 )
    # Create a deformer list made of the 3 nulls
    deformers = XSIFactory.CreateObject( "XSI.Collection" )
    deformers.Add( n )
    deformers.Add( n1 )
    deformers.Add( n2 )
    # Create an Envelope Weight on the grid with the 3 nulls
    env = grid.ApplyEnvelope( deformers )
    # Output the current values of the Envelope Weight
    xsiApp.LogMessage( "Envelope Weights before user edit" )
    allWeights = env.GetWeights2( None )
    i = 0
    for vertexWeights in allWeights:
            sum = 0
            for singleWeight in vertexWeights:
                    sum += singleWeight
            xsiApp.LogMessage( "Vertex " + str( i ) + ": " +
                                               str( "Deformer 0: %4.1f, " % vertexWeights[ 0 ] ) +
                                               str( "Deformer 1: %4.1f, " % vertexWeights[ 1 ] ) +
                                               str( "Deformer 2: %4.1f, " % vertexWeights[ 2 ] ) +
                                               str( "Vertex Weight Sum: %5.1f" % sum ) )
            i += 1
    xsiApp.LogMessage( "" )
    # Set new vertex envelope weights for the first deformer
    env.SetDeformerWeights2( n, [10,10,10,10,10,10,10,10] )
    # Output the new values of the Envelope Weight
    xsiApp.LogMessage( "Envelope Weights after user edit" )
    allWeights = env.GetWeights2( None )
    i = 0
    for vertexWeights in allWeights:
            sum = 0
            for singleWeight in vertexWeights:
                    sum += singleWeight
            xsiApp.LogMessage( "Vertex " + str( i ) + ": " +
                                               str( "Deformer 0: %4.1f, " % vertexWeights[ 0 ] ) +
                                               str( "Deformer 1: %4.1f, " % vertexWeights[ 1 ] ) +
                                               str( "Deformer 2: %4.1f, " % vertexWeights[ 2 ] ) +
                                               str( "Vertex Weight Sum: %5.1f" % sum ) )
            i += 1
    #-----------------------------------------
    # Output of this example is the following:
    #-----------------------------------------
    # INFO : Envelope Weights before user edit
    # INFO : Vertex 0: Deformer 0:  0.0, Deformer 1: 41.5, Deformer 2: 58.5, Vertex Weight Sum: 100.0
    # INFO : Vertex 1: Deformer 0: 48.0, Deformer 1:  0.0, Deformer 2: 52.0, Vertex Weight Sum: 100.0
    # INFO : Vertex 2: Deformer 0:  0.0, Deformer 1: 41.5, Deformer 2: 58.5, Vertex Weight Sum: 100.0
    # INFO : Vertex 3: Deformer 0: 48.0, Deformer 1:  0.0, Deformer 2: 52.0, Vertex Weight Sum: 100.0
    # INFO : Vertex 4: Deformer 0:  0.0, Deformer 1: 57.8, Deformer 2: 42.2, Vertex Weight Sum: 100.0
    # INFO : Vertex 5: Deformer 0: 59.3, Deformer 1: 40.7, Deformer 2:  0.0, Vertex Weight Sum: 100.0
    # INFO : Vertex 6: Deformer 0:  0.0, Deformer 1: 57.8, Deformer 2: 42.2, Vertex Weight Sum: 100.0
    # INFO : Vertex 7: Deformer 0: 59.3, Deformer 1: 40.7, Deformer 2:  0.0, Vertex Weight Sum: 100.0
    # INFO :
    # INFO : Envelope Weights after user edit
    # INFO : Vertex 0: Deformer 0: 10.0, Deformer 1: 37.3, Deformer 2: 52.7, Vertex Weight Sum: 100.0
    # INFO : Vertex 1: Deformer 0: 10.0, Deformer 1:  0.0, Deformer 2: 52.0, Vertex Weight Sum:  62.0
    # INFO : Vertex 2: Deformer 0: 10.0, Deformer 1: 37.3, Deformer 2: 52.7, Vertex Weight Sum: 100.0
    # INFO : Vertex 3: Deformer 0: 10.0, Deformer 1:  0.0, Deformer 2: 52.0, Vertex Weight Sum:  62.0
    # INFO : Vertex 4: Deformer 0: 10.0, Deformer 1: 52.0, Deformer 2: 38.0, Vertex Weight Sum: 100.0
    # INFO : Vertex 5: Deformer 0: 10.0, Deformer 1: 40.7, Deformer 2:  0.0, Vertex Weight Sum:  50.7
    # INFO : Vertex 6: Deformer 0: 10.0, Deformer 1: 52.0, Deformer 2: 38.0, Vertex Weight Sum: 100.0
    # INFO : Vertex 7: Deformer 0: 10.0, Deformer 1: 40.7, Deformer 2:  0.0, Vertex Weight Sum:  50.7

### See Also

Envelope.SetDeformerWeights Envelope.GetWeights2