- 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
In this page
Project configuration files are the most complex and most expansive files used to configure Substance 3D Designer.
They are special in that you can use multiple Project configuration files, where each next 'child' project expands or overrides the previous 'parent'. Unless explicitly needed, settings should not be modified or added to the project files, so Designer can fall back on its parent configuration, or even defaults.
By default, Designer has two active project configurations:
Default Project: Contains all the default settings and the library Designer comes with on a fresh install. Read only, can not be modified or removed.
User Project: Because the Defaults are read-only, any changes by the user go into this project by default. Can not be removed.
This basic setup ensures that the default library and other settings can not be corrupted or modified, yet still allow single, amateur users to add their own modifications without having to bother with complex setups.
Expand or override
Most settings in a consecutive Project will override the ones from the previous Project. For example, a different Tangent Space plugin in a custom Project file will override any TS Plugin defined in the Default or User project. This means that unless explicitly needed, it's recommended not to override or change settings in child projects.
There are however some settings that expand upon parent settings, instead of overriding them. Most notably these settings are the Library paths and filters, so you always add more content to the library instead of overriding it. Additionally, there's the aliases (path keywords for relative filepaths) that expand, as well as override if a duplicate is defined. This allows for great control over content filepaths and references.
Project file contents
Project files can contain the following settings:
3D View: Default Shader, HDR and scene state definitions.
Aliases: Keyword aliases for relative paths.
Baking: Settings for baking naming conventions.
General: Graph Templates, Tangent Space plugins, normal and image format defaults.
Library: Watched paths to display in the Library, as well as filters and categories for the Library view.
MDL: MDL watched paths.
Scripting: Callback scripts and interpreters.
Version Control: Settings for integrating Version control into Designer.
Inside Substance 3D Designer
See the Project settings page to learn more about managing project files and changing project settings.
Project files also include custom categories and filters for the Library, which you can learn more about in the Managing custom content and filters page.
Edit XML Externally
For Windows, Notepad++ is a good free option. On macOS, Sublime Text is an alternative. That said, any editor with proper indentation, section collapsing and some form of syntax highlighting will make your life much easier.
Once you open the SBSPRJ file in an editor, you should see a fairly straightforward structured layout, with sections corresponding to tabs in the UI. Not every setting will be documented here, as it's fairly self-explanatory.
Relative paths and aliases
Relative paths combined with aliases are one of the more complicated, yet most important parts of a project configuration, this section will clarify them. Adding custom aliases for a specific project file is done in the Project Settings.
One of the major problems with files referencing other files in a system across multiple user's PC, is that absolute filepaths will not work. Users can define their SVN repositories in completely different locations (eg. C:/John/Gamedev/SubstanceLibrary or D:/Dev/SubstanceLibrary). Aliases and relative paths both work together to solve this problem. Otherwise, you might open someone else's file and it will try to look for the custom node used in the specific location that user had it locally, which you probably won't have defined in exactly the same way.
An alias is a keyword that replaces (part of) a path. It's similar to a Windows environment variable like %TEMP%, where a single word replaces an often-used path that is then defined centrally. The advantage is simplified paths everywhere, and a way to modify all the references in one go when you decide to relocate the this path.
Alias Example
Alias | Actual path value |
---|---|
sbs | C:\Program Files\Adobe\Adobe Substance 3D Designer\resources\packages |
custom | D:\Dev\CustomProject\Substance |
The default library is by default located at C:\Program Files\Adobe\Adobe Substance 3D Designer\resources\packages, and all graphs using default content reference this directory. Instead of referencing the full path, an alias of 'SBS' (without quotation marks) is defined. In the case of a the default library, the exact value for the SBS path is set upon installation to whichever directory the user chooses for Designer.
Internally a reference is modified the following way, when it contains a path with an alias:
C:\Program Files\Adobe\Adobe Substance 3D Designer\resources\packages\blur_hq.sbs => sbs://blur_hq.sbs
Relative paths are always relative to the file in which they are defined. That means the current location of the config file determines most of the path, and alias paths will be based upon it, mostly by just adding a subfolder. This means it's strongly recommended to put your sbsprj files next to the folders you want to watch!
For example, take a repository at C:/Versioncontrol/Substance/ containing CustomProject.sbsprj and then two folders, /Base and /Tools, containing nodes.
To define two relative Aliases for Base and Tools would be done as following inside the SBSPRJ file:
C:/Versioncontrol/Substance/CustomProject.sbsprj
<urlaliases> <size>2</size> <_2 prefix="_"> <path>file:Base</path> <name>BaseAlias</name> </_2> <_1 prefix="_"> <path>file:Tools</path> <name>ToolsAlias</name> </_1> </urlaliases>
The result of this config file is the following:
BaseAlias:// will be C:/Versioncontrol/Substance/Base/ and ToolsAlias:// will be C:/Versioncontrol/Substance/Tools/.
If you would want to define just C:/Versioncontrol/Substance/, the path would be listed as "file:.", the dot signifying the location of the file itself.