Working with Nodes
==================

This section documents the various classes and functions that are available for
working with nodes in Katana via Python scripting.

Introduction to Nodes
---------------------

Nodes are the units used in the Katana interface to build the recipe for a
Katana project. Nodes feature parameters that can be used to control their
behavior. Nodes can be created and connected in Katana's :kat:ui:`Node Graph`
tab in the UI, and can also be modified via Python scripting using
:py:mod:`NodegraphAPI`.

Katana ships with many
`built-in types of nodes <https://learn.foundry.com/katana/Content/reference_guide.html>`_,
but
:doc:`custom node types</Scripting/CustomizingNodeTypes/CustomNodeTypes/index>`
can also be created via Python scripting.

There are two major groups of node types shipped with Katana:

  - `3D nodes <https://learn.foundry.com/katana/Content/rg/3d_nodes/3d_nodes.html>`_
    that produce scene graph that can be inspected in Katana's :kat:ui:`Scene
    Graph` tab.

    3D nodes and their parameters effectively represent and control
    corresponding Ops that form Op graphs that are processed by Katana's
    geometry library (Geolib) to generate the scene data that can be viewed and
    inspected in Katana's :kat:ui:`Scene Graph` and :kat:ui:`Attributes` tabs.
  - `2D nodes <https://learn.foundry.com/katana/Content/rg/2d_nodes/2d_nodes.html>`_
    that produce images that can be viewed in Katana's :kat:ui:`Monitor` tab.
    [#f1]_

Introduction to NodegraphAPI
----------------------------

.. automodule:: NodegraphAPI
    :no-members:
    :synopsis: Python package for working with nodes of a Katana project.

Node Base Classes
-----------------

.. autoclass:: NodegraphAPI.Node
    :no-members:

.. autoclass:: NodegraphAPI.GroupNode
    :no-members:

Contents of Section
-------------------

.. toctree::
    CreatingAndRetrievingNodes
    NodeProperties
    Parameters/index
    ConnectingNodes
    SerializingNodes
    GroupsAndLiveGroups
    Contexts
    NetworkMaterialEdit
    ExampleScripts


.. rubric:: Footnotes

.. [#f1] 2D nodes are a reminder of Katana's historic origins at Sony Pictures
    Imageworks, where it started its life as a compositing application.