MoveTextureLayers

Introduced

4.0

Description

Moves texture layers up or down in the ordered stacks of layers. This considers the overall order of layers in other containers that share the given texture layers.

Scripting Syntax

    MoveTextureLayers( [InputObjs], [Offset] )

Parameters

Parameter | Type | Description
InputObjs | String | List of texture layers to be moved up or down in the overall list of layers. Default Value: Current selection.
Offset | Long | Amount to move the specified layers. A negative value moves them up in the list, positive moves them down. The absolute value is the number of steps to move them in that direction. Default Value: -1

Examples

VBScript Example

    '
    ' This example creates two shaders in a simple render tree, and applies
    ' texture layers to them.  Then it moves some of the layers up and down,
    ' illustrating the MoveTextureLayers command.
    ' In particular, it builds the following stacks of layers.
    '
    ' Phong      Fractal
    '   A           A
    '   B           E
    '   C           B
    '   D           D
    '
    option explicit
    dim oSph, oPhong, oFractal, oLyr(4)

    ' Build our shaders (a Phong and a Fractal), which will be the "texture
    ' layer containers" that will each be able to hold a stack of layers.
    NewScene , False
    set oSph = CreatePrim( "Sphere", "MeshSurface" )
    set oPhong = SIApplyShader( "Phong", oSph )
    set oFractal = BlendInPresetsInsp( "Fractal", , , True, siReplaceNoBlend, False, False, True )

    ' Now create and add all the layers, as indicated above.
    ' Add 'A', 'B' and 'D' to both containers at the end.
    set oLyr(0) = AddTextureLayer( , oPhong & "," & oFractal, "A", True )
    set oLyr(1) = AddTextureLayer( , oPhong & "," & oFractal, "B", True )
    set oLyr(3) = AddTextureLayer( , oPhong & "," & oFractal, "D", True )
    ' Add 'C' before 'D' in the first container.
    set oLyr(2) = AddTextureLayer( , oPhong, "C", False, oLyr(3) )
    ' Add 'E' after 'A' in the second container.
    set oLyr(4) = AddTextureLayer( , oFractal, "E", True, oLyr(0) )

    '
    ' Now start moving layers around.  Note that they dependencies
    ' as expressed when we were adding layers will be maintained at all
    ' times.
    ' Start by moving 'D' up two spots. -2 means move up two steps.
    MoveTextureLayers oLyr(3), -2
    ' It is likely now above 'B' and 'C'.  The two steps could equally well have
    ' moved it above 'C' and 'E' -- either is valid, based on the relationships
    ' expressed above.  Which one actually happens depends on how the moving
    ' algorithm is implemented and the order in which the containers and layers
    ' were created.

    ' Now let's move 'A' and 'E' down a bunch of slots, ensuring they are
    ' at the end.  We'll just provide a big number for the number of steps down
    ' to make, if we can't guess the exact number...
    MoveTextureLayers oLyr(0) & "," & oLyr(4), 10

    PrintTextureLayersInContainer oPhong
    PrintTextureLayersInContainer oFractal

    sub PrintTextureLayersInContainer( in_cont )
       dim oStack, oItem, oStr
       oStr = "Texture Layers in Container: " & in_cont & vbCrLf
       set oStack = EnumElements( in_cont & ".TextureLayers" )
       for each oItem in oStack
           oStr = oStr & "    " & oItem.name & vbCrLf
       next
       logmessage oStr
    end sub

    '
    ' The output from the example should look something like this:
    '
    'INFO : "Texture Layers in Container: sphere.Material.Phong
    '    D
    '    B
    '    C
    '    A
    '"
    'INFO : "Texture Layers in Container: sphere.Material.Phong.Fractal
    '    D
    '    B
    '    A
    '    E
    '"

See Also

AddTextureLayer | RemoveTextureLayers | AddTextureLayerPorts | TextureLayer.Move

Autodesk Softimage v7.5