- Substance 3D home
- User guide
- Glossary
- Getting started
- Interface
- Interface
- Customizing your workspace
- Home screen
- Main toolbar
- Preferences
- Explorer
- Graph view
- Library
- Properties
- 2D view
- 3D view
- Dependency manager
- Resources
- Resources
- Importing, linking and new resources
- Bitmap resource
- Vector graphics (SVG) resource
- 3D scene resource
- AxF (Appearance eXchange Format)
- Font resource
- Warnings from dependencies
- Substance graphs
- Substance graphs
- Substance graph key concepts
- Creating a Substance graph
- Exposing a parameter
- Graph parameters
- Inheritance in Substance graphs
- Output size
- Values in Substance graphs
- Publishing Substance 3D asset files (SBSAR)
- Exporting bitmaps
- Exporting PSD files
- Sample Substance graphs
- Warnings in Substance graphs
- Nodes reference for Substance graphs
- Nodes reference for Substance graphs
- Atomic nodes
- Node library
- Node library
- Texture generators
- Texture generators
- Noises
- Noises
- 3D Perlin noise
- 3D Perlin noise fractal
- 3D Ridged noise fractal
- 3D Simplex noise
- 3D Voronoi
- 3D Voronoi fractal
- 3D Worley noise
- Anisotropic noise
- Blue noise fast
- BnW spots 1
- BnW spots 2
- BnW spots 3
- Cells 1
- Cells 2
- Cells 3
- Cells 4
- Clouds 1
- Clouds 2
- Clouds 3
- Creased
- Crystal 1
- Crystal 2
- Directional noise 1
- Directional noise 2
- Directional noise 3
- Directional noise 4
- Directional scratches
- Dirt 1
- Dirt 2
- Dirt 3
- Dirt 4
- Dirt 5
- Dirt gradient
- Fluid
- Fractal sum 1
- Fractal sum 2
- Fractal sum 3
- Fractal sum 4
- Fractal sum base
- Fur 1
- Fur 2
- Fur 3
- Gaussian noise
- Gaussian spots 1
- Gaussian spots 2
- Grunge concrete
- Grunge Damas
- Grunge galvanic large
- Grunge galvanic small
- Grunge leaks
- Grunge leaky paint
- Grunge map 001
- Grunge map 002
- Grunge map 003
- Grunge map 004
- Grunge map 005
- Grunge map 006
- Grunge map 007
- Grunge map 008
- Grunge map 009
- Grunge map 010
- Grunge map 011
- Grunge map 012
- Grunge map 013
- Grunge map 014
- Grunge map 015
- Grunge rough dirty
- Grunge rust fine
- Grunge scratches dirty
- Grunge scratches fine
- Grunge scratches rough
- Grunge shavings
- Grunge splashes dusty
- Grunge spots
- Grunge spots dirty
- Liquid
- Messy fibers 1
- Messy fibers 2
- Messy fibers 3
- Microscope view
- Moisture noise
- Perlin noise
- Plasma
- Caustics
- Voronoi
- Voronoi fractal
- Waveform 1
- White noise
- White noise fast
- Patterns
- Patterns
- 3D linear gradient
- 3D volume mask
- Alveolus
- Arc pavement
- Brick 1
- Brick 2
- Brick generator
- Checker 1
- Cube 3D
- Cube 3D GBuffers
- Fibers 1
- Fibers 2
- Gaussian 1
- Gaussian 2
- Gradient axial
- Gradient axial reflected
- Gradient circular
- Gradient linear 1
- Gradient linear 2
- Gradient linear 3
- Gradient radial
- Height extrude
- Mesh 1
- Mesh 2
- Panorama shape
- Polygon 1
- Polygon 2
- Scratches generator
- Shape
- Shape extrude
- Shape mapper
- Shape splatter
- Shape splatter blend
- Shape splatter data extract
- Shape splatter to mask
- Splatter
- Splatter circular
- Star
- Starburst
- Stripes
- Tile generator
- Tile random
- Tile random 2
- Tile sampler
- Triangle grid
- Weave 1
- Weave 2
- Weave generator
- Filters
- Filters
- Adjustments
- Adjustments
- Apply color palette
- Auto levels
- Channel mixer
- Chrominance extract
- Clamp
- Color match
- Color to mask
- Contrast/Luminosity
- Convert to linear
- Convert to sRGB
- Create color palette (16)
- Grayscale conversion advanced
- Hald CLUT
- HDR range viewer
- Height map frequencies mapper
- Highpass
- Histogram compute
- Histogram equalize
- Histogram range
- Histogram render
- Histogram scan
- Non-uniform histogram scan
- Histogram select
- Histogram shift
- ID to mask grayscale
- Invert
- Lighting cancel high frequencies
- Lighting cancel low frequencies
- Luminance highpass
- Min max
- Modify color palette
- Pow
- Quantize color (Simple)
- Quantize color
- Quantize grayscale
- Replace color
- Replace color range
- Threshold
- View color palette
- Blending
- Blurs
- Channels
- Effects
- Effects
- 3D texture position
- 3D texture SDF
- 3D texture surface render
- 3D texture volume render
- Ambient occlusion (HBAO)
- Ambient occlusion (RTAO)
- Anisotropic Kuwahara color
- Anisotropic Kuwahara grayscale
- Bevel
- Bevel smooth
- Cross section
- Curvature
- Curvature smooth
- Curvature sobel
- Diffusion color
- Diffusion grayscale
- Diffusion UV
- Directional distance
- Edge detect
- Emboss with gloss
- Extend shape
- Flood fill
- Flood fill mapper
- Flood fill to Bbox size
- Flood Fill to gradient
- Flood Fill to grayscale/color
- Flood Fill to index
- Flood Fill to position
- Flood Fill to random color
- Flood Fill to random grayscale
- FXAA
- Glow
- Mosaic
- Multi directional warp
- Non-uniform directional warp
- Reaction diffusion fast
- RT irradiance
- RT shadow
- Shadows
- Shape drop shadow
- Shape glow
- Shape stroke
- Summed area table
- Swirl
- Uber emboss
- Vector morph
- Vector warp
- Normal map
- Tiling
- Transforms
- Material filters
- Material filters
- 1-click
- Effects (Material)
- Transforms (Material)
- Blending (Material)
- PBR utilities
- Scan processing
- Mesh-based generators
- Mesh-based generators
- Mask generators
- Weathering
- Utilities (Mesh-based generators)
- Spline & Path tools
- Spline & Path tools
- Working with Path & Spline tools
- Path tools
- Spline tools
- Spline tools
- Paths to Spline
- Point list
- Scatter on Spline color
- Scatter on Spline grayscale
- Spline 2D transform
- Spline (Cubic)
- Spline (Poly quadratic)
- Spline append
- Spline bridge (2 Splines)
- Spline bridge (List)
- Spline bridge mapper color
- Spline bridge mapper grayscale
- Spline circle
- Spline fill
- Spline flow mapper
- Spline mapper color
- Spline mapper grayscale
- Spline merge list
- Spline render
- Spline sample height
- Spline sample thickness
- Spline select
- Spline warp
- UV mapper color
- UV mapper grayscale
- 3D view (Library)
- 3D view (Library)
- HDRI tools
- Node library
- Substance function graphs
- Substance function graphs
- What is a Substance function graph?
- Create and edit a Substance function graph
- The Substance function graph
- Variables
- FX-maps
- FX-Maps
- How it works
- The Iterate node
- The Quadrant node
- Using Substance function graphs in FX-Maps
- Warnings in Substance function graphs
- Sample Substance function graphs
- Nodes reference for Substance function graphs
- MDL graphs
- Bakers
- Best practices
- Pipeline and project configuration
- Color management
- Package metadata
- Scripting
- Scripting
- Plugin basics
- Plugin search paths
- Plugins packages
- Plugin manager
- Python editor
- Accessing graphs and selections
- Nodes and properties
- Undo and redo
- Application callbacks
- Creating user interface elements
- Adding actions to the Explorer toolbar
- Using color management
- Using spot colors
- Logging
- Using threads
- Debugging plugins using Visual Studio Code
- Porting previous plugins
- Packaging plugins
- Scripting API reference
- Technical issues
- Release notes
Exposing parameters is one of the most powerful tools and is key to opening up your graphs to other applications such as Substance 3D Painter, Substance 3D Sampler and Substance Integrations for Maya and 3DS Max.
This page explains all required concepts to get started exposing. It's recommended that you first learn what a Graph Instance is before continuing on this page. It's also good to have a grasp on the difference between Publish and Exporting, as well as the filetypes involved.
In this page
*Dashed, transparent lines above are an abstract representation of the connection
from exposed parameters to Graph Parameters.
A parameter is a simple value, with a UI element, that controls the behavior of a graph. You use them constantly in all Substance software: to change a color, to set blend mode, to choose an opacity value, etc... Without parameters, Substance software would not allow for any customization at all.
Parameters can come in many different forms: sliders, dials, type-in boxes, drop-down menus, etc... The values they represent can be many different types: decimal values, whole (integer) values, boolean (true/false) values, even text snippets.
Exposing is the process of making a parameter available for use outside of your current Graph View. When building a Graph, you usually select a node to change the parameters in its properties; when exposed, you enable access to this parameter from an external control panel. This "external control panel" can mean different things based on the context: when used as a Graph Instance inside Designer, it just acts as another node. When used in Substance 3D Painter, Substance 3D Sampler or an integration, these exposed parameters will be the only control you have over the graph.
Exposing Parameters is what takes Substance 3D Designer beyond a simple texture editor, allowing you to create customisable, dynamic texture-generation tools . Without exposing, Substance Materials wouldn't be very different from static textures: you'd have no way to modify their outputs.
Substance graphs can get complicated and can contain hundreds of parameters at once. It doesn't make sense to always show all parameters to a user, especially if you are building graphs with a simple goal, that don't need many parameters. When exposing parameters, you work as a UI or UX designer: you think what controls make sense, which values are required and how to make it easy to use for yourself, for other users online or for your coworkers.
Mathematical knowledge is not required to make good use of Exposing Parameters, nor is the use of functions. As a beginning user you can almost completely avoid having to do mathematical operations in Function graphs. The only thing that is strongly recommended, is a decent base knowledge of the different data types such as Integer, Float and Boolean.
Currently there are two main methods to expose parameters. One method is more suited for quickly exposing a single parameter, the second method is more suited for exposing multiple parameters in one sweep.
SINGLE EXPOSE METHOD
-
Find the parameter you want to expose in the Properties Window, under the Specific Parameters tab
-
Click the dropdown options button
-
Choose Expose as new graph input from the drop down list, the first option.
-
The Expose parameter dialog appears, set any parameter properties as you wish.
It is recommended to at least change the Identifier and Label
-
Press OK to confirm
-
The parameter's name turns blue, and the
Edit parameter function button appears next to the dropdown options to confirm the parameter is exposed
Most numerical fields support basic math formulas as an input – E.g., 17+3.5
, 7/3
, (4+2)*3
. Press Enter to validate the formula and the result will be input in the field. If the formula is invalid, the field reverts to its previous value.
Some numerical fields in other parts of the application, such as in the Properties dock, also support this feature.
Batch expose method
When exposing one parameter, this method will be a bit slower than the previous. When exposing multiple parameters, it is much faster.
-
Instead of finding a single parameter, find the Multi-expose button at the top right of the Specific parameters tab
-
Choose Batch expose parameters... from the drop down menu
-
The Batch expose dialog appears, allowing you to customize the exposing of all of a node's Specific parameters
-
Use All, None or specific checkboxes to decide which parameters to expose
-
Click on a parameter name under the Graph input identifier column in the list to change its name.
-
Click on a Group name under the Graph input group column in the list to add a (sub-)group for one specific parameter
-
Use the Graph input identifier and Graph input group type-in boxes at the bottom to add prefix, suffix and input groups to all exposed parameters at once. All these values are applied on top of the per-parameter settings.
-
Click OK to confirm and expose all selected parameters. The parameter names now show blue to confirm the parameters are exposed, as well as an Edit function button.
Parameter type |
Reason |
---|---|
Require widgets which are not available for user-created parameters. |
Another significant limitation is related to static parameters. These cannot be changed in a published Substance 3D asset (SBSAR).
Static parameters – as opposed to dynamic parameters – cannot be edited on-the-fly after the graph has been cooked – i.e., processed in order to run its algorithm quickly and efficiently. Cooking occurs in Designer every time the graph is edited or published.
As such, static parameters are visible and editable in Designer, but are hidden in a published Substance 3D asset. You may use Preview mode to see these limitations in effect before publishing to a Substance 3D asset: see 'Previewing parameters' below.
As a workaround, you may use a Switch or Multi Switch node and multiple sets of logic to switch between different values/states for these parameters.
Node |
Parameter |
---|---|
All nodes |
Tiling mode |
Color mode |
|
Color mode |
|
Blending mode |
|
Blending mode |
|
Pattern |
Modifying exposed parameters
Once exposed, it is no longer possible to access a parameter like before. Changing its value, renaming, arranging in the UI and even removing the parameter all happen on the Graph Properties level. This section details how to do so.
To change an exposed parameter's options either:
-
Click on the Dropdown options button next to the already exposed parameter
-
Choose Edit exposed graph input. This takes you straight to the relevant entry in the graph properties
-
Double-click in an empty area of your graph to get to the graph properties, then find the parameter in the list of Input parameters
-
Single click on your graph in the Explorer, then find the parameter in the list of Input parameters
INPUT PARAMETERS
All exposed Parameters are listed under the Input Parameters tab. The following properties are available for most common cases such as Floats and Integers with default Editor type.
- Identifier: Unique identifier for this parameter. Can not contain spaces or special characters.
- Label: UI-only Label. If no Label is defined, the identifier is shown in the UI. Can contain spaces and special characters
- Group: Group parameters together into collapsible section to keep long lists of parameters clean and manageable. Parameters are grouped together if they share the exact same group name. Use the
/
character to create sub-groups – e.g.My Group/My Sub-group
- Description: Textfield for description, used as tooltip.
Type / Editor: Set the data type as well as the UI editor type. Certain Editors are only available for certain data types (such a drop down list only for Integer). Changing Editor will in many cases wipe default values, be careful.
- Default: Default value the parameter starts out at. This is also the value used in your graph while previewing nodes. Try to use an easy, useable value here, avoid extreme cases.
- Min: Minimum value for UI
- Max: Maximum value for UI
- Clamp: Set wether Min and Max are soft or hard limits (allow the user to go past the limits).
- Step:Set the precison or granularity of the value.
- User Data: Custom user data, available for any purpose.
- Visible If: Special expression system to show or hide parameters based on external conditions. See Visible if: control visibility of inputs, outputs and parameters
Drop down list
A special case is the Drop down list for Integer types. There is no Default, Min or Max, just a single Value setting that allows you to define a list of Items.
- Every Item corresponds to an Item in the Drop Down List.
- The first value for an Item is the actual, internal integer used by the graph. Make sure you set these up correctly for your Multi Switch for example (they start at 1, not 0).
- The second value is the UI Label shown to the user.
- The third checkbox allows you to mark one Item as the default selected one.
- The X deletes an Item, the + adds an Item
Re-order
Re-ordering of Parameters can easily be done by dragging and dropping the dark, striped handles to the left of the input parameters name in the list. Keep in mind Grouping parameters can affect the order.
PREVIEWING PARAMETERS
As setting up parameters can be difficult without seeing the final result, a Preview Mode can be enabled, to check how the parameters UI will look and behave externally. Click the Preview tab in the top middle of the Input Parameters rollout.
Normally, any changes made in Preview Mode are discarded. You can however use the Apply button next to the eye icon to set the current values of the Preview Mode as the new default values.
Preview Mode is disabled when using in-context editing.
Preview mode aims to represent the experience of a published Substance 3D asset (SBSAR) as accurately as possible. Therefore, the Limitations listed in this page will apply in this mode, such as static parameters being absent from the list.
COPY-PASTING PARAMETERS
Parameters can be copy-pasted between graphs.
A single parameter can be copied with the Copy button . Multiple Parameters can be copied through the Parameters Menu . Choose Copy Inputs to copy all inputs.
Choose Paste Inputs in the Parameters Menu to paste one or more parameters.
If you want to transfer values, and not the actual exposed parameter itself, read about Parameter Presets.
Removing and cleaning exposed parameters
Because of the nature of parameters, where you can have on Input Parameter controlling multiple Nodes, or where Input parameters can exist without controlling a node, problems can arise with missing or unused parameters. Below common issues and their solutions are described.
TRACKING BROKEN PARAMETERS ON NODES
You can track what parameter is used by which node through the Node Finder Tool , which is located in the top bar of the Graph View. Click it and it allows you to find nodes using specific parameters.
If a node has an actual problem, it will display a Warning badge on its top left corner. Hovering over the badge will display a tooltip with more information.
To reset and remove a problem, for the parameter you want to fix or reset, click on the Dropdown button next to the Edit Function button and select Reset. This returns a parameter to its previous, non-exposed state, the blue name will turn gray again to reflect this.
CLEANING UP UNUSED INPUT PARAMETERS
If you have lost track of your Input Parameters and no longer know which ones are used, they can be cleaned up using a small tool. Click the Input Parameter menu button and select Clean Inputs.
A new dialog appears, listing all unused parameters. Check or uncheck whatever parameters you want to remove or keep, and click OK. If no dialog appears, there are currently no unused parameters to clean up.
REMOVING PARAMETERS
To actually remove a parameter that is in use, requires two distinct steps.
-
On the node with the exposed parameter, click the dropdown arrow to the right of the Function Expose button that is colored in blue: . Then choose "Reset to Default Value". This removes the use of the parameter on this one node. repeat for any other node making use of the same parameter. "Reset to Default value" also resets the range of the parameter widget to its soft range.
-
In the Input Parameters list of the Graph, click the X all the way to the right of the parameter's entry. This deletes the parameter completely. If any nodes try to make use of this parameter, a warning badge will appear (see above).