Documentation for Substance Designer 3D is now available on Experience League. After March 14th, HelpX pages will automatically redirect to the equivalent Experience League page.
Refer to the FAQ for more information about which documentation is affected.
- Substance 3D home
- User guide
- Glossary
- Getting started
- Workspace
- Workspace
- 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
- Instances and subgraphs
- Graph parameters
- Manage parameters
- 'Visible if' expressions
- 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 1
- Moisture noise 2
- 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
- Paths to spline
- Path tools
- Spline tools
- Spline tools
- Point list
- Scatter on Spline color
- Scatter on Spline grayscale
- Scatter Splines on Splines
- Spline 2D transform
- Spline (Cubic)
- Spline (Poly quadratic)
- Spline (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 function
- 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
- Nodes reference for Substance function graphs
- Function nodes overview
- Atomic function nodes
- Function node library
- MDL graphs
- Working with 3D scenes
- 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
Working with Path & Spline tools
The Path and Splines toolset is a collection of nodes that lets you author and edit resolution-agnostic shapes and curves that are used to draw, map and scatter images.
In this page
What are paths and splines?
Paths are a series of points connected into straight lines.
Splines are smooth curves whose trajectories are shaped by control points and those points' tangents.
Each point also controls a spline's height and thickness attributes which are used to drive the mapping, warping and scattering of images.
Each can build closed or open shapes.
Node output
The nodes output images that carry encoded data representing paths and splines.
For instance, the image on the right represents the image output by a Paths Polygon node.
As such, the images they produce are not directly usable as a graphic element. They need to be processed by other nodes in the toolset that can convert them into a graphic result that can then be used with the rest of the nodes available for Substance graphs.
As you work with paths and splines, you can preview these objects mapped in an image using the dedicated Preview Paths node for paths, and the dedicated Preview output for splines.
2D View interaction
A significant number of nodes in the toolset offer the ability to perform edits directly in the 2D View using control gizmos. These gizmos include the position gizmo and transformation matrix.
For instance, spline generation nodes such as Spline (Cubic) or Spline (Poly Quadratic) let you move the control points of the splines. For paths, Quad Transform on Path has similar controls when selected.
Performance
Path and spline tools require intensive computations, so much so that you should be mindful of a couple of settings for ensuring the best performance and responsiveness when working with the toolset:
- The toolset makes extensive use of Substance Engine features that run much faster on the GPU. Therefore, please use the GPU version of the engine for your system: Direct3D (Windows) or OpenGL (macOS).
You can switch engine by pressing the F9 key, or by going to Tools > Switch engine... in the main menu bar. - Then, we strongly recommend turning off In-context editing in the Graph section of the Preferences (Go to Edit > Preferences... in the main menu bar to access this window).
In-context editing lets you open instance nodes in the context of the host graph, which is admittedly very convenient but has the side effect of exponentially increasing the computations required by the toolset's image cache.
You should notice a significant performance improvement when changing any of these two settings to the recommended state.
Generating paths
The Paths Polygon generates a path in the shape of a polygon of the specified radius and number of sides.
Alternatively, paths can be extracted from a grayscale image using the Mask to Paths node.
This is currently the only way of producing complex shapes, and it lets you leverage the entire library of Substance graph nodes to produce the shapes that will eventually be converted into paths.
Editing paths
Path 2D Transform, Paths Warp and Quad Transform on Path let you edit the shape of paths.
You may also remove undesired paths by selecting paths by index or by length, using the Paths Select node.
More complex processing can be done on each point of a path with the help of the Paths Vertex Processor node. A simpler version exists for lighter adjustments.
Preview Paths node
Previewing the result of Paths nodes is done using the dedicated Preview Paths node.
This node does not have outputs. Double-click LMB on the node to display the preview in the 2D View.
Separate paths have a unique color in the preview to easily tell apart each path.
Paths to Spline
You can leverage the entire toolset dedicated to splines with paths, by converting paths into splines using the Paths to Spline node.
Keep in mind that splines are curves thus cannot retain the sharpness of paths. Expect some smoothing of shapes when converting paths into splines.
A very useful combination for leveraging the splines toolset through paths is the following:
Mask > Mask to Paths > Paths to Spline
Path format specifications
The Preview Paths node is required because Paths nodes output the data of paths encoded in a color image.
This encoding follows a specification described in the Paths Format Specifications page.
You can use this specification to produce your own nodes using this format, and make the most of the Paths Vertex Processor nodes.
Generating splines
Splines can be generated using nodes such as Spline Circle, Spline (Cubic) or Spline (Poly Quadratic). These nodes let you draw a spline of an arbitrary trajectory using different controls depending on the node.
Alternatively, splines can be extracted from paths using the Paths to Spline node.
Keep in mind that splines are curves thus cannot retain the sharpness of paths. Expect some smoothing of shapes when converting paths into splines.
A very useful combination for leveraging the splines toolset through paths is the following:
Mask > Mask to Paths > Paths to Spline
Splines can also help you generate more splines. For example, the Spline Bridge (2 Splines) and Spline Bridge (List) generate splines traversing a list of splines in order.
Editing Splines
Spline 2D Transform and Spline Warp let you edit the shape of splines.
You may also remove undesired splines by selecting paths by index, as well as trim splines, using the Spline Select node.
In addition to its trajectory, the height and thickness properties of splines can be adjusted after the fact using the Spline Sample Height and Spline Sample Thickness.
Finally, separate splines can be merged into a single spline thanks to the Spline Merge List node.
Appending splines
As you author and edit splines, you may need to combine multiple splines together in order to adjust or use them all at once.
It is important to keep in mind that splines are stored and processed as an ordered list.
Combining splines is done using the Spline Append node. Appending is the act of adding something at the end of an ordered entity. Indeed, the node combines two lists of splines by adding the second set at the end of the first set.
Therefore, it is very important to consider the order in which you append splines together.
This has an impact on nodes that need to combine splines together, such as Spline Bridge (List), Spline Bridge Mapper and Spline Merge List.
Spline inputs and outputs
Splines are passed from one node to another using a group of connectors:
- Spline Coords Color
The coordinates of the input splines’ points encoded in the RGBA channels of a color image. - Spline Data Color
Additional data of the input splines encoded in the RGBA channels of a color image. - Spline Amount Integer
The number of input splines.
Each output connector of the source node should be connected to the input connector of matching name in the target node.
To make these connections faster, you may use Material or Compact Material link creation modes. This lets you connect the three spline connectors in a single operation.
Preview output
Most of the nodes offer a Preview output that renders the splines in an image so you can get an idea of what their trajectories and properties are.
This preview can be tweaked in the node parameters, using the parameters in the Preview group.
Render as segments
Splines are curves with no inherent resolution, which means they can be scaled up or down indefinitely, with the only limit in representing them accurately being the precision used to store their data.
To draw spline as pixels, the toolset simplifies them into lines or segments drawn along the trajectory of the splines.
This means you may need to pay attention to the number of segments used to draw a spline in an image, as that number may be too low to draw smooth curves, or too high and wasted for the target resolution.
Nodes that draw splines in an image have a Segments Amount parameter that lets you control that amount of segments. A higher value results in smoother curves at the cost of performance.
Creating images from splines
When you are done authoring and editing splines, they can be used to produce images that can leverage the rest of the Substance graph nodes.
There are three main ways of using splines for generating graphics:
- Render the spline using its shape and properties with the Spline Render or Spline Fill node;
- Map images along splines with mapping nodes such as Spline Mapper, Spline Bridge Mapper and Spline Flow Mapper;
- Scatter patterns along splines with the Scatter on Spline node.