Custom Node TypesΒΆ
Many common scene graph operations can be performed with standard Katana node types, but there are various means of customizing recipes with specialized operations.
At the lowest level, Ops (in-built and custom) can be added to a recipe using the GenericOp node type, with Op Args specified using a manually-defined parameter interface. This is a useful tool for ad hoc operations, and can also be used in saved and programmatic recipes, but it is often desirable to package recipe units as a dedicated node type.
A typical node can contribute one or more Ops to a recipe programmatically, based on its parameters and inputs, and customize its parameter user interface. Custom nodes can be defined using NodeTypeBuilder.
Where recipe components call for the use of multiple nodes, Macros are static reusable sections of node graph, but SuperTools provide a more powerful, dynamic means of contributing arbitrary node graph, with a custom top-level user interface.
NodeTypeBuilderNodeTypeBuilderNodeTypeBuilder.OpChainInterfaceNodeTypeBuilder.OpChainInterface.FAILNodeTypeBuilder.OpChainInterface.NO_OPNodeTypeBuilder.OpChainInterface.SKIPNodeTypeBuilder.OpChainInterface.__init__()NodeTypeBuilder.OpChainInterface.addInputRequest()NodeTypeBuilder.OpChainInterface.addRequiredInput()NodeTypeBuilder.OpChainInterface.appendOp()NodeTypeBuilder.OpChainInterface.setExplicitInputRequestsEnabled()NodeTypeBuilder.OpChainInterface.setExplicitInputRequirementsEnabled()NodeTypeBuilder.OpChainInterface.setMinRequiredInputs()
NodeTypeBuilder.SetGenericAssignPolicyRegistrationCallback()NodeTypeBuilder.__init__()NodeTypeBuilder.addInteractiveTransformCallbacks()NodeTypeBuilder.addMakeInteractiveParameter()NodeTypeBuilder.addTimingParameters()NodeTypeBuilder.addTransformParameters()NodeTypeBuilder.build()NodeTypeBuilder.setAddParameterHintsFnc()NodeTypeBuilder.setAppendToParametersOpChainFnc()NodeTypeBuilder.setBuildOpChainFnc()NodeTypeBuilder.setBuildParametersFnc()NodeTypeBuilder.setCustomMethod()NodeTypeBuilder.setGenericAssignRoots()NodeTypeBuilder.setGetInputPortAndGraphStateFnc()NodeTypeBuilder.setGetScenegraphLocationFnc()NodeTypeBuilder.setHintsForNode()NodeTypeBuilder.setHintsForParameter()NodeTypeBuilder.setInputPortNames()NodeTypeBuilder.setIsHiddenFromMenus()NodeTypeBuilder.setNodeTypeVersion()NodeTypeBuilder.setNodeTypeVersionUpdateFnc()NodeTypeBuilder.setOutputPortNames()NodeTypeBuilder.setParametersTemplateAttr()
- Op Chain Interfaces
BaseOpChainInterfaceBaseOpChainInterface.__init__()BaseOpChainInterface.addOpSystemArgs()BaseOpChainInterface.buildAttrFromParam()BaseOpChainInterface.buildAttrListForEnableableParameters()BaseOpChainInterface.getExclusiveToNameAndAttribute()BaseOpChainInterface.getFrameTime()BaseOpChainInterface.getGraphState()BaseOpChainInterface.getModifiedFrameTime()BaseOpChainInterface.getNumSamples()BaseOpChainInterface.getOutputPortName()BaseOpChainInterface.getShutterClose()BaseOpChainInterface.getShutterOpen()BaseOpChainInterface.getTransformAsAttribute()
OpChainInterfaceOpChainInterface.FAILOpChainInterface.NO_OPOpChainInterface.SKIPOpChainInterface.__init__()OpChainInterface.addInputRequest()OpChainInterface.addRequiredInput()OpChainInterface.appendOp()OpChainInterface.setExplicitInputRequestsEnabled()OpChainInterface.setExplicitInputRequirementsEnabled()OpChainInterface.setMinRequiredInputs()
ParametersOpChainInterface
- Migration Guide: Modifying Graph State
- Supporting Local Graph State in Parameter Evaluation
- SuperTools
- How To Write a SuperTool
- SuperTool API
- How To Write a Package SuperTool
PackageSuperToolAPI- Top-level Functions
- Modules
- Base Node
BaseNodeBaseNode.VERSIONBaseNode.__init__()BaseNode.adoptLocationForEditing()BaseNode.adoptLocationsForEditing()BaseNode.canAdoptLocationForEditing()BaseNode.canAdoptLocationsForEditing()BaseNode.getAPIVersion()BaseNode.getDefaultRootLocation()BaseNode.getItemListAttributeName()BaseNode.getLocationAttributes()BaseNode.getPackageForPath()BaseNode.getRegisteredDisplayPackageClasses()BaseNode.getRegisteredPackageClasses()BaseNode.getRootLocation()BaseNode.getRootPackage()BaseNode.getShowIncomingScene()BaseNode.getSuperToolName()BaseNode.getSyncSelection()BaseNode.getVersion()BaseNode.isLocationAdopted()BaseNode.setRootLocation()BaseNode.setShowIncomingScene()BaseNode.setSyncSelection()BaseNode.setVersion()BaseNode.superToolRegistered()BaseNode.upgrade()
RegisterTagAdoptedNodeType()
- Base Editor
BaseEditorBaseEditor.AddPackageRegistryBaseEditor.PackageMenuActionsRegistryBaseEditor.SEPARATORBaseEditor.TAB_AREA_UPDATE_INTERVALBaseEditor.__init__()BaseEditor.addTab()BaseEditor.canSelectionBeExported()BaseEditor.getAddPackageMenuActions()BaseEditor.getAttribute()BaseEditor.getChildrenUnder()BaseEditor.getDefaultAddMenuGroupName()BaseEditor.getDefaultSceneGraphViewTerminalOpUpdates()BaseEditor.getDefaultSceneGraphViewTerminalOps()BaseEditor.getKeyboardShortcuts()BaseEditor.getLayoutOrientation()BaseEditor.getMainNode()BaseEditor.getMainPanelWidget()BaseEditor.getMenuActions()BaseEditor.getPackageForPath()BaseEditor.getSceneGraphView()BaseEditor.getSceneGraphViewTerminalOpUpdates()BaseEditor.getSceneGraphViewTerminalOps()BaseEditor.getSelectedItems()BaseEditor.getSelectedPackages()BaseEditor.getSuperToolName()BaseEditor.getTabNames()BaseEditor.getTabWidget()BaseEditor.getTopLevelPackage()BaseEditor.hideEvent()BaseEditor.onSelectionChanged()BaseEditor.populateContextMenu()BaseEditor.registerAddPackageKeyboardShortcut()BaseEditor.registerKeyboardShortcuts()BaseEditor.registerPackageKeyboardShortcuts()BaseEditor.removeTab()BaseEditor.setColumnToUpdateOnStateChange()BaseEditor.setupSceneGraphViewColumns()BaseEditor.setupTabWidget()BaseEditor.showEvent()
GafferThreeInteractionDelegate
- Packages
- Packages
PackagePackage.__init__()Package.adoptPackage()Package.canAdoptPackage()Package.canBeAdoptedByPackage()Package.canBeCreatedByPackageClass()Package.canBeDeleted()Package.canBeDuplicated()Package.canBeRenamed()Package.canCreateChildPackage()Package.canCreatePackageClass()Package.canDuplicate()Package.canReorderChildPackage()Package.create()Package.createChildPackage()Package.createPackage()Package.createPackageGroupNode()Package.createPostMergeStackNode()Package.createStandardPackageNodes()Package.delete()Package.duplicate()Package.getAdoptableLocationTypes()Package.getChildPackage()Package.getChildPackages()Package.getCreateNode()Package.getEditPackageClass()Package.getExtraNodeDependencies()Package.getLocationPath()Package.getMainNode()Package.getMainNodeFromNode()Package.getName()Package.getOrCreateNodeByType()Package.getOverrideNodeAndParameter()Package.getPackageClassFromNode()Package.getPackageFromNode()Package.getPackageNode()Package.getParentPackage()Package.getPostMergePackageStack()Package.initializeExtraNodeDependencies()Package.isNodeOfType()Package.reorderChildPackage()Package.setEditPackageClass()Package.setName()Package.supportsLocking()Package.walkUpPackageHierarchy()
EditPackageGroupPackageGroupEditPackageDummyGroupPackageDummyGroupPackage.DEFAULT_NAMEDummyGroupPackage.DISPLAY_ICONDummyGroupPackage.__init__()DummyGroupPackage.canAdoptPackage()DummyGroupPackage.canCreateChildPackage()DummyGroupPackage.childRemoved()DummyGroupPackage.create()DummyGroupPackage.createChildPackage()DummyGroupPackage.createForLocation()DummyGroupPackage.createParentPackageHierarchy()DummyGroupPackage.delete()DummyGroupPackage.getChildPackageCreateNode()DummyGroupPackage.getChildPackages()DummyGroupPackage.getLocationPath()DummyGroupPackage.getMainNode()DummyGroupPackage.getParentPackage()
RootPackage
- Mix-ins
MixinCallbackMixinDisableableMixinGroupMixinGroupMixin.adoptPackage()GroupMixin.canAdoptPackage()GroupMixin.canCreateChildPackage()GroupMixin.canReorderChildPackage()GroupMixin.childRemoved()GroupMixin.createChildPackage()GroupMixin.getChildPackage()GroupMixin.getChildPackageCreateNode()GroupMixin.getChildPackages()GroupMixin.getLocationTypes()GroupMixin.reorderChildPackage()
LinkingMixinLinkingMixin.LINKING_ILLUMINATION_EFFECTLinkingMixin.LINKING_ILLUMINATION_NODE_NAMELinkingMixin.LINKING_ILLUMINATION_NODE_REFLinkingMixin.LINKING_SHADOW_EFFECTLinkingMixin.LINKING_SHADOW_NODE_NAMELinkingMixin.LINKING_SHADOW_NODE_REFLinkingMixin.getIlluminationLinkingNode()LinkingMixin.getLinkingNodes()LinkingMixin.getShadowLinkingNode()
LockingMixinLookFileReferenceEditMixinMaterialMixinMuteAndSoloMixinMuteAndSoloMixin.MUTEANDSOLO_NODE_REFERENCEMuteAndSoloMixin.NODE_NAMEMuteAndSoloMixin.SOLOLISTEDIT_NODE_REFERENCEMuteAndSoloMixin.delete()MuteAndSoloMixin.getExtraNodeDependencies()MuteAndSoloMixin.getMuteSoloAndSoloListEditNode()MuteAndSoloMixin.getOverrideNodeAndParameter()MuteAndSoloMixin.initializeExtraNodeDependencies()MuteAndSoloMixin.isMuteOverrideEnabled()MuteAndSoloMixin.isMuted()MuteAndSoloMixin.isSoloOverrideEnabled()MuteAndSoloMixin.isSoloed()MuteAndSoloMixin.setMuted()MuteAndSoloMixin.setSoloed()
MuteAndSoloEditMixin
- Module Functions
- Packages
- Node Utilities
AddNodeRef()AddPackageTypeAndPath()AppendNode()AppendNodes()DeleteDeepParameter()GetDownstreamNodes()GetDownstreamPorts()GetEditPackageForLocationPath()GetEditPackageLocationPaths()GetEditPackages()GetPackageLocationParameterPath()GetPackageTypeParameterPath()GetRefNode()GetSceneGraphPathExpression()GetSuperToolGroupName()GetUpstreamPort()IsNodeGuardedFromDeletion()NodeDeletionGuard()PositionMergeInputs()PrependNode()RemoveNodeRef()SetOrCreateDeepArrayParameter()SetOrCreateDeepScalarParameter()SetOrCreateDeepVectorParameter()SetPackageNodeName()TransferNodeConnections()UpdateChildPackagePaths()UpdateEditPackagePaths()WireInlineNodes()
- Base Node