User Guide Cancel

nodes | Substance 3D Automation ToolKit

  1. Substance 3D home
  2. Home
  3. Command Line Tools
    1. Command Line overview
    2. sbsbaker
      1. sbsbaker overview
      2. sbsbaker command line options
      3. sbsbaker Example Command Lines
    3. sbscooker
      1. sbscooker overview
      2. sbscooker command line options
      3. sbscooker pattern variables
    4. sbsmtools
      1. sbsmtools overview
      2. sbsmtools command line options
    5. sbsmutator
      1. sbsmutator overview
      2. sbsmutator command line options
      3. sbsmutator Example Command Lines
    6. sbsrender
      1. sbsrender overview
      2. sbsrender base parameters and pattern variables
      3. sbsrender command line options
      4. sbsrender example command lines
    7. sbsupdater
      1. sbsupdater overview
      2. sbsupdater command line options
  4. Pysbs - Python API
    1. Pysbs - Python API overview
    2. Getting started
    3. General topics
      1. Basic manipulation
      2. Substance creation
      3. Substances modification
      4. Dependencies management
      5. PySbs batchtools module
      6. metadata manipulation
      7. SAT demos
      8. Edit sbsar with SBSARManager
      9. Spot Colors
      10. Thumbnail creation with SAT
    4. Examples
      1. demohelloworld
      2. demos
      3. demos_batchtools
      4. script_update_with_sbsupdater
    5. API Content
      1. API Content overview
      2. Substance definitions
        1. Common interfaces
          1. basegraph
          2. package
          3. sbsarobject
          4. sbsobject
        2. compnode
          1. compnode overview
          2. common
          3. compimplementation
          4. paramgraph
        3. context projectmgr
        4. graph
          1. graph overview
          2. function
          3. inputparameters
          4. output
        5. mdl
          1. mdlannotation
          2. mdlcommon
          3. mdldictionaries
          4. mdlenum
          5. mdlgraph
          6. mdllibclasses
          7. mdlmanager
          8. mdlnode
          9. mdlnodeimpl
          10. mdloperand
          11. mdlsbsbridge
        6. modelgraphindex
          1. modelannotationnames
          2. modelgraph
          3. modelgraphgenerator
          4. modelgraphimplementation
          5. modelnodenames
          6. modeloperand
          7. modulegraphindex
          8. moduleannotation
          9. moduleconnection
          10. modulegraph
          11. modulegraphgenerator
          12. modulegraphimplementation
          13. modulegraphlibrary
          14. modulegraphregister
          15. modulenode
          16. modulenodeimplementation
          17. modulenodeinstance
          18. moduleoperand
          19. moduleoutputbridging
          20. moduleparaminput
        7. params
          1. params overview
          2. dynamicvalue
          3. paramnode
        8. projectmgrdoc
        9. sbsarchive
          1. sbsarchive overview
          2. sbsarenum
          3. sbsargraph
          4. sbsargui
          5. sbsarguiwidgets
          6. sbsarmanager
        10. sbscommon
          1. connections
          2. gui
          3. nodes
          4. values
        11. sbspreset
        12. sbsproject
        13. substance
          1. substance overview
          2. content
          3. resource
      3. Libraries
        1. sbsenum
        2. sbslibrary
          1. sbslibrary overview
          2. sbsdictionaries
          3. sbsfilters
          4. sbsfunctions
          5. sbsfxmapnodes
          6. sbslibclasses
          7. sbswidgets
        3. sbsbakerslibrary
          1. sbsbakerslibrary overview
          2. sbsbakersdef
          3. sbsbakersdefaultprops
          4. sbsbakersdictionaries
          5. sbsbakersenum
          6. sbsbakingconverter
          7. sbsbakingconverterparam
          8. sbsbakingparameters
          9. sbsdialogstate
          10. sbsscenedata
        4. Helpers
          1. sbscleaner
          2. sbsexporter
          3. sbsgenerator
          4. sbsparser
          5. sbswriter
          6. qtclasses
            1. qtclasses overview
            2. qtvariantreader
            3. qtvariantwriter
          7. psdparser
          8. sbsimpactmanager
          9. batchtools
          10. autograph
            1. ag_functions
            2. ag_layout
            3. ag_types
          11. info_mesh_parser
          12. sbsbaker_info_handlers
          13. sbsrender_render_handlers
          14. output_handlers
          15. spotcolorinfo_handler
          16. thumbnail
          17. batchtools overview
        5. Execution context
          1. context
          2. functions
        6. API Change log
  5. Samples
    1. Samples overview
    2. Texturing Template Demo
    3. Batch Tools Demo
    4. Variations
    5. Texture Mat
    6. Pixel Processor Ray tracer
  6. Setup and Getting Started
    1. Setup and Getting Started overview
    2. Compatibility
    3. Frequently asked Questions
    4. Known issues
    5. SAT Cookbook
    6. Use Pysbs in different python interpreter (maya, sd, blender...)
  7. Integrations
    1. Substance Maya toolset
      1. Substance Maya Toolset overview
      2. Installing
      3. Launching
      4. Baking
        1. Baking overview
        2. Export parameters
        3. Baker parameters
        4. Mesh setup
        5. Using a template
      5. Changelog
  8. Changelog overview

nodes

Module nodes provides the definition of the common classes SBSNode and NodeList.

 class sbscommon.nodes.NodeList(aParentObject, aNodeType, aNodesAttribute)  

Bases: object

Class used to provide common methods to SBSObjects that contains a list of nodes: SBSGraph and SBSDynamicValue

Members:
  • mParentObject (SBSObject): Parent object that contains the node list.
  • mNodeType (class): type of node (compnode.SBSCompNode for instance).
  • mNodesAttr (str): attribute member name in the parent object that corresponds to the node list.
 computeConnectionsInsidePattern(aNodeList)  

Compute the input and output connections of the nodes included in the list. It uses the node definition to order the nodes, and the GUI position in case of equality.

Parameters:aNodeList (list of tuple(int, SBSNode).) – The list of node to take in account for the topological sort.
Returns:The input and output connections of each node, as a list of tuple (list of inputs, list of outputs) of the same size than aNodeList, where each element of a list describe a connection with three elements:
  • ’index’ (index of the connected node)
  • ’identifier’ (pin identifier) for input, ‘uid’ (pin uid) for output
  • ’type’ (data type)
 computePatternInputsAndOutputs(aNodeList, connectionsInsidePattern)  
Compute the input and output pins that corresponds to the input and output of the whole pattern.
  • An input pin is connected to a node that does not belong to the pattern.
  • An output pin is never referenced by the connections inside the pattern.
Parameters:
  • aNodeList (list of SBSNode, optional) – The list of node to take in account.
  • connectionsInsidePattern (tuple) –

    The connections between the nodes inside the pattern, as a list of tuple (list of inputs, list of outputs) of the same size than aNodeList, where each element of a list describe a connection with three elements:

    • ’index’ (index of the connected node)
    • ’identifier’ (pin identifier) for input, ‘uid’ (pin uid) for output
    • ’type’ (data type)
Returns:

The list of input and output pins as a tuple (list of inputs, list of outputs), where each element of a list describe a pin with three elements:

  • ’index’ (index of the node)
  • ’identifier’ (pin identifier) for input, ‘uid’ (pin uid) for output
  • ’type’ (data type)

Raise:

api_exceptions.SBSImpossibleActionError

 computeSortedIndicesOfDAG(aNodeList = None)  

Sort topologically the nodes included in the list.

Parameters:
  • aNodeList (list of SBSNode.) – The list of node to take in account for the topological sort.
  • connectionsInsidePattern (list of tuple) –

    The input and output connections, as a list of tuple (list of inputs, list of outputs) of the same size than aNodeList, where each element of a list describe a connection with three elements:

    • ’index’ (index of the connected node)
    • ’identifier’ (pin identifier) for input, ‘uid’ (pin uid) for output
    • ’type’ (data type)
Returns:

The sorted node list

 contains(aNode)  

Check if the given node belongs to this node list

Parameters:aNode (SBSCompNode, SBSParamNode or str) – The node to check, as a, object or an UID
Returns:True if the given node belongs to the node list, False otherwise
 copyNode(aNode)  

Create a copy of the given node and generate a new uid for it

Parameters:aNode (SBSNode) – the node to copy
Returns:The new SBSNode object
 deleteNode(aNode)  

Allows to delete the given node from the graph. It removes it from the nodes list, and delete all the connections from and to that node in the graph.

Parameters:aNode (SBSNode or str) – The node to remove, as a SBSNode or an UID.
Returns:True if success
Raise:api_exceptions.SBSImpossibleActionError
 duplicateNode(aNode, aGUIOffset = None)  

Duplicate the given node, generate a new UID and add the node to the same node list than the source node.

Parameters:
  • aNode (SBSNode or str) – the node to copy (may be identified by its UID)
  • aGUIOffset (list of 2 float, optional) – node position offset. Default to [150, 0]
Returns:

The new SBSNode object

Raise:

api_exceptions.SBSImpossibleActionError

 getConnectionsFromNode(aNode)  

Get all the connections coming from the given left node.

Parameters:aNode (SBSNode or str) – the node to consider, as an object or a UID
Returns:a list of SBSConnection
 getConnectionsToNode(self, aNode, aPinIdentifier=None)  

Get the connections incoming to the given node, to a particular input or for all its inputs.

Parameters:
  • aNode (SBSNode or str) – the node to consider, as an object or a UID
  • aPinIdentifier (str, optional) – the identifier of the pin to take in account
Returns:

a list of SBSConnection

 getNode(aNode)  

Search for the given node in the node list

Parameters:aNode (SBSNode or str) – node to get, identified by its uid or as a SBSNode
Returns:A SBSNode object if found, None otherwise
 getNodeList(aNodesList = None)  

Get all the nodes of this NodeList, or look for the given nodes if aNodesList is not None.

Parameters:aNodesList (list of str or list of SBSNode, optional) – The list of node to retrieve. None to retrieve the entire node list.
Returns:A list of SBSNode.
 getNodesConnectedFrom(aNode)  

Get all the nodes connected to an output of the given node.

Parameters:aNode (SBSNode or str) – the node to consider
Returns:a list of SBSNode
 getNodesConnectedTo(aNode, aPinIdentifier=None)  

Get all the nodes connected to the given pin of the given node. If aPinIdentifier is let None, consider all the pins.

Parameters:
  • aNode (SBSNode or str) – the node to consider
  • aPinIdentifier (str, optional) – the identifier of the pin to take in account
Returns:

a list of SBSNode

 getNodesDockedTo(aNode)  

Get all the nodes that are docked to the given node.

Parameters:aNode (SBSNode or str) – the node to consider
Returns:a list of SBSNode corresponding to the nodes that are docked to the given node.
 getRect(aNodeList = None)  

Get the rectangle occupied by all the nodes in the list, or use only the given nodes if aNodeList is not None

Parameters:aNodeList (list of str or list of SBSNode, optional) – The list of node to take in account for the GUI rectangle. None to consider the node list pointed by itself.
Returns:The rectangle as a Rect
 isAPathBetween(self, aLeftNode, aRightNode)  

Check if there is a path from the left node to the right node with the current connections.

Parameters:
  • aLeftNode (SBSNode or str) – The left node
  • aRightNode (SBSNode or str) – The right node
Returns:

True if a path is found, False otherwise

 sortListLexicographically(aNodeList)  

Sort ‘lexicographically’ the nodes included in the list. It uses the node definition to classify the nodes, and the GUI position in case of equality.

Parameters:aNodeList (list of tuple(int, SBSNode).) – The list of node to take in account for the lexicographical sort.
Returns:The sorted node list
 sortNodesAsDAG(aUpdateNodeListMember = True)  

Sort the node list of the graph to order them as a DAG. The node list is updated and returned.

Parameters:aUpdateNodeListMember (bool) – True to update the node list member with the sorted nodes, False to just get the sorted list. Default to True.
Returns:the sorted node list.
 class sbscommon.nodes.SBSNode(aGUIName=None, aUID='', aDisabled=None, aConnections=None, aGUILayout=None)  

Bases: pysbs.common_interfaces.sbsobject.SBSObject

Class used to gather common information of a SBSCompNode, SBSParamNode, SBSParamsGraphNode and MDLNode

Members:
  • mGUIName (str, optional): name of the node.
  • mUID (str): node unique identifier in the /compNodes/ context.
  • mDisabled (str, optional): this node is disabled.
  • mGUILayout (SBSGUILayout): GUI position/options
  • mConnections (list of SBSConnection, optional): input connections list.
 equals(other)  

Check if this SBSObject is equivalent to the other SBSObject. Some members may be excluded from this check, the UIDs or GUILayout for instance.

Parameters:other (SBSObject) – The SBSObject to compare to
Returns:True if the two SBSObject are similar according to their definition.
 getConnectedNodesUID()  

Get the UIDs of the nodes connected to this node.

Returns:The UIDs as a list of string
 getConnectionOnPin(aPinIdentifier)  

Get the connection defined on the given input.

Parameters:aPinIdentifier (str) – identifier of the input pin (for SBSCompNode, SBSParamNode and MDLNode) or of the output pin(for SBSParamsGraphNode)
Returns:a SBSConnection object corresponding to the connection defined on the given pin. None otherwise
 getConnections()  

Get the connections defined on this node.

Returns:a list of SBSConnection
 getConnectionsFromNode(aLeftNode)  

Get all the connections coming from the given left node.

Parameters:aLeftNode (SBSNode or str) – The node to look for in the incoming connections of this node, as an object or a UID
Returns:a list of SBSConnection
 getDefinition()  

Get the node definition (Inputs, Outputs, Parameters) accordingly to the node implementation

Returns:a NodeDef object if defined, None otherwise
 getDisplayName()  

Get the display name of this node

Returns:the display name as a string
 getInputDefinition(self, aInputIdentifier=None)  

Get the input definition corresponding to the given identifier.

Parameters:aInputIdentifier (InputEnum or str, optional) – The identifier to get. If let None, the primary input will be returned
Returns:the input definition as a CompNodeInput if found, None otherwise
 getOffsetPosition(aOffset = None)  

Compute the position of this node offset by the given offset

Parameters:aOffset (list of 2 float, optional) – the offset to apply to the node’s current position. Default to [0,0]
Returns:the offset position
 getPosition()  

Get the position of this node in the graph GUI.

Returns:a list of 3 float
 getRect()  

Return the rectangle of this node.

Returns:The rectangle as a Rect
 getUidIsUsed(aUID)  

Check if the given uid is already used in the context of this SBSObject.

Parameters:aUID (str) – UID to check
Returns:True if the uid is already used, False otherwise
Raise:AttributeError if the function getUidIsUsed in not properly overloaded on this SBSObject
 hasAReferenceOnDependency(aDependency)  

Check if this node directly references the given dependency. For instance if it instantiates a graph or a resource included in this dependency.

Parameters:aDependency (str or SBSDependency) – The dependency to look for (UID or object)
Returns:True if this node references this dependency, False otherwise
 hasAReferenceOnInternalPath(aInternalPath)  

Check if this node references the given internal path (pkg:///). For instance if it instantiates the graph or the resource pointed at the given path.

Parameters:aInternalPath (str) – The internal path to look for
Returns:True if this node references the given internal path, False otherwise
 isConnectedTo(aLeftNode)  

Check if the node is connected to the given node, in the direction aLeftNode -> self

Parameters:aLeftNode (SBSNode or str (UID)) – The node to look for in the connections of this node.
Returns:True if the nodes are connected, False otherwise
 isDocked()  

Check if this node is docked.

Returns:True if this node is docked, None otherwise
 parse(aContext, aDirAbsPath, aSBSParser, aXmlNode)  

Parse recursively the given xml node to retrieve the content of the SBSObject.

Parameters:
  • aContext (Context) – execution context
  • aDirAbsPath (str) – the absolute directory containing the current parsed package (.sbs file)
  • aSBSParser (SBSParser) – the substance parser
  • aXmlNode (xml.etree.ElementTree) – the xml node to parse
 removeConnectionOnPin(aInput)  

Remove the connection on the given input pin.

Parameters:aPinIdentifier (InputEnum or FunctionInputEnum or str) – identifier of the input pin (for SBSCompNode and SBSParamNode) or of the output pin(for SBSParamsGraphNode) to disconnect
Returns:True if a connection is removed, False otherwise
 removeConnectionsFrom(aLeftNode)  

Remove all the connections from aLeftNode to this node (in the direction aLeftNode -> self)

Parameters:aLeftNode (SBSNode or str (UID)) – The node to look for in the connections of this node.
Returns:Nothing
 setPosition(aPosition)  

Set the position of this node in the graph GUI.

Parameters:aPosition (a list of 3 float) – The position to set
 write(aSBSWriter, aXmlNode)  

Write recursively the content of the SBSObject into the given xml node.

Parameters:
  • aSBSWriter (SBSWriter) – the substance writer
  • aXmlNode (xml.etree.ElementTree) – the xml node to fill

Get help faster and easier

New user?