Exposing parameters

Exposing node inputs

In a Substance model graph, most node parameters can be exposed to other nodes in the graph as node inputs.
Exposing a parameter is done by any of the two buttons next to its Reset to default button, which results in an input connector being added to the node. The data received by this input connector is then used as the value for the exposed parameter.

These two buttons do the following:

  • Create an input pin for this parameter: enabling this button exposes the parameters by creating an input connector on the node. If the connector is not connected to another node, or invalid data is passed to it, the parameter’s default value is used instead
  • Copy value to a new node and link it to this parameter: this exposes the parameter, and automatically carries its current value to a new Constant node which is then connected to the parameter’s input pin

Exposed parameters can be reversed to their default state by clicking the Create an input pin for this parameter button. This removes the parameter’s input connector from the node and deletes any existing connection to it.

Exposing graph inputs

Constant nodes can be exposed to the end user as graph inputs. These are then available as node inputs in all instance nodes referencing this graph.

Click any Constant node and select the Exposed option in the contextual menu to expose its value.

The Properties panel will then display the properties of this new graph input.

Graph input properties

  • Identifier String
    Unique name of the graph input parameter.

It is recommended to use safe characters: letters A-Z a-z, numbers 0-9, hyphen -, underscore _. Unsupported characters are replaced by an underscore _.

  • Current value Depends on value type
    The current value of this graph input. It is also the default value for this input in instance nodes referencing this graph.
    This value can be reset to the default value for this type , by clicking the Reset to Default button next to the label
  • Ranges (Optional )
    • Soft range Depends on value type
      The soft range is used to set the bounds of the parameter's widget in graph properties and instance nodes, and is always adjusted to both fit in the hard range and contain the value.
    • Hard range Depends on value type
      The hard range defines the bounds of accepted values. It is fixed and defined by the user. Input values out of this range are clamped to the range's closest limit.
  • Description String
    The bespoke description of the usage and impact of this graph input.
  • Group String
    The group this graph input will be displayed under in the user interface.
  • Display Name String
    The label of this graph input in the user interface. You may use any characters to make a more user-friendly label.
    If this field is left blank, the Identifier is used as label.
  • Visible If String
    The parameter is displayed in instance nodes of this graph if one of these criteria is met:
    • The expression is left blank
    • The expression is invalid
    • The expression is valid and returns True
  • Input connector visible by default Boolean
    When True , the input connector for this parameter will be exposed by default in instance nodes of this graph
Learn more about Visible if expressions in this page of Designer's documentation, as this concept also applies to exposed parameters in Substance compositing graphs.

All graph inputs are listed and can be interacted with under the Graph Inputs section of the Graph properties, which you can access by performing either of these actions:

  • Clicking LMB on the graph item in the Explorer panel
  • Double-clicking LMB on empty space in the Graph view

Using parameter functions

In the context of a Substance model graph, a function is a series of connected algebra and/or logic operations which provide a unique output of a given type – e.g. a Float value – similarly to what can be achieved in a Function graph.

Functions need to be implemented in the main graph using the available Constant, Operation and Cast nodes in the Library. The result can then be passed as a parameter value by using the input pin of exposed parameters.