- 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
Managing custom content and filters
This page explains the method to create categories and filters to manage custom content in the Library. It also includes suggestions for project-based workflows.
Overview
After adding custom content to the Library, you need to make it discoverable.
The Library uses a number of data points for identifying content, for the purposes of filtering it and surfacing in searches. These data points include:
- Name
- Extension
- URL (i.e. filename)
- Attributes
You may organise your Library into categories containing specific filters, and tailor it to your project's needs.
Indeed, custom categories and filters can be project-specific and be saved in Project files (*.sbsprj). These files can then be assembled into Configuration files (*.sbscfg) and distributed to a team so that artists can all use the same Library categories for any given project.
This means that with one or more Project files, you can set the folders which content should be added to the Library, as well as the categories and filters which will sort and organise that content.
Graph attributes
Graphs contained in SBS and SBSAR files can be filtered and searched in the Library by using the data set in the Attributes section of the graph's properties. Some of these attributes can also be set on some other Resource types.
Custom filters and folders
Filters are simple boolean (True/False) search parameters that will result in a resource showing up inside the Library when that Filter is selected. Resources can be anything kept inside a package. Keep the following in mind:
- A Filter will match against all resources, under all watched paths.
- A Filter can contain multiple conditions, all of them must evaluate to True (AND-condition) for the resource to show up under that filter.
- A Resource can show up under multiple filters, it is not exclusive to any filter.
- A Resource from a watched path is still available in the Library even if it is not under any Filter, by using the Search function.
How to create filters and folders
Categories (i.e. Folders) and Filters are created and edited using the following buttons:
Add Folder: Creates an expandable folder in the Library view. You cannot create subfolders.
Add Filter: Adds a new Filter inside the selected folder. You cannot add filters to the existing default folders.
Edit Item: Edits the currently selected Folder or Filter. You cannot edit any of the properties of the default Folders and Filters.
To remove a Folder or Filter, right-click on it and select the Remove option from the contextual menu.
Editing filters and folders
Folders and Filters are identified by the following data:
- Name displayed in the Library tree view.
- Project Configuration file (SBSPRJ) in which this item is stored.
It is very important to set these up correctly, to ensure you are editing the correct project!
Filters usually need to have conditions set up for achieving their filtering purpose. These conditions are configured using the following criteria:
- Resource Type: sets a specific Resource type, such as Graphs
- Attribute to apply condition to – see list above
- Condition logic: lets the filter include results with positive, negative, partial and whole matches
- Condition keyword: the string against which the Attribute and Condition logic criteria are tested. When left blank, any resource which matches these two criteria are included
You can add or remove conditions using the '+' and 'x' buttons on the far right of the Condition keyword.
A filter without any conditions set up will result in all Library content being displayed.
Best practices
Recommended guidelines
- The general rule for the default library is the Folder is listed in the Category attribute, while the Filter name is determined by the Tag attribute
- Don't create custom nodes that mix with the default Library unless you explicitly want them to. Your nodes will show up under default Filters if they match, so you will have to make sure to use a different tagging/naming system to avoid that
- Use unique, per-project identifiers. These can be put anywhere you want (such as Description, Category or User Data), as long as you are consistent between all projects. This makes searching and filtering content by project much easier
- Use the Author attribute to keep track of the person initially responsible for the content, without having to dig through Version Control records
- An efficient way of creating Icons is either to use the Generate option of the Icon graph attribute, or to create a graph template for generating them. That way you can ensure consistency and save work on creating them. All default library icons were created within Designer this way!
Managing content of varying scope
- You can add Resources to existing categories if this makes more sense. It will be less work to manage and maintain filters, and you can use a special icon style to tell them apart.
- You can define your folders and filters in a global (studio-level) Project Configuration file, and then add content into them merely by adding watched paths from consecutive Project files
- You can define specific folders and filters for each project to keep them separated
- You can mix and match and use methods from all three above: use existing filters, define new global ones, and create per-project unique ones