v4.0
Removes a list of texture layers from a container (shader or material). If no container is provided, then it removes the layer(s) from all containers, effectively deleting them.
RemoveTextureLayers( [InputObjs], [Container] ); |
Parameter | Type | Description |
---|---|---|
InputObjs | String |
List of layers which are to be removed from a container. Default Value: Current selection. |
Container | String or object | The container from which to remove the layers (if it currently contains them). If not specified, then the layers will be deleted from all containers in which they are found. |
' ' This example creates two shaders in a simple render tree, and applies ' texture layers to them. Then it removes some of the layers, illustrating ' the RemoveTextureLayers command. ' In particular, it builds the following stacks of layers. ' ' Phong Fractal ' A A ' B B ' C C ' option explicit dim oSph, oPhong, oFractal, oLyr(2) ' 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 'C' to both containers at the end. set oLyr(0) = AddTextureLayer( , oPhong & "," & oFractal, "A", True ) set oLyr(1) = AddTextureLayer( , oPhong & "," & oFractal, "B", True ) set oLyr(2) = AddTextureLayer( , oPhong & "," & oFractal, "C", True ) ' ' Now start removing. First we'll remove layer 'A' from just one ' of the containers. RemoveTextureLayers oLyr(0), oPhong(0) ' Now we'll remove layer 'B' from all containers which hold it. RemoveTextureLayers oLyr(1) 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 ' C ' 'INFO : Texture Layers in Container: sphere.Material.Phong.Fractal ' A ' C ' |