SIApplyShaderToCnxPoint

Introduced

v1.0

Description

Creates a shader from a preset and connects it to the specified shader connection points.

Scripting Syntax

oReturn = SIApplyShaderToCnxPoint( PresetObj, [InputObjs], [Name], [Value] );

Return Value

Returns the shader as either a Shader object (eg., when the shader is connected to a scene object) or a CollectionItem (eg., when the shader is connected to a pass).

Parameters

Parameter Type Description
PresetObj String or a preset object (see SIGetPreset) Shader Presets
InputObjs String List of shader connection points.

Default Value: Current selection

Name String Name of the shader

Default Value: If not specified, the name is automatically generated.

Value Boolean True to disconnect the previous shader, False to keep the previous shader

Default Value: True

Examples

VBScript Example

'

' This example creates a sphere, applies a lambert shader to it, prints out

' the list of connection points to that shader, connects the rounded 

' connection point to the toon shader and then prints the updated list.

'

' Create the sphere to which the shader will be connected

set oSphere = CreatePrim( "Sphere", "NurbsSurface" )

' Apply a lambert shader to instantiate the material

set oShader = SIApplyShader( InstallationPath( siFactoryPath ) _

				& "\Data\DSPresets\Shaders\Material\Lambert.Preset", _

				oSphere, "Christopher" )

' Convert the shader to a Shader object 

set oShader = oShader(0)

' Print lambert shader info 

printShaderInfo oShader

' For convenience, create a collection to hold the parameters

' to be disconnected (Surface and Shadow connection points).

set oCnxPoints = CreateObject( "XSI.Collection" )

oCnxPoints.Add oSphere & ".material.Surface"

oCnxPoints.Add oSphere & ".material.Shadow"

' Use that collection to disconnect the shader from the material 

set oToony = SIApplyShaderToCnxPoint( "Material\Toon_Paint_Rounded", oCnxPoints, "Loonies" )

' Convert the shader to a Shader object 

set oToony = oToony(0)

' Print toon shader info 

printShaderInfo oToony

' This is a convenience routine that prints information about the shader

sub printShaderInfo( in_shader )

	' From the shader object you can get the material it belongs to

	set oMaterial = in_shader.Owners(0)

	' Use the material to return the parameters that are connected and

	' print out their names

	for each p in oMaterial.Parameters

		if TypeName( p.Source ) <> "Nothing" then

			LogMessage p.ScriptName & " is connected to " & p.Source.Name

		end if

	next

end sub

' Output of the above script:

' ...before adding the toon shader

'INFO : "surface is connected to Christopher"

'INFO : "shadow is connected to Christopher"

'INFO : "Photon is connected to Christopher"

'

' ...after adding the toon shader

'INFO : "surface is connected to Loonies"

'INFO : "shadow is connected to Loonies"

'INFO : "Photon is connected to Christopher"

See Also

AddObjectsToShader RemoveObjectsFromShader ApplyShader RemoveShaderFromCnxPoint SIConnectShaderToCnxPoint RemoveAllShadersFromCnxPoint