ImportShaderCompound
 
 
 

ImportShaderCompound

Introduced

v7.0

Description

Imports a shader compound.

Scripting Syntax

oReturn = ImportShaderCompound( [Container], Path );

Return Value

Shader or Texture object.

Parameters

Parameter Type Description
Container String Container to hold imported shader compound.

Default Value: Current selection

Path String Location of shader compound on disk.

Examples

Python Example

#
# This example demonstrates how to set up shader compound, export it to disk, and
# then import and connect it in a fresh scene.
#
app = Application
from win32com.client import constants as xsi
# For readability, we are always saving to the user's RTCompounds directory
path = XSIUtils.BuildPath(
        app.InstallationPath(xsi.siUserPath),
        "Data", "RTCompounds"
)
XSIUtils.EnsureFolderExists(path, 0)
# Convenience function to create and export a shader compound (innerSC.xsirtcompound)
# that we will reference/nest in another shader compound.
def CreateInnerCompound() :
        app.NewScene( None, 0 )
        app.CreatePrim( "Torus", "MeshSurface" )
        app.CreateShaderFromPreset( "Shaders\\Texture\\Gradient.Preset", 
                "Sources.Materials.DefaultLib.Scene_Material" )
        app.CreateShaderFromPreset( "Shaders\\Texture\\Grid.Preset", 
                "Sources.Materials.DefaultLib.Scene_Material" )
        app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Grid", 
                "Sources.Materials.DefaultLib.Scene_Material.Phong.ambient", 0 )
        app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Gradient", 
                "Sources.Materials.DefaultLib.Scene_Material.Grid.line_color", 0 )
        app.CreateShaderCompound( "Sources.Materials.DefaultLib.Scene_Material.Gradient,"
                + "Sources.Materials.DefaultLib.Scene_Material.Grid" )
        app.ExportShaderCompound( "Sources.Materials.DefaultLib.Scene_Material.ShaderCompound", 
                path+"\\innerSC.xsirtcompound" )
# Create the shader compound to be nested and save it to disk
CreateInnerCompound()
# Set up a new scene with a torus again
app.NewScene( None, 0 )
app.CreatePrim( "Torus", "MeshSurface" )
# Import the shader compound previously exported in the CreateInnerCompound() function
app.ImportShaderCompound( "Sources.Materials.DefaultLib.Scene_Material", 
        path+"\\innerSC.xsirtcompound" )
# Now connect the newly imported shader compound 
app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.ShaderCompound.ambient", 
        "Sources.Materials.DefaultLib.Scene_Material.Phong.ambient", 0 )
# Add some more shader connections
app.CreateShaderFromPreset( "Shaders\\Texture\\Fractal.Preset", 
        "Sources.Materials.DefaultLib.Scene_Material" )
app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Fractal", 
        "Sources.Materials.DefaultLib.Scene_Material.Phong.specular", 0 )
app.CreateShaderFromPreset( "Shaders\\Texture\\Ripple.Preset", 
        "Sources.Materials.DefaultLib.Scene_Material" )
app.SIConnectShaderToCnxPoint( "Sources.Materials.DefaultLib.Scene_Material.Ripple", 
        "Sources.Materials.DefaultLib.Scene_Material.Phong.diffuse", 0 )
# Create a new shader compound which will have shaders and the newly imported shader compound
app.CreateShaderCompound( "Sources.Materials.DefaultLib.Scene_Material.ShaderCompound,"
        + "Sources.Materials.DefaultLib.Scene_Material.Fractal,"
        + "Sources.Materials.DefaultLib.Scene_Material.Ripple" )

See Also

CreateShaderFromPreset CreateShadersFromMaterialPreset CreateShaderFromCLSID CreateShaderFromProgID CreateShaderCompound NestShaders UnnestShaders AddShaderCompoundPort RemoveShaderCompoundPort MoveShaderCompoundPort RenameShaderCompoundPort ExportShaderCompound ExplodeShaderCompound SetShaderCompoundPropertiesEx GetShaderCompoundProperties EditShaderCompoundPPGLogic