- Interface
- Customizing your workspace
- Home screen
- Main toolbar
- Preferences
- Explorer
- Graph view
- Library
- Properties
- 2D view
- 3D view
- Dependency manager
- 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 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
- Substance function graphs
- What is a Substance function graph?
- Create and edit a Substance 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
- 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
- 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 function graphs
- Substance function graphs
- What is a Substance function graph?
- Create and edit a Substance 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
- 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
Curve
In: Atomic Nodes
Intermediate
Since SD 6.0+
Description
The Curve node provides an interface to image tonality remapping, similar to other 2D image editing applications. The user can place points and adjust Bezier curves to remap the input, which can be either grayscale or color.It is especially useful when used with gradient transitions to remap them to a specific height profile, it allows for very precise modeling of bevel profiles and the like.
Unlike most other nodes, the Curve node does not have a typical standard interface with sliders and parameters, but instead presents a full fledged curve editor. See the below expandable section on how to use it.
This does however mean that none of the parameters from a Curve node can be exposed to a subgraph. The only option here is to use a Multi-Switch to switch between different curve profiles.
Parameters
- Apply / Expose Curve: Expose Curve, Apple Curve
Determines wether the Curve node applies its profile to the input, or if it just outputs the profile as if it was applied to a straight, linear gradient, without requiring an input. Available since SD 2020.2 Curve Adressing: Repeat, Clamp
This feature is used if your input is in HDR mode and its range goes beyond the (0, 1) range. If so the values beyond the (0, 1) range are either clamped or repeated.
Examples
Below you can see how the curve node can remap multiple gradient inputs to a specific profile.
Usage Guide
Create and move a point
In order to create a point, simply double-click anywhere on the Curve view:


Controlling the point influence
In order to obtain precise results, the curve nodes offers different modes for each point:
: reset the point mode to the default value.
: lock/unlock the 2 bezier handlers so the user can move them together or independently.
: both side of the point are controlled by a Bezier handler.
: the right side of the point is controlled by a Bezier handler while the left side remains flat.
: the left side of the point is controlled by a Bezier handler while the right side remains flat.
: the point sides remain flat


Show input histogram
You can show/hide the histogram of your input just by clicking on
Controlling each channel individually (color input)
When you input is a color node, you have the ability to ajust the curve for each channel:
Just select the curve you want to ajust in the dropdown list located on the top right:
While in RGB curve mode, you canhide/show the individual channel curves by pressing/unpressing :
Aligning, mirroring and flipping
If you right click on the curve view, you will get some more options:
Align to top/middle/bottom
Only available when 2 or more points are selected:
Will align the selected points horizontally:
- Top: Aligned the points with the highest one
- Middle: aligned according to the average height
- Bottom: Aligned the points with the lowest one
Distribute horizontally/vertically
Only available when 2 or more points are selected:
Distribute the points on the selected axis
Flip horizontally/vertically
Only available when 2 or more points are selected:
Flip the selected points according to the selected axis
Mirror horizontally/vertically
Mirror the whole curve, according to the selected axis
Keyboard Shortcuts
- Alt+ click & drag a handler: temporarily break the handlers to move it independently:


- Moving a point while holding shift, constrains the movement on the x or y axis:


- Click and drag from an empty point, draws a box selection:


Right click menu
Right clicking on the curve view gives you access to some alignment and distribution options:
Adapt the size of the Curve view
While tweaking the handlers, you may be in a case where one handler is going over the curve view.
In that case, you can use the button to fit the size to the content.
The button resets the zoom level to 1

