Class / Method Overview


The following subclasses have been exposed as part of the mari.ExtensionPack() class.




mari.ExtensionPack.resources()


Path resources such as extension pack icon paths and extension pack default object paths


  • extPack_resource_locator(self)


Returns the custom paths specified via the 'ResourceLocator' json file.The Resources Json File can be used to move the large Extension Pack

Resources out of the Mari Script Folder



  • mari_settings_locator(self)


Returns the Setting specified for detecting the Mari Settings directory directory, as specified in the 'ResourceLocator' Json File:


- Auto-Detect means EP will auto-detect based on common Settings Files

- A Full Path

- or a Mari Variable mari.resources.path( mari.resources.settingsPathKey() )


  • extPack_icon_path(self)


The path to Extension Pack Icons


  • extPack_object_path(self)


The path to Extension Pack Default Objects


  • extPack_textures_path(self)


The path to Extension Pack Textures


  • extPack_grunges_path(self)


The path to Extension Pack Grunge Textures


  • extPack_smartmasks_path(self)


The path to Extension Pack Smart Masks for the Mask ShelfThe path to Extension Pack Smart Masks for the Mask Shelf


  • extPack_procedurals_path(self)


The path to Extension Pack Procedural Masks for the Mask shelf


  • extPack_archives_path(self)


The path to Extension Pack Archives


  • extPack_hotboxes_path(self)


The path to Extension Pack Hotboxes

mari.ExtensionPack.splashScreen()


Extension Pack Splash Screen


  • showSplashScreen(self,showReleaseNotes=True)


Launches the Splash Screen


Parameters:


showReleaseNotes (bool):  Determines if Text Release Notes are shown in the Splash Screen


  • showSplashScreen_ifAllowed(self,showReleaseNotes=True)


Launches the Splash Screen if the user allows it / checkbox is set


Parameters:


showReleaseNotes (bool):  Determines if Text Release Notes are shown in the Splash Screen



mari.ExtensionPack.hotbox()


Hotbox/Marking Menu related Methods



  • showHotbox(self,path='', SubmenuBackLink = None, force = False, resetPosition = True)


General Method to launch a hotbox


Parameters:


path (str):                        The Path to the Hotbox Configuration Folder

SubmenuBackLink (str):        The Path to the Hotbox Configuration Folder the Submenu should link back to

force (bool):                        Force Open a new Instance of the Hotbox

resetPosition (bool):                Reset the Cursor Position (Hotbox Center on Launch) to cursor position




  • hotboxManagerUI(self)


Launches the Hotbox Designer UI



  • setupHotboxesOnStartup(self)


Sets up existing User Hotboxes on Mari startup (set hotkeys etc.)




  • setupEPHotboxesOnStartup(self)


Sets up Extension Pack Hotboxes on Mari startup  (set hotkeys etc.)

in a way that I am removing pre existing mari hotkeys for certain actions  if they are mapped

 


  • installEPHotboxes(self)


Installs Extension Pack Hotboxes into the Hotbox Folder (same location as Mari.conf file)

if they don't exist yet/are the same version



mari.ExtensionPack.brush()


  •  toggleSteadyStroke(self)


Toggles the Steady Stroke Brush Otpion on and off. When toggling on, the last used Mode is restored.

Modes are stores per Tool


mari.ExtensionPack.project_paths()


Set Project Path Tool


  • set_project_paths(self)


Launches the Set Project Path Dialog



  • def restore_project_paths(self)


Restores set project paths on Project Load



  • get_projectPath_jsonFile(self)


Returns the per project path to the json file

Used to store project path settings such as export paths etc.


mari.ExtensionPack.selection()


Selection related tools


  • isolateSelect(self)


Isolates visibility of the selection


mari.ExtensionPack.patch()


Patch related tools


  • patchBake_to_imagemanager(self)


Launches Patch Bake to Image Manager


mari.ExtensionPack.camera()


Camera/View related tools


  • unproject_channel_to_imagemanager(self)


Unproject Channel to Image Manager tool



  • unproject_layer_to_imagemanager(self)


Unproject Layer to Image Manager tool



  • unproject_view_to_imagemanager(self)


Unproject View to Image Manager tool



  • switch_to_uv_view(self)


Switch the active tab to the UV View



  • switch_to_ortho_view(self)


Switch the active tab to the Ortho View



  • switch_to_persp_view(self)


Switch the active tab to the Perspective View



  • switch_to_split_view(self)


Switch the active tab to the Split View




mari.ExtensionPack.exportChannel()


Export related tools


  • exportSelectedChannelsFlattened(self)


Launches Export Custom Channel Selection Dialog with the

"Flattened" Checkbox turned on



  • exportSelectedChannels(self)


Launches Export Custom Channel Selection Dialog with the

"Flattened" CHeckbox turned off



  • exportLast(self)


Runs the last Export from Export Custom Channel Selection



  • setExportLastBehavior(self)


Sets the Checkbox for how "Export Last" is to deal

with Selected Patch Export - using the original selection

or the current one



  • restoreExportLastBehavior(self)


Sets the Checkbox for "Export Last" Patch Selection Behavior

back to the way it was when Mari was last opened


mari.ExtensionPack.channel()


Channel related tools



  • channelFromChannelNode(self,geo,channelNode)


Returns a mari.channel from a mari.bakePointNode (a channel node)


Parameters:


geo (mari.geoEntity)                The geo to look for a channel

channelNode (mari.BakePoint)          The channelNode


Returns:


mari.Channel or None



  • duplicateFlattenChannels(self)


Launches Duplicate/Flatten Channel Dialog



  • saveChannelUDIMTemplate(self,geo=None,channel=None)


Samples the currently selected Channel and stores its resolutions per UDIM.        Geo and channel can optionally be supplied as arguments


Parameters:


geo (mari.geoEntity):        Pass in the Geometry the Channel lives on. If None (default) the selected object is used

channel (mari.Channel):        Pass in the Channnel to get the resolution off. If None (default) the selected channel is used




  • createChannelFromUDIMTemplate(self)


Create a new Channel with the UDIM Size Configuration stored via channel_template_get



  • resizeChannelToUDIMTemplate(self,geo=None,channel=None)


Sets the currently selected Channel to the UDIM resolutions stored via channel_template_get.

Geo and channel can optionally be supplied as arguments


Parameters:


geo (mari.geoEntity):        Pass in the Geometry the Channel lives on. If None (default) the selected object is used

channel (mari.Channel):        Pass in the Channnel to get the resolution off. If None (default) the selected channel is used



  • duplicate_channel(self)


Duplicate a channel with all sharing intact



  • duplicate_nodeNetwork(self,geo,inputNode,inputNodeNodeGraph,StopAfterRadioNodes=True,RenameChannelIncremental=True,

RenameChannel=False,newChannelName='NewChannel',offsetX=50,offsetY=50)


Duplicates a Node Network such as a channel while cleanign up and rebuilding shared connections in the graph.

Please be aware the same method exists in the nodegraph() class.


Return:


mari.Node()


Parameters:


geo (mari.geoEntity):                        Geo, inputNode lives on


inputNode (mari.Node):                        The node which to use as a base to duplicate the network (upstream connections). Should be a channel node but doesn't have to be

                       

inputNodeNodeGraph (mari.Nodegraph) :        The Nodegraph the input Node belongs to

                       

StopAfterRadioNodes (bool) :                If true (default value) connections upstream of a radio node will not be duplicated and the original Radio Node Connection is

                                       maintained if the first node upstream of a radio has connections to other channels.

                       

RenameChannelIncremental (bool):        If true (default value) and the inputNode is a Channel, the resulting duplicated channel will be renamed incrementally (1,2,3 etc.)


RenameChannel (bool):                        If RenameChannelIncremental=False and RenameChannel=True, and the inputNodeis a channel, the resulting duplicate channel will be renamed with

the name specified under newChannelName


newChannelName (string):                if RenameChannel=True and the inputNode is a channel, the resulting duplicate Channel will be renamed with this name


offsetX / offsetY (int):                        The offsetX and offsetY specify the offset of the duplicated nodes from their original nodegraph position



  • create_packed_channel(self)


Launch Pack Channel UI


  • focusChannelInGraph(self)


Selects the corresponding Node of a Channel in the Nodegraph and focuses the view on it


  • focusChannelContentInGraph(self)


Selects the corresponding Nodes of a Channel in the Nodegraph and focuses the view on it


  • lockChannel(self)


Lock a Channel


  • lockAllChannels(self)


Lock all Channels


  • unlockChannel(self)


Unlock a channel


  • unlockAllChannels(self)


unlock all channels


mari.ExtensionPack.channelLayer()


Channel Layer related tools


  • channelLayer_AddLayer(self)


Launches the "Add Channel Layer" UI



  • channelLayer_AddLayerMask(self)


Launches the "Add Channel Mask" UI



  • channelLayer_AddMaskGroup(self)


Launches the "Add grouped Channel Mask" UI


mari.ExtensionPack.layer()


Layer related tools


  • copyLayerAttributes(self)


Copies selected Layer Attributes to a Clipboard



  • pasteLayerAttributes(self)


Paste Layer Attributes onto selected layer from  a Clipboard



  • swapLayerType(self)


A call to a Dialog.

Allows you to swap out any Layer type for another Layer type.

If possible, settings are transfered between nodes



  • cloneMergeSelectedLayers(self)


Executes layer Clone & Merge


  • toggleSelectionVisibility(self)


toggles the visibility of selected layers


  • toggleUnselectedVisibility(self)


toggles the visibility of unselected layers


  • toggleSelectionLock(self)


toggles the locking of selected layers


  • toggleUnselectedLock(self)


toggles the locking of unselected layers


  • convertToPaintable(self)


Extension Pack Version of standard Mari Layer Convert to Paintable

Supports multi selection and channel layers


  • copyWithShared(self)


Executes "Copy with Shared Connections"

Shared Layers will always be relinked to their original source,

including in Mask Stacks

Pasted Channel Layers will be relinked to the original channel,

without unnecessary channel duplication



  • pasteWithShared(self)


Executes "Paste with Shared Connections"

Shared Layers will always be relinked to their original source,

including in Mask Stacks

Pasted Channel Layers will be relinked to the original channel,

without unnecessary channel duplication



  • layerCut(self)


Standard Mari Layer CUT Action,however since extension pack

moves the action in the UI it is declared here again


  • layerCopy(self)


Standard Mari Layer COPY Action,however since extension pack

moves the action in the UI it is declared here again


  • layerPaste(self)


Standard Mari Layer PASTE Action,however since extension pack

moves the action in the UI it is declared here again


  • addMask(self,mode)


The Add Mask Tools in Extension Pack are replacements for the existing Mari Add Mask functionality


Reveal All

Hide All

From Alpha

From Selection

From Selection Group


They act identical to the default Mari functionality in most cases however the Add Mask Tools

will no longer be disabled/grayed out when a mask or mask stack already exists on the layer


When executed on a layer with a pre-existing mask, the mask will be removed and a new one added

depending on the tool executed


When executed on a layer with a pre-existing mask stack, the mask stack will be removed and a new one added

depending on the tool executed


parameters:


mode (str):    available options are "reveal","hide","from Alpha","from Selection","from Selection Group"


mari.ExtensionPack.lights()


Light related methods


  • rotateEnvironmentLight(self,mode,multiplier)


Rotates the Environment Light.

Mode is either "slow","medium" or "fast"

The multiplier is usually 1 or -1 to rotate clockwise or

counterclockwise

               

  • createEnvLightPreference(self)


Adds ENV Light Rotation Settings to the Preferences


  • saveEnvLightPreference(self)


Saves the Setting of the ENV Light Rotation in the Preferences


mari.ExtensionPack.pinnedLayers()


Pinned Layer Methods (Layer Sharing Bookmarks)


  • emptyPin(self)


Executed if no layer has been pinned but user triggers quick pin


  • quickPin(self,mode)


Adds a Layer selection to the Quick Pin


parameters:


mode (str):     'channel' wil add a pinned Channel, else automatically use layers



  • triggerQuickPin(self,layerType,layerName,project_uuid,layer_uuid)


Adds shared layers from the Quick Pin


parameters:


layerType (str):       "0" for layers, "1" for channel layers

layerName (str):       The Name of the Layer the Pin references

project (str):         The Project Name the Quick Pin was added

project_uuid (str):    The Project UUID the Quick pin was added

layer_uuid (str):      The UUID of the Layer(s) the Quick Pin should add



  • collectionPin(self,mode)


Adds a collection Pin


parameters:


mode (str):             "0" for layers, "1" for channel layers  



  • triggerCollectionPin(self,layerType,layerName,project_uuid,layer_uuid)


Adds shared layers from a collection pin


parameters:


layerType (str):       "0" for layers, "1" for channel layers

layerName (str):       The Name of the Layer the Pin references

project (str):         The Project Name the Quick Pin was added

project_uuid (str):    The Project UUID the Quick pin was added

layer_uuid (str):      The UUID of the Layer(s) the Quick Pin should add



  • manageCollectionPins(self)


Launches Manage Collection Pins UI


  • restoreProjectPins(self)


Used to restore any Pins stored in a project, so they appear in the UI


  • clearCollectionPins(self)


Removes all Collection Pins in a Project


mari.ExtensionPack.shader()


Shader related tools


  • syncObjectShaderSelection(self)


Syncs all shader selections on all objects in a project to the current shader name



  • selectLastShader(self)


Tries to toggle to the last used shader



  • selectLastShader_monitorShaderChangesOnProjectOpen(self)


Sets up a signal to monitor shader changes when a project is oppened



  • selectLastShader_monitorShaderChangesOnGeoAdded(self)


Sets up a signal to monitor shader changes when a new piece of geo is added


mari.ExtensionPack.shaderPreset()


Shader Preset related tools


  • monitorShadersOnProjectOpened(self)


Adds a signal monitoring to each object in a project so we can detect if a new shader is added

and compare it on creation if a preset needs to be applied


  • monitorShadersOnGeoAdded(self)


Adds a signal monitoring to a new object in a project so we can detect if a new shader is added

and compare it on creation if a preset needs to be applied


  • saveShaderPreset(self)


Stores a shader preset from the selected shader


  • removeShaderPreset(self)


Removes a shader preset based on the selected shader


  • restoreShaderParametersFromPreset(self)


If a preset matching the name of the selected shader is found, this will restore

all shader attributes to the saved preset


  • restoreShaderChannelInputsFromPreset(self)


If a preset matching the name of the selected shader is found, this will restore

all shader inputs to the saved preset based on channel names

If a channel matching the channel name in the preset is found, it will be assigned to the

corresponding shader input


  • setNodesToShader(self)


With a shader selected in the Shader Palette, selected Nodes in the Nodegraph will be checked

if they contain any names of channels that have been previously saved in a shader preset.

If a channel name is part of the Nodename the Node will be assigned to the corresponding channel input


  • restoreShaderDefaultInputs(self)


With a shader selected in the Shader Palette, this will restore the shader to the state

it was before "setNodesToShader" was first used


mari.ExtensionPack.selection_group()


Selection Group related methods


  • materialID(self)


Launches the "Material ID from Selection Groups" Dialog


  • setMaterialIDColorByDialog(self,selGroups=None)


Spawns a dialog that lets the user set custom ID Colors for Selection Groups


Parameters:


selGroups (list):  A list of optional selection Groups, otherwise the current selected one is used

       

  • setMaterialIDOverride(self,SelectionGroups,color)


Sets a Material ID Override on the provided Selection Group(s)


Parameters:


SelectionGroups (list):  A list of selection Groups to apply the override to

color (list): A list of 4 values - [R,G,B,A] - from 0 to 1



  • removeMaterialIDOverride(self,SelectionGroups)


Removes a Material ID Override on the provided Selection Group(s)


Parameters


SelectionGroups (list)         A list of selection Groups to apply the override to



  • hideAll(self)


Hide All Selection Groups


  • showAll(self)


Show All Selection Groups


  • lockAll(self)


Lock All Selection Groups


  • unlockAll(self)


Unlock All Selection Groups


  • hideUnselected(self)


Hide unselected Selection Groups


  • invertVisibility(self)


Inverts the visibility of selectiong roups


  • deleteAll(self)


Delete All Selection Groups matching type (object, patch etc.)


  • deleteAll_containingName(self)


Delete All Selection Groups atching or containing a string        


  • searchAndReplaceNames(self)


Rename selection groups with a search and replace        



mari.ExtensionPack.object()


  • exportUVMasks(self)


Launches a full Export UV Mask dialog where you can export UV Masks from multiple objects


  • exportUVMasks_selectionOnly(self)


Launches a Export UV Mask dialog where you can export UV Masks from the SELECTED Object


  • exportGeometry(self)


Launches a full Export dialog where you can export your Geometry from your project


  • exportGeometry_selectionOnly(self)


Launches a Export dialog where you can export your SELECTED object


  • subdivide(self)


Launches the subdivide dialog, where you can batch subdivide multiple objects


  • setAllSUBDToHigh(self)


Set all objects to highest available subdivision


  • setAllSUBDToLow(self)


Set all objects to level 0


  • setVisibleSUBDToHigh(self)


Set all visible objects to highest available subdivision


  • setVisibleSUBDToLow(self)


Set all visible objects to level 0


  • addDefaultObject(self,asObjectVersion=True)


Launches the "Add Default Objects" dialog

where you can add a number of primitive objects to your Mari scene (plane, tiling plane, cube etc.)


Parameters


asObjectVersion (bool)         Determines is the 'Add as Object Version' Checkbox is ticked by default


mari.ExtensionPack.imageManager()


Image Manager related Methods


  • exportSelected(self)


Export the selected images in the image manager to a folder


  • reloadSelectedImages(self)


Reloads selected images in the image manager from disc and updates

their occurrences inside of the project (tiled, triplanar etc.)


  • cleanImageManager(self)


Checks if an Image is used in the project by comparing the Image Path

in the Image Manager to Image Path Metadata on all nodes in project



mari.ExtensionPack.view()


View related methods


  • screenshot_all_channels(self)


Screenshot all channels


mari.ExtensionPack.shading()


Shading related methods


  • disableViewport(self,mode)


Turns the spinning wheel on in the Mari viewport to pause viewport updates


parameters:


mode (str):     "iconOnly" will only set the action icon to enabed/disabled (toggle) without actually launching anything. This is to handle any python action that doesn't directly call the disableViewport Action.



mari.ExtensionPack.symmetry()


Extension Pack Symmetry Bake Tool related methods


  • activateSymmetryX(self)


Activates Symmetry Bake in Mari X Axis


  • activateSymmetryY(self)


Activates Symmetry Bake in Mari Y Axis


  • activateSymmetryZ(self)


Activates Symmetry Bake in Mari Z Axis


  • setSymmetryMode(self)


Toggles between different Symmetry Modes


mari.ExtensionPack.bakePoints()


Bake Point related methods


  • bakeSelectedBakePoints(self)


Bakes all selected Bake Points in the Nodegraph


  • useBake(self,bool)


Sets the "use Bake" checkbox in selected bake points to on or off


parameters


bool (bool) = True/False


  • smartBakeHierarchy(self)


From the currently selected node upstream, refresh all bake points that are empty or out of date including in groups



mari.ExtensionPack.radioNodes()


Radio and Radio Transmitter Node related Methods


  • toggleRadioNodes(self,node,Force=False,ForceMode="")


       A Python API method to toggle a Radio node, so it doesn't require UI interaction like

       toggleSelectedRadioNodesConnection()

       By using Force and Force Mode "Show" or "Hide" you can show all or hide all


       Parameters:


       node (mari.Node)        The node to set

       Force (bool)                By setting a Force Boolean you can force a mode such as Hide or show otherwise it just toggles

       ForceMode (string)        'Show' or 'Hide to show or hide a connection



  • cycleRadioNodeConnections(self)


This is a special way to cycle through the modes of radio nodes


1) If any Radio Nodes are selected it will toggle them

2) If no Radio Nodes are selected it will toggle ALL of them first  to show, then hide


  • toggleSelectedRadioNodesConnection(self)


Toggle Selected Radio Nodes between "Show Connection" and "Hide Connection"


  • hideAllRadioNodeConnections(self)


Hides all Radio Connections in the current Graph Tab


  • showAllRadioNodeConnections(self)


Shows all Radio Connections in the current Graph Tab


  • jumpViewToRadioNodeConnection(self)


Focuses your Nodegraph on connected Nodes from the currently selected Radio Node or Radio Transmitter Node


  • connectRadioNodeToTransmitter(self)


Launches the "Connect to Transmitter" dialog



  • createRadioNodePreference(self)


Adds Radio Node Preferences to the Mari Preferences


  • saveRadioNodePreference(self)


Saves the On/Off State of Radio Node Preferences in the Mari Preferences


  • reconnectRadioNodeToTransmitter(self,radionode)


Given a Radio Node this method will search your nodegraph

for a Transmitter Node matching the name of a Transmitter Node

that was previously connected to that radio node and reconnect it.


Part of a system of reconnecting parts of your nodenetwork on import

to project specific parts of your graph such as Ambient occlusion etc.


Parameters:


radionode (mari.Node) : The Radio Node to sample.


  • connectRadioNodeCreationSignal(self)


Monitors if a created Node is a Radio Node


  • disconnectRadioNodeCreationSignal(self)


Turns off monitoring of Nodecreation in your project for Radio Nodes


mari.ExtensionPack.nodegraph()


Nodegraph related methods


  • jumpToNodeOutput(self)


Jumps to the connected Node of the currently selected node output

If multiple Nodes are connected to the Output a dialog will show

 


  • jumpToNodeInput(self)


Jumps to the connected Node of the currently selected node input

If a node has multiple inputs a dialog will show



  • duplicateNodesWithConnections(self,offsetX=50,offsetY=50)


Duplicate selected Nodes while maintaining their connections


       Parameters:


       offset X / Y:        Specifies the offset of duplicated nodes in the Nodegraph



  • renameNodesUI(self)


Launch the "Multi Rename Nodes" Tool UI



  • selectAllNodes(self)


Select all Nodes in the current Graph Tab



  • deselectAllNodes(self)


deselect all Nodes in the current Graph Tab


  • deselectAllNodesExceptBackdrops(self)


deselect all Nodes except backdrops in the current Graph Tab


  • selectUpstreamNodes(self)


select all upstream nodes from the current node selection


  • selectUpstreamNodes_ignoreRadios(self)


select all upstream nodes from the current node selection but stop after a radio node



  • selectCustomNodes(self)


select all non-mari nodes (custom nodes) and open a dialog with stats how many custom nodes are in your current graph


  • jumpToBookmark(self)


Launches the "Jump to Bookmark" UI


  • cycleBookmarkNodesForward(self)


Cycle forward through the available node graph bookmarks


  • cycleBookmarkNodesBackwards(self)


Cycle backwards through the available node graph bookmarks


  • smartRenameNodesUI(self)


Smart rename selected Nodes based on a some given rules


  • swapNodeType(self)


Allows you to swap out any node type for another node type. If possible, settings are transfered between nodes



  • duplicate_nodeNetwork(self,geo,inputNode,inputNodeNodeGraph,StopAfterRadioNodes=True,RenameChannelIncremental=True,

RenameChannel=False,newChannelName,offsetX=50,offsetY=50)


Duplicates a Node Network such as a channel while cleanign up and rebuilding shared connections in the graph.

Please be aware the same method exists in the channel() class.


Return:


mari.Node()


Parameters:


geo (mari.geoEntity):                        Geo, inputNode lives on


inputNode (mari.Node):                        The node which to use as a base to duplicate the network (upstream connections). Should be a channel node but doesn't have to be

                       

inputNodeNodeGraph (mari.Nodegraph) :        The Nodegraph the input Node belongs to

                       

StopAfterRadioNodes (bool) :                If true (default value) connections upstream of a radio node will not be duplicated and the original Radio Node Connection is

                                       maintained if the first node upstream of a radio has connections to other channels.

                       

RenameChannelIncremental (bool):        If true (default value) and the inputNode is a Channel, the resulting duplicated channel will be renamed incrementally (1,2,3 etc.)


RenameChannel (bool):                        If RenameChannelIncremental=False and RenameChannel=True, and the inputNodeis a channel, the resulting duplicate channel will be renamed with

the name specified under newChannelName


newChannelName (string):                if RenameChannel=True and the inputNode is a channel, the resulting duplicate Channel will be renamed with this name


offsetX / offsetY (int):                        The offsetX and offsetY specify the offset of the duplicated nodes from their original nodegraph position



  • copyNodeAttributes(self)


Save the currently selected Node Attributes to a File



  • setNodeAttributes(self)


Set the currently selected Node Attributes from a Clipboard File



mari.ExtensionPack.node()


Node related methods


  • findConnectedNodeOutput(self,graph,node_to_find,skipDots=False)


Returns the Nodes that are connected to the Output of the supplied Node

With Skip Dots turned on, the return will contain the node connected to a dotNode

if there is one inbetween


Parameters:


graph (mari.nodeGraph):            The Graph to search in

node_to_find (mari.Node):          The node you want to check for, which other nodes are connected to its output(s)


Returns:


(list):                                    A list of nodes (mari.Node)


Please note as of Mari 4.5 there is additional standard Python API mari.node().outputNodes()

that may be better suited for the task in some cases




  • channelsNodeBelongsTo(self,node_to_find,geo,excludeChannelLayer=True)


Returns a Dictionary of Channels [UUID:CHANNEL] that a given node belongs to


Parameters:


node_to_find (mari.Node):          A Node (mari.Node) you want to determine which channel(s) are using it


geo (mari.geoEntity):              Which Object in your scene you want to check for channels


excludeChannelLayer (bool):        If true only Channels will be returned that use the node in their own channel stream but not as part of a 'channel layer' stream                


Return:


{dict}:                                    Returns a Dictionary of Channels with key= ChannelUUID, value=ChannelObject




  • getNodePrettyName(self,node)


Returns the pretty Name of a Node, as it is listed in the UI


Parameters:


node:                               A Node Object (mari.Node)


Return:


String:                             Returns a String




  • getNodeCategory(self,node)


Returns the Node Category of a Node, as it is listed in the UI


Parameters:


node:                              A Node Object (mari.Node)


Return:


String:                            Returns a String




               

  • getNodePosition(self,graph,node)


Returns the Node Position as a list and a string


Parameters:


graph:                              The nodegraph the node belongs to (mari.NodeGraph)

node:                              A Node Object (mari.Node)


Return:


List:                              Returns a list with the coordinates [x,y]





  • inputNode(self,node,nodeport)


A wrapper method around mari.node.inputNode() to deal with differences

between mari versions.


The method will return pairs of [inputNode,outputPortOnInputNode] for mari 4.5

and above and [inputNode,''] for versions below mari 4.5


Parameters:


node:                                     The node to check for connections on (mari.Node)

port:                              The Input Port Name to check for connections (string)


Return:


List:                              Returns a list with the pair [inputNode, outputPortOnInputNode]





  • setInputNode(self,node,portname,NodeToConnect,OutputPortName='')


A wrapper method around mari.node.setInputNode() to deal with differences between mari versions.

The method allows the same code for both Mari 4.5+ and below

On mari 4.5+ this supports multiOutput Nodes, below it doesn't so the OutputPortName is ignored then.


Parameters:


node:                              The node to connect something to (mari.Node)

port:                              The Input Port Name to connect something to (string)

NodeToConnect:                        The Node to Connect to the Port

OutputPort:                        The OutputPort of the NodetoConnect to connect to


Return:


None



  • createNodeDuplicateAtPosition(self,graph,nodes,PositionList,removeOriginalNode=False)


Create duplicates of given nodes at a fixed position


Parameters:


       graph:                              The nodegraph the node belongs to (mari.NodeGraph)

       nodes:                              A list of Node Objects (list(mari.Node))

       offsetList:                        A list of offset coordinates [x,y]

       removeOrigNodes:           If True the original nodes are removed


Return:


       List:                              Returns a list of nodes

   



  • createNodeDuplicateWithOffset(self,graph,nodes,offsetList,removeOriginalNode=False)


Create duplicates of given nodes with a position offset


Parameters:


graph:                                The nodegraph the node belongs to (mari.NodeGraph)

nodes:                                      A list of Node Objects (list(mari.Node))

offsetList:                                A list of offset coordinates [x,y]

removeOrigNodes:                    If True the original nodes are removed


Return:


List:                                      Returns a list of nodes



  • createNodeAtPosition(self,graph,nodeString,positionList)


Creates a new node at a specific position


Parameters:


graph:                The nodegraph the node belongs to (mari.NodeGraph)

nodes:                A list of Node Objects (list(mari.Node))

PositionList:       A list of coordinates [x,y]


Return:


mari.Node():        Returns a mari.Node


 


  • getAllNodesConnectedToNode(self,targetNode,nodeGraph,groupContentMode='Include Group Node Content',returnBakePointUpstream=True,includeTargetNode=True,GraphGroup_TraverseConnectedOutputOnly=False)


Given a Target Node (and the nodeGraph it lives in) this will return all Nodes

that are connected to the targetNode + optionally targetNode again as well.



Parameters:


targetNode (mari.Node):                        The Node you want to find all connected nodes for


nodeGraph (mari.nodeGraph):                    The Nodegraph the targetNode lives in


groupContentMode (str):                         If "Include Group Node Contents" all Nodes inside of Graph Groups will be returned as well. Otherwise just the nodes fromt he target Node Nodegaph will be returned


returnBakePointUpstream (bool):        If "False" nodes upstream from bake points will only be returned if the bake point is disabled or does not useBake(). If "True" all nodes upstream of Bakepoints will be returned


includeTargetNode (bool):                      If "True" the given targetNode will be includes in the returned list


GraphGroup_                                If 'True' and groupcontentmode = Inlcude Group Node Content, only group content will be evaluated that is connected

TraverseConnectedOutputOnly (bool)        to an output that is part of the topological sorting of the main input node given to the function

       



Return:


(list):                                         A list of nodes (mari.Node)




  • smartRenameNode(self,graph,node)


Smart rename given Nodes, circumventing the Smart Rename UI

       

Parameters:


graph (mari.Nodegraph):        A mari Nodegraph obkect

node (mari.Node):                Node to rename





  • saveNodeAttributes(self,selectedNode)


Save the given Nodes Node Attributes to a File

Similar to what is in the Nodepgraph Class, but this one can use a given node instead of a selection


Parameters:


selectedNode (mari.Node)  A Mari Node




  • setNodeAttributes(self,selectedNode)


Apply a saved set of Node Attributes the given Node

Similar to what is in the Nodepgraph Class, but this one can use a given node instead of a selection


Parameters:


selectedNode (mari.Node)  A Mari Node



mari.ExtensionPack.nodeUtilities()




  • createSmartMergeNode(self)


Creates a Multi Channel Merge Node if the selected Nodes contain Materials or a regular Merge Node otherwise



  • setMergeNodeColorspace_PreferenceChanged(self)


Part of a system to automatically turn of "Color Space Enabled" on newly created Merge Nodes in the Nodegraph.

This method is used to update signal connects when the preference "Set Color Space Enabled" is changed by the user


  • setMergeNodeColorspace_createPreference(self)


Part of a system to automatically turn of "Color Space Enabled" on newly created Merge Nodes in the Nodegraph.

This method is used to create a preference "Set Color Space Enabled" int he Nodegraph section of the Mari Preferences


  • setMergeNodeColorSpaceToDisabled(self)


Sets the currently selected merge node "Color Space Enabled" Setting to Disabled


mari.ExtensionPack.gizmo()


  • lauchMaskPresetUI(self,nodelist,ReplaceExisting=False,ForceConnectionDialog=False,parent=None)


Launches the Mask Preset Setup UI scanning the nodelist for ports that can be setup


       Parameters:


               nodelist (list)                                a list [] of mari.Node Objects

               

               ReplaceExisting (bool)                        if the tool is executed with Replace Existing, it will replace existing connections

                                                       on a preset. Otherwise it will only create new connections on empty node ports

               

               ForceConnectionDialog (bool)                Usually a Connection Dialog won't be shown if the Tool finds all necessary channels

                                                       in your Project. Running it with ForceConnetionDialog=True will always show the

                                                       connection dialog


               Parent                                        The parent for the dialog. If left at None the parent will be the mari main window




  • launchMaskPresetUI_RefreshMode(self,nodelist,parent=None)


Launches the Mask Preset Setup UI scanning the nodelist for ports that can be setup.

       In the refresh mode all ports are considered even if they already have something attached


       Parameters:


       nodelist (list)                a list [] of mari.Node Objects



  • launchMaskPresetUI_BakingMode(self,parent=None)


Launches the Mask Preset Setup UI

In the Baking mode it doesn't require a node but shows Curvature Baking options

so users can create the frequently used channels without already having a preset



  • launchMaskPresetUI_SelectedNodes(self,ReplaceExisting=False,ForceConnectionDialog=False,parent=None)


       Launches the Mask Preset Setup UI with the current Node Selection as processing base



       Parameters:



       ReplaceExisting (bool)                        if the tool is executed with Replace Existing, it will replace existing connections

                                               on a preset. Otherwise it will only create new connections on empty node ports

               

       ForceConnectionDialog (bool)                Usually a Connection Dialog won't be shown if the Tool finds all necessary channels

                                               in your Project. Running it with ForceConnetionDialog=True will always show the

                                               connection dialog


       Parent                                        The parent for the dialog. If left at None the parent will be the mari main window




  • launchMaskPresetUIPreferences(self)


Launches the Mask Preset Setup Preferences UI



mari.ExtensionPack.maskShelf()


  • launchSmartMaskShelf(self,mode)


Opens the Smart Mask shelf


Parameters


mode (str)        'Layer' or 'Nodegraph'



  • closeSmartMaskShelfInstance(self)


Closes any Smart Mask Shelf running in the Background



  • resetSmartMaskShelfPositionAndSize(self)


Closes any currently active instance of the Smart Mask Shelf

then resets the size and position to default



  • createMaskShelfPreferences(self)


Creates Preferences inside the Mari Preferences to unlock the Default Shelfs




  • saveMaskShelfPreference(self)


Saves Mask Shelf Specific Preferences to unlock the Default Shelfs


mari.ExtensionPack.shelf


  • deleteAllUserMariShelves(self)


Deletes all custom Shelf Tabs inside the Standard Mari Shelf System


  • createShelfFromFolder_UI(self)


Launches a UI to create Shelves from Folders


  • createAdditionalShelfUIElements(self)


Adds a new button to the shelf palette to launch the CreateShelfFromFolder UI


mari.ExtensionPack.toolbar()


Adds Toolbar Options to existing Mari Toolbars


  • initialize_TransformPaintToolbar(self)


Adds Extension Pack Options to the Transform Paint Toolbar


  • initialize_SyncedBufferDepth(self)


Turns on Buffer BitDepth Syncing on a new session if it was active on previous session close

Buffer BitDepth Syncing will constantly switch the paint buffer bit depth to the

bit depth of the currently selected channel



  • initialize_transformObjectToolbar(self)


Adds Extension Pack Options to the Transform Object Toolbar


  •  createToolsToolbarPreference(self)


Adds Settings to the Preferences to control the appearance of the Mari Tools Toolbar


  • saveToolsToolbarPreference(self)


Saves the State of preferences to control the appearance of the Mari Tools Toolbar


  • changeToolsToolbarPreference(self)


Launches an operation to edit the DefaultToolbars.conf file when the setting is changed


mari.ExtensionPack.text()


Extension Pack Text Tool


  • textGenerator(self)


Launch the EP Text Generator


mari.ExtensionPack.project()


Project related tools such as cleanup tools        


  • removeAllSnapshots(self)


Remove all Layer and Channel Snapshots


  • cleanUpData(self)


Run a Garbage Collect


  • openCurrentProjectFolder(self)


Opens your Project Directoy (currently open project) in a File Browser


  • getCurrentProjectFolder(self)


Convenience Method to retrieve the current Project Dir.

Always returns the first Path in the Dir List, to avoid issues if there are multiple cache directories.



mari.ExtensionPack.archive()


Project archiving related tools


  • markProjectAsArchived(self,UUID)


Adds information about Archive Status and Archive Date to the Project Tooltip

and marks the Project Screenshot with a visual indicator



  • archiveUpToDate(self,cur_project,outOfDate=False)


Sets the ArchiveUpToDate Metadata on a Project


Parameters:


cur_project (mari.project):        a mari.Project

outOfDate (bool):                Sets the Metadata to True of False


mari.ExtensionPack.projectors()


Projector related tools


  • toggleCameraType(self)


toggles the selected projector between Orthographic and Perspective


mari.ExtensionPack.dev()


A number of tools and dialogs to easily find classes, methods, actions and menu paths


  • action_finder(self)


Launches Dialog to search through Mari Actions


  • menu_path_finder(self)


Launches Dialog to search through Mari Menu Paths


  • class_method_finder(self)


Launches Dialog to search through available classes and methods


mari.ExtensionPack.help()


Access to Help and Tutorials


  • createSmartMaskProject(self)


Creates a Project with the Smart Mask Icon Geo and some Bakes


  • open_online_help(self)


'Launch Extension Pack Online Help


  • open_tutorials(self)


Launch Youtube Extension Pack Tutorials



  • open_releaseNotes(self)


Launch the Release Notes




  • send_bug_report(self)


Opens an email to file a bug report



  • onlineHelpURL(self)


The URL of the Online Help



  • releaseNotesURL(self)


The URL of the Release Notes


  • youtubeURL(self)


       The URL of the Youtube Tutorial Playlist


  • email(self)


       The Email Address to contact the Developer


  • facebook(self)


       The URL of the Extension Pack Facebook Page


  • tdrTutorial(self)


       The URL to the Tutorial to configure your TDR Settings


mari.ExtensionPack.version()


Methods to determine Extension Pack Versions


  • check_version(self)


Check if a new version exists


  • versionAsJson(self,jsonfile=None)


returns Path to Json file containing Major, Minor, Patch and PrettyVersionName


  • majorVersion(self)


returns the Major Version


  • minorVersion(self)


returns the Minor Version


  • patchVersion(self)


returns the patch Version


  • buildVersion(self)


returns the build Version


  • versionPrettyName(self)


returns the Pretty Version Name


  • version(self)


returns the full version consisting of major,minor and patch



  • mari45OrAbove(self,invert=False)


Returns true if Mari 4.5 or higher. Can be inverted with invert parameter



  • mari46OrAbove(self,invert=False)


Returns true if Mari 4.6 or higher. Can be inverted with invert parameter



mari.ExtensionPack.content()


  • showTextureInstallDialog(self)


Displays a Dialog to ask the User if to install Shelves - only Mari 4.5 and above


  • canTextureInstallDialogBeShown(self)


A Method called on Mari Startup to check if the user opted out of Installation of Shelves


  • checkIfShelvesAreUpToDate(self)


Compares if EP Shelf Content is the latest and installs any new ones


mari.ExtensionPack.utils()


Various Python Helper Methods



  • getImageAttributeNames(self)


Returns a list of Image Attributes used in Mari Nodes.

Useful if you need to check for Images on Nodes



  • getMariSettingsFolder(self)


Returns the Location of the Mari config file



  • TDRCheck(self)


Runs a TDR Check on windows system and shows a warning to the user if the settings are not recommended

Doesn't do anything if settings are ok or on Linux or Mac


Returns:


bool        Returns True if the Dialog was accepted or False if the Dialog was rejected





  • findActiveLayerSelection(self,includeAdjustmentStacks=True,includeMaskStacks=True,includeGroupLayers=True,includeChannelLayers=True)


The following are used to find layerselections no matter where in the Mari Interface

(Floating Palettes, Mask Stacks etc.)


This is to support a) Layered Shader Stacks b) deeply nested stacks (maskstack,adjustment stacks),

as well as cases where users are working in pinned or docked channels without it being the current channel


Parameters:


includeAdjustmentStacks (bool)                        Determines if to include this StackType into the search

includeMaskStacks (bool)                        Determines if to include this StackType into the search

includeGroupLayers (bool)                        Determines if to include this StackType into the search

includeChannelLayers (bool)                        Determines if to include this StackType into the search


Return:


curGeo                                                    The current Geo or NONE

curChannel                                        The current Channel or NONE

curStack                                        The current Layerstack (NOT the same necessary as the channel) or NONE

curLayer                                                The 'current' layer as in the current paint target or NONE

curSelList                                         A list of all selected layers or NONE




  • findNodeGraphContext(self)


this is a method to find the active nodegraph based on the open tab

Hopefully in the future Mari will provide this via its build in python

at which point the method will use that method to keep backwards compatibility


Return:


mari.Nodegraph



  • findNodeGraphTabWidget(self,returnNoneIfRootGraph=False)


this is a method to find the active nodegraph Tab widget


Parameters:

       returnNoneIfRootGraph (bool):  If true the return is always None if the active tab widget is the root graph


Return:

       TabbedWidget





  • recursiveNodeList(self,node_list)


Returns all Nodes including Group Contents based on initial list provided

For example if you give a nodelist containing a group node, the return

will include all nodes from the initial nodelist plus all nodes from within the group


Parameters:


node_list (list):                 A list of nodes (mari.Node)


Return:


(list):                    A list of nodes (mari.Node)





  • recursiveGroupNodeList(self,node_list)


Returns all Group Nodes including Groups in Groups based on initial list provided

For example given a nodelist you will get all Group Nodes inside this Nodelist

including all Group Nodes inside of Group Nodes


Parameters:


node_list (list):                 A list of nodes (mari.Node)


Return:


(list):                    A list of group nodes (mari.GraphGroup)




  • getSelectedNodesOnCurrentGeoRootGraph(self,FirstOnly=False)


A quick and easy way to get the selected Nodes from the current geo root graph


Parameters:


FirstOnly (bool):          If "True" only the first found selected node willl be returned, otherwise all selected ones


Return:


(list):                            A list of nodes (mari.Node)




  • mariMainWindowObject(self)


This returns the Mari Main Window Object or None if not found


 


  • setNodegraphContext(self)


this sets the context focus inside of mari to the Nodegraph. This is useful to return focus to the Nodegraph after a dialog was opened/closed





Created with the Personal Edition of HelpNDoc: Full-featured EPub generator