Documentation for Substance 3D Sampler 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
- Home
- Getting Started
- Getting Started overview
- Activation and licenses
- System requirements /content/help/en/substance-3d-sam
- Shortcuts
- Importing Resources
- Report a bug
- Project Management
- Export
- Export overview
- Export Window
- Default Presets
- Managing custom presets
- Managing Presets
- Interface
- Interface overview
- The Home Screen
- 2D and 3D Viewport
- Sidebars
- Panels
- Tools and Widgets
- Preferences
- Filters
- Filters overview
- Custom Filters
- Compound Filters
- Generators
- Adjustments
- Tools
- Tools overview
- Atlas Creator
- Atlas Splitter
- Auto Tiling
- Channels Generation
- Channel Switch
- Clone Stamp
- Crop tool
- Delight (AI Powered)
- Height to AO
- Height to Normal
- Image To Material
- Make it Tile
- Match
- Multiangle To Material
- Normal to Height
- Paint Wrap *missing*
- PBR Validate
- Perspective Correction
- Tiling
- Transform
- Warp
- Warp Transform
- Upscale
- HDRI Tools
- Wear and Finish
- Technical Support
- Technical Support overview
- Exporting the log file
- Configuration
- Technical Issues
- Data or project issues
- Filter issues
- Interface issues
- Performance issues
- Stability issues
- Startup issues
- Features and workflows
- Pipeline and integrations
- Scripting and Development
- 3D Capture
- Release Notes
- FAQ
Compound Filters
This feature lets you create a new type of filters that are represented as a single layer in the interface and be composed of multiples filters.
Supported since Substance 3D Sampler 3.1.0
Description
A compound filter is a .ssafilter file that is a .7zip compressed folder of:
- a description file using JSON formatting: myfilter_name.json
- a resources folder containing:
- the filter thumbnail: icon.png
- external file dependencies
Description file content
- Name: Label of your compound filter displayed in the interface
- Id: Unique identifier of your compound filter
- Category: Category of your compound filter used in the Assets panel when you group your assets by category
- Version: Incremental number to define the version of your compound filter.
- Node: List of nodes to be used
- Link: List of connections between the different nodes
Example
{ "SamplerFilter":
{
"Name": "My filter",
"Category": "My filter category",
"Id": "my_unique_id",
"Version": 2,
"Node": [
{
"Id": "foo",
"InternalFilter": "Foo"
},
{
"Id": "bar",
"File": "bar.sbsar"
}
],
"Link": [
{
"From": { "Node": "FilterInput", "Usage": "baseColor" },
"To": { "Node": "foo", "Usage": "baseColor"}
},
{
"From": { "Node": "FilterInput", "Usage": "normal" },
"To": { "Node": "foo", "Usage": "normal"}
},
{
"From": { "Node": "foo", "Usage": "baseColor" },
"To": { "Node": "bar", "Usage": "baseColor"}
},
{
"From": { "Node": "bar", "Usage": "baseColor" },
"To": { "Node": "FilterOutput", "Usage": "baseColor"}
},
{
"From": { "Node": "foo", "Usage": "normal" },
"To": { "Node": "FilterOutput", "Usage": "normal"}
}
]
}}
Step-by-step creation
- Create a new file: my_new_filter.json
- Define its name, ID, category,...
- Define the list of nodes you need
- If you need external files, create resources folder next to your .json
- Add your file(s) in the resources folder
- Write the list of links between your nodes
- Verify that your JSON is valid (no typo, missing coma or missing bracket)
- If you want a thumbnail, add an image icon.png in the resources folder
- Select the .json file and the resources folder and 7zip them
Documentation
Version
Using a version number allows you to keep track of your different iterations. When opening a layer stack done with a previous version of your compound filter, a notification will be showed to suggest you to upgrade to the latest version.
Node
A node can refer to an internal filter of Substance 3D Sampler. Define a unique identifier Id to be used to define links between nodes and the label of the internal filter InternalFilter
{
"Id": "step1_identifier",
"InternalFilter": "Dirt"
}
A node can refer to a SBSAR file that's not in Substance 3D Sampler. Define a unique identifier Id to be used to define links between nodes and the filename File of the SBSAR file. The SBSAR file has to be in a resources folder next to the .alchfilter file.
{
"Id": "step1_identifier",
"File": "foo.sbsar"
}
filterImg and filterMat can't be used as node Id
Link
A link is a description of how two nodes are linked and are composed of two elements:
- From: Usage to be used by the node
- To: Usage output of the node
Each element has 3 attributes:
- Node: Declare the Id of the node you want to use
- set the input of the compound filter, the node Id is FilterInput
- set the output of your compound layer, the node Id is FilterOutput
- Usage: Declare the usage you want to use. There are 3 options:
- Single usage at a time and declare link by link (baseColor, normal, height, ambientOcclusion, roughness, metallic, diffuse, specular, glossiness, specularLevel, opacity, emissive, scan1, ...)
- You can also specify a list ["baseColor", "normal"]. The first item of the list of From will match the first item of the list of To. etc...
- Use * to let Substance 3D Sampler do the matching between identical usages of all usages of the From node and the To node (It's not possible to combine * with another link, while single links and list links are possible between same nodes)
- Group: In case of a node has several times the same usage, you can use the Group attribute to select a specific usage. ie: For Blend filters, to get the baseColor of the bottom material use Material1 and to get the baseColor of the top material use Material2
Link between two nodes
{
"From": { "Node": "node1","Usage": "baseColor", "Group": ""},
"To": { "Node": "node2", "Usage": "baseColor"}
}
Link between outputs of layers below of the compound filter and the compound filter:
{
"From": { "Node": "FilterInput", "Usage": "*" },
"To": { "Node": "node1", "Usage": "*"}
}
Link to declare outputs of the compound filter:
{
"From": { "Node": "node1", "Usage": "*" },
"To": { "Node": "FilterOutput", "Usage": "*"}
}