User Guide Cancel

Scripting API | Ecosystem and Plug-ins

  1. Substance 3D home
  2. Ecosystems and Plugins
    1. Home
    2. Game Engines
      1. Unreal Engine
        1. Unreal Engine 5
          1. Unreal Engine 5 overview
          2. Unreal Engine 5 Release Notes
            1. Unreal plugin 5.3.2
            2. Unreal plugin 5.0.3
            3. Unreal plugin 5.0.2
            4. Unreal plugin 5.0.1
          3. Plugin Overview - UE5
          4. Plugin Settings - UE5
          5. Substance Input Image - UE5
          6. Material Instance Definition - UE5
          7. Material Template Usage - UE5
          8. Out-of-the-Box Material Templates
          9. Tiling Substance - UE5
          10. Substance 3D Plugin Default Templates
          11. Substance 3D Assets Library Usage - UE5
          12. Blueprints - UE5
            1. Blueprint(UE5): Substance material parameters
            2. Blueprint(UE5): Dynamic Material Instance Skip to end of metadata
            3. Blueprint(UE5): Aggregate Substance
            4. Blueprint(UE5): Node Reference
          13. Unreal Engine 5 Scripting
          14. Installing to Source Builds
        2. Unreal Engine 4
          1. Unreal Engine 4 overview
          2. Unreal Engine 4 plugin release notes
            1. Unreal plugin 4.27.0.1
            2. Unreal plugin 4.26.0.21
            3. Unreal plugin 4.26.0.2
            4. Unreal plugin 4.26.0.1
            5. Unreal plugin 4.25.0.5
            6. Unreal plugin 4.25.0.4
            7. Unreal plugin 4.25.0.3
            8. Unreal plugin 4.24.0.3
            9. Unreal plugin 4.23.0.2
            10. Unreal plugin 4.23.0.1
            11. Unreal plugin 4.22.0.33
            12. Unreal plugin 4.22.0.32
            13. Unreal plugin 4.21.0.31
          3. Plugin Overview - UE4
          4. Plugin Settings - UE4
          5. Substance Input Image - UE4
          6. Material Instance Definition - UE4
          7. Tiling Substance - UE4
          8. Working with Bump Offset (Parallax) - UE4
          9. Working with Displacement - UE4
          10. Source in UE4
          11. Live Link in UE4
          12. Blueprints - UE4
            1. Blueprint(UE4): Substance material parameters
            2. Blueprint(UE4): Dynamic Material Instance
            3. Blueprint(UE4): Aggregate Substance
            4. Blueprint(UE4): Node Reference
          13. Unreal Engine 4 Scripting
      2. Unity
        1. Unity overview
        2. Unity Release Notes
          1. Unity 3.0.0
          2. Unity 2.6.0
          3. Unity 2.5.4
          4. Unity 2.5.3
          5. Unity 2.5.2
          6. Unity 2.5.1
          7. Unity 2.4.5
          8. Unity 2.4.4
          9. Unity 2.4.3
          10. Unity 2.4.1
          11. Unity 2.4.0
          12. Unity 2.3.4
          13. Unity 2.3.2
          14. Unity 2.2.2
          15. Unity 2.2.0
        3. Downloading Substance 3D Plugin in Unity
        4. Unity Plugin Overview
        5. Unity Preferences
        6. Optimization Guidelines
        7. Upgrading Projects/Known Issues
        8. Managing Substance Graphs
        9. Changing parameters
        10. Generated Textures (Packing)
        11. Rendering Color Space
        12. Using Image Inputs
        13. Publishing for Mobile
        14. Substance 3D for Unity Scripting
          1. Unity Scripting overview
          2. Class Documentation
            1. SubstanceEditorTools
            2. SubstanceRuntime Class
            3. SubstanceRuntimeGraph Class
              1. SubstanceRuntimeGraph Class overview
              2. Member Function Documentation
              3. Detailed Description
        15. Scripting in Unity (Deprecated)
        16. API Overview
        17. Scripting API
        18. C# Example Script
        19. Substance 3D Assets Library Usage
        20. Removing Substance Plugin
        21. Substance 3D in Unity Tutorials
        22. Physical Size in Unity
        23. Sharing sbsar Files Between Projects
      3. Lumberyard
        1. Lumberyard overview
        2. Importing a Substance
        3. Assigning a Substance
        4. Parameters and outputs
        5. Flow Graph API
      4. Roblox
    3. 3D Applications
      1. Maya
        1. Maya Plugin Release Notes
          1. Maya 3.0.1
          2. Maya 2.4.1
          3. Maya 2.4.0
          4. Maya 2.3
          5. Maya 2.2.3
          6. Maya 2.2.2
          7. Maya 2.2.1
          8. Maya 2.1.9
          9. Maya 2.1.8
          10. Maya 2.1.7
          11. Maya 2.1.6
          12. Maya 2.1.5
          13. Maya 2.1.4
          14. Maya 2.1.3
          15. Maya 2.1.2
          16. Maya 2.1.1
          17. Maya 2.1.0
          18. Maya 2.0.3
          19. Maya 0.9.11
        2. Substance in Maya Overview
        3. Installation
        4. Substance Output Node
        5. Using Workflows
        6. Working with Outputs
        7. Procedural Sampling
        8. Presets
        9. Settings
        10. Arnold Support
        11. Apply Workflow To Maps
        12. Maya Scripting
        13. Physical Size in Maya
      2. 3ds Max
        1. 3ds Max Plugin Release Notes
          1. 3ds Max 3.0.2
          2. 3ds Max 2.8.0
          3. 3ds Max 2.7.0
          4. 3ds Max 2.4.2
          5. 3ds Max 2.4.1
          6. 3ds Max 2.4.0
          7. 3ds Max 2.3.4
          8. 3ds Max 2.3.3
          9. 3ds Max 2.3.2
          10. 3ds Max 2.3.1
          11. 3ds Max 2.2.0
        2. Substance in 3ds Max Overview
        3. Substance Settings
        4. Using Presets
        5. Batch Import
        6. Using Workflows in 3ds Max
        7. Substance Source
        8. Animating a Substance material
        9. 3ds MAX Scripting API
        10. Troubleshooting
      3. MODO
        1. MODO overview
        2. Modo Plugin Release Notes
          1. Modo 2.7.3
          2. Modo v. 2.7.5
          3. Modo v. 2.7.4
          4. Modo v. 2.7.3
          5. Modo v. 2.7.2
          6. Modo v. 2.7.1
          7. Modo v. 2.7.0
        3. Substance in MODO Overview
        4. Modo Installation
        5. Parameters
        6. Custom Materials
        7. Working with Normals
        8. Working with Emissive
        9. Bump and Displacement
        10. Working with References
        11. Animating Substances
        12. Copy/Duplicate Substance
        13. Environment and Rendering Setup
        14. Modo Switch Engine
        15. Tiling Modo textures
      4. Cinema 4D
        1. Cinema 4D overview
        2. Set-Up
        3. Using the Substance Plugin
        4. Substance Asset Manager
        5. Substance Shader
        6. Attribute Manager
        7. Visual Feedback of Animated Substances
      5. Houdini
      6. Blender
        1. Blender overview
        2. Release Notes
          1. Add-on 2.0.0+
          2. Add-on 1.0.2
          3. Add-on 0.9.5
          4. Add-on 0.9.3
          5. Add-on 0.9.2
          6. Add-on 0.9.1
        3. Substance in Blender Overview
        4. Downloading and Installing the Plugin
        5. Preferences
        6. The Substance 3D Panel
        7. Shortcuts and Navigation
        8. Workflows
        9. Physical size in Blender
        10. Substance 3D Assets Library
        11. Troubleshooting
        12. Uninstalling the Add-on
        13. Substance 3D Add-on for Blender Tutorials
    4. Creative Cloud Applications
      1. Photoshop
    5. Renderers
      1. Converting Substance outputs
      2. Color Management
        1. Color Management overview
        2. Substance textures in Maya
        3. Substance textures in 3ds Max
      3. Arnold
        1. Arnold overview
        2. Arnold - Substance in 3ds Max
        3. Arnold - Substance in Maya
        4. Arnold - Substance Painter
      4. Vray
        1. Vray overview
        2. Vray Next - Substance in Maya
        3. Vray Next - Substance in 3ds Max
        4. Vray Next - Substance Painter
      5. Renderman
        1. Renderman overview
        2. Renderman for Maya
        3. Renderman - Substance Painter
      6. Redshift
        1. Redshift overview
        2. Redshift for 3ds Max
        3. Redshift for Maya
        4. Redshift - Substance Painter
      7. Maxwell
        1. Maxwell overview
        2. Maxwell - Substance in Maya
        3. Maxwell - Substance Painter
      8. Corona
        1. Corona overview
        2. Corona for 3ds Max
        3. Corona - Substance Painter
      9. Octane
        1. Octane overview
        2. Octane for 3ds Max
        3. Octane for MODO
      10. Keyshot
      11. Thea
      12. Maverick
        1. Maverick overview
        2. Substance Painter Integration
        3. Substance SBSAR Integration
      13. Toolbag
      14. Cycles and Eevee
        1. Cycles and Eevee overview
        2. Cycles and Eevee - Substance 3D for Blender
        3. Cycles and Eevee - Susbtance Painter
    6. Partnerships
      1. Substance 3D and Maxon One
      2. Substance 3D and Maxon One FAQ

Scripting API

Substance in Unity API - 2.2.0

Substance material parameters

Public MethodDescriptionParameter

public float GetInputFloat(string inputName)

Get Substance Float Input

String inputName Name of the input in the SBSAR

public int SetInputFloat(string inputName, float value)

Update Substance Float Input

String inputName Name of the input in the SBSAR
Float value Value used to update parameter

public void SetInputVector2(string inputName, Vector2 value)

Update Substance Vector2 Input

String inputName Name of the input in the SBSAR
Vector2 input Values used to update parameter

public vector2 GetInputVector2(string inputName)

Get Substance Vector2 Input

String "inputName" Name of the input in the SBSAR

public void SetInputVector3(string inputName, Vector3 value)

Update Substance Vector3 Input

String inputName Name of the input in the SBSAR
Vector3 value Values used to update parameter

public vector3 GetInputVector3(string inputName)

Get Substance Vector3 InputString inputName Name of the input in the SBSAR

public void SetInputVector4(string inputName, Vector4 value)

Update Substance Vector4 Input

String inputName Name of the input in the SBSAR
Vector4 value Values used to update parameter

public vector4 GetInputVector4(string inputName)

Get Substance Vector4 Input

String inputName Name of the input in the SBSAR

public void SetInputColor(string inputName, Color value)

Update Substance Color Input

String inputName Name of the input in the SBSAR
Color Value used to update the parameter

public color GetInputColor(string inputName, int dataType)

Get Substance Color

String inputName Name of the input in the SBSAR
Int dataType

public void SetInputBool(string inputName, bool value)

Update Substance Boolean Input

String inputName Name of the input in the SBSAR
Bool value Value used to update the parameter

public bool GetInputBool(string inputName)

Get Substance Boolean Input

String inputName Name of the input in the SBSAR

public void SetInputInt(string inputName, int value)

Update Substance Int Input

String inputName Name of the input in the SBSAR
Int value Value used to update the parameter

public int GetInputInt(string inputName)

Get Substance Int Input

String inputName Name of the input in the SBSAR

public void SetInputVector2Int(string inputName, int x, int y)

Update Substance Vector2Int Input

String inputName Name of the input in the SBSAR
Int x Value used to update the parameter
Int y Value used to update the parameter
int[] Substance.Game.SubstanceGraph.GetInputVector2Int(
string inputName)
Get array of 2 int (Vector2Int’s x & y values)String inputName Name of the input in the SBSAR
Int x Value used to update the parameter
Int y Value used to update the parameter
void Substance.Game.SubstanceGraph.SetInputVector3Int(
string inputName, int x, int y, int z)
Update Substance Vector3Int InputString inputName Name of the input in the SBSAR
Int x Value used to update the parameter
Int y Value used to update the parameter
Int z Value used to update the parameter
int[] Substance.Game.SubstanceGraph.GetInputVector3Int(
string inputName)
Get array of 3 int (Vector3Int’s x, y & z values)String inputName Name of the input in the SBSAR
Int x Value used to update the parameter
Int y Value used to update the parameter
Int z Value used to update the parameter
void Substance.Game.SubstanceGraph.SetInputVector4Int(
string inputName, int x, int y, int z, int w)
Update Substance Vector4Int InputString inputName Name of the input in the SBSAR
Int x Value used to update the parameter
Int y Value used to update the parameter
Int z Value used to update the parameter
Int w Value used to update the parameter
int[] Substance.Game.SubstanceGraph.GetInputVector4Int(
string inputName)
Get array of 4 int (Vector4Int’s x, y, z & w values)String inputName Name of the input in the SBSAR
Int x Value used to update the parameter
Int y Value used to update the parameter
Int z Value used to update the parameter
Int w Value used to update the parameter
void Substance.Game.SubstanceGraph.SetInputString(
string inputName, string value)
Update Substance string InputString inputName Name of the input in the SBSAR
String value used to update the parameter
string Substance.Game.SubstanceGraph.GetInputString(
string inputName)
Get Substance string inputString inputName Name of the input in the SBSAR
void Substance.Game.SubstanceGraph.SetInputTexture(
string inputName, Texture2D value)
Update Substance Texture2D InputString inputName Name of the input in the SBSAR
Texture2D value used to update the parameter
Texture2D Substance.Game.SubstanceGraph.GetInputTexture(
string inputName)
Get Substance Texture2D InputString inputName Name of the input in the SBSAR
VectorInt Substance.Game.SubstanceGraph.GetTexturesResolution()Get the graph’s Target Settings textures resolution (Vector4Int’s x = width, y = height, values can be 32, 64, 128, 256, 512, 1024, 2048 & 4096)None
int Substance.Game.SubstanceGraph.SetTexturesResolution(
Vector2Int size)
Set the graph’s Target Settings textures resolution (Vector2Int’s x = width, y = height, values can be 32, 64, 128, 256, 512, 1024, 2048 & 4096)
Returns 0 if success, otherwise: -1.
Vector2Int size used to update the parameter.
List Substance.Game.SubstanceGraph.GetGeneratedTextures()Returns all Substance Texture2D objects used by the graph’s material shader.None
int Substance.Game.SubstanceGraph.Bake(
Texture2D texture, string absolutePath)
Generate .png files for all Substance Texture2D objects used by the graph’s material shader.None
Substance.Game.SubstanceGraph.Duplicate()Duplicate a Substance GraphNone
Substance.Game.SubstanceGraph.Duplicate(string newGraphName)Duplicate a Substance Graph and give it a name (the corresponding material will also have the same name)String newGraphName
Substance.Game.SubstanceGraph.GetInputProperties()

Query procedural input information, returns an array of 'InputProperties', with:

public struct InputProperties
{
public string name; // inputName
public string label; // widget’s label in GUI
public string group; // widget’s group in GUI

public string[] componentLabels; // for sliders (up to 4 labels)
public string[] enumOptions; // for optionMenu

public InputPropertiesType type;

public Vector4 maximum; // for sliders
public Vector4 minimum; // for sliders
public float step; // for sliders
}

public enum InputPropertiesType
{
Boolean = 0,// 0
Float, // 1
Vector2, // 2
Vector3, // 3
Vector4, // 4
Color, // 5
Enum, // 6
Texture, // 7
String, // 8
Invalid = -1// -1
};

None
bool Substance.Game.SubstanceGraph.HasInput(string inputName)Check if an input exists in a graph, returns true/false:String inputName Name of the input in the SBSAR
bool Substance.Game.SubstanceGraph.IsInputVisible(string inputName)Check if a visibleif input is visible, returns true/falseString inputName Name of the input in the SBSAR

Rendering

Public MethodDescriptionParameter
public void QueueForRender()Add Substance graph to queueNone
mySubstance.RenderAsync()Render all queued Substance graphs asynchronouslyNone
mySubstance.RenderSync()Render all queued Substance graphs synchronously None

Scripting in Editor mode:

In order to make graph modifications permanent in Editor mode, a re-import of each corresponding Substance must be performed. This is done with the following function:

static void ReImportSubstance(Substance.Game.Substance pSubstance)

{

// Re-import Substance object:
SubstanceImporter importer =
AssetImporter.GetAtPath(pSubstance.assetPath) as SubstanceImporter;
importer.CommitSubstanceToImporter(pSubstance); // plugin function
EditorUtility.SetDirty(importer);
importer.SaveAndReimport();

}

(with ‘CommitSubstanceToImporter’, a Substance plugin function: copy all modified graph parameters and/or inputs to the Substance importer object, which is then serialized to disk via Unity’s importer mechanism)

 Adobe

Get help faster and easier

New user?

Adobe MAX 2024

Adobe MAX
The Creativity Conference

Oct 14–16 Miami Beach and online

Adobe MAX

The Creativity Conference

Oct 14–16 Miami Beach and online

Adobe MAX 2024

Adobe MAX
The Creativity Conference

Oct 14–16 Miami Beach and online

Adobe MAX

The Creativity Conference

Oct 14–16 Miami Beach and online