Utils¶
Application¶
- saveCurrentScene()¶
Save current scene
Checks if the file has already been saved. Returns “save”, “discard” or “cancel”.
If not saved opens “save”, “discard” or “cancel” window. Returns the button pressed if “discard” or “cancel”
If “save” is clicked it will try to save the current file, if cancelled will return “cancel”
- Returns:
The button clicked returned as a lower case string “save”, “discard” or “cancel”
- Return type:
- restartMaya(force=False, delay=3)¶
Restarts maya with the same environment.
Add delay in case maya takes a while to close and save.
- Returns:
Env¶
- getMayaLocation(mayaVersion)¶
Gets the generic maya location where maya is installed
- mayaScriptPaths()¶
Returns a list of maya script paths, received from the MAYA_SCRIPT_PATH environment
- Return type:
list(str)
- mayaModulePaths()¶
Returns a list of maya module paths, received from the MAYA_MODULE_PATH environment
- Return type:
list(str)
- mayaPluginPaths()¶
Returns a list of maya plugin paths, received from the MAYA_PLUG_IN_PATH environment
- Return type:
list(str)
- pythonPath()¶
Return a list of paths, received from the PYTHONPATH evironment
- Returns:
a list of paths
- Return type:
list(str)
- getEnvironment()¶
Gets maya main environment variable and returns as a dict
- Returns:
dict
- printEnvironment()¶
logs the maya environment to the logger
- mayapy(mayaVersion)¶
Returns the location of the mayapy exe path from the mayaversion
- isMayapy()¶
Returns True if the current executable is mayapy
- Returns:
bool
- isMayaBatch()¶
- isInteractive()¶
- mayaVersion()¶
Returns maya’s currently active maya version ie. 2016
- Returns:
maya version as an int with no updates (decimals) ie. 2016
- Return type:
- apiVersion()¶
Returns maya’s currently active maya api version ie. 201610 as an int
- Returns:
Maya api version as an int ie. 201610
- Return type:
- mayaVersionNiceName()¶
Returns maya’s currently active version and api (update) as a str for users ie. “2016.1”
- Uses two strings to create the version number including the update (API version) as a float:
“2016” and “20160100” = 2016.1
Accounts up to update 29 eg “2016.29”
- Returns:
Maya api version in nice name form ie. 2016.1 that can be converted to float
- Return type:
Fbx¶
Utilities for handling FBX related operations
- availableFbxVersions(ignoreBeforeVersion=None)¶
Returns the current available fbx versions in the form of [(“FBX202000”, “FBX 2020”)].
- currentFbxExportVersion()¶
Files¶
- exportContext(rootNode)¶
- exportMultiContext(nodes)¶
- newScene(force=True)¶
Creates a new maya scene.
- saveScene(path, removeUnknownPlugins=False)¶
- openFile(path, selectivePreload=False, force=True, modified=False)¶
Opens the maya file.
- Parameters:
- importScene(filePath, force=True)¶
- referenceFile(filePath, namespace=None)¶
- exportSceneAsFbx(filePath, skeletonDefinition=False, constraints=False)¶
- exportAbc(filePath, objectRootList=None, frameRange='1 1', visibility=True, creases=True, uvSets=True, autoSubd=True, dataFormat='ogawa', userAttr=None, userAttrPrefix=None, stripNamespaces=False, selection=False)¶
- Exports and alembic file from multiple objects/transform nodes, could be multiple selected hierarchies for
example objectRootList is the list of objects who’s hierarchy is to be exported.
Note
Since the cmds.AbcExport does not support spaces in filepaths, this function saves in temp and then moves the file to the correct location.
- Parameters:
filePath (str) – the full file path to save to.
objectRootList (list) – a list of objects that are the root object, under each transform gets exported, None is scene.
frameRange (str) – frame range (to and from) separated by a space.
visibility (bool) – export visibility state?
creases (bool) – export creases? autoSubd needs to be on.
uvSets (bool) – export with uv sets?.
creases – export creases? autoSubd needs to be on.
autoSubd (str) – Must be on for crease edges, crease vertices or holes, mesh is written out as an OSubD.
userAttr (tuple) – will export including Maya attributes with these custom strings in a list.
userAttrPrefix (tuple) – will export including Maya attributes with these prefix’s, custom strings in a list.
stripNamespaces (bool) – will strip the namespaces on export, if duplicated names it will fail.
selection (bool) – will export selected nodes only, given they are under the root list.
- getCamGeoRootsFromScene(exportGeo=True, exportCams=True, returnWorldRoots=True)¶
Returns the root objects of ge and cams (so that objects can’t be doubled) top most node/s in a scene. This is for .abc exporting where the root nodes need to be given and not doubled
- Parameters:
- Return objectRootList:
all root object names (objects can’t be doubled) of the scene with cams or geo
- Rtype objectRootList:
list
- exportAbcSceneFilters(filePath, frameRange='1 1', visibility=True, creases=True, uvSets=True, dataFormat='ogawa', noMayaDefaultCams=True, exportGeo=True, exportCams=True, exportAll=True, userAttr=None, userAttrPrefix=None)¶
Export alembic whole scene settings
- Parameters:
filePath (str) – the full file path to save to
frameRange (str) – frame range (to and from) separated by a space
visibility (bool) – export visibility state?
creases (bool) – export creases? autoSubd needs to be on
uvSets (bool) – export with uv sets?
dataFormat (str) – Alembic can save is a variety of formats, most commonly “ogawa”
noMayaDefaultCams (bool) – If True don’t export Maya’s default cams such as persp, top, side, front etc
exportGeo (bool) – Export geometry?
exportCams (bool) – Export cameras?
exportAll (bool) – exports everything in the scene
userAttr (tuple) – will export including Maya attributes with these custom strings in a list
userAttrPrefix (tuple) – will export including Maya attributes with these prefix’s, custom strings in a list
- Return filePath:
the full file path to save the alembic
- Rtype filePath:
str
- Return objectRootList:
list of the root object to export, alembic requires root objects/transforms to export
- Rtype objectRootList:
list(str)
- exportAbcSelected(filePath, frameRange='1 1', visibility=True, creases=True, uvSets=True, dataFormat='ogawa', userAttr=None, userAttrPrefix=None)¶
Exports selected objects as alembic filetype .ABC and will auto load the plugin/s if not loaded Alembics export from the root, so filter the root of each selection hierarchy
- Parameters:
- Returns:
the full file path to saved.
- Return type:
- exportObj(filePath, sceneNode)¶
- loadAbcPlugin(message=True)¶
Loads the AbcImport and AbcExport plugins, also autoloads the alembic plugins
- Parameters:
message (bool) – Report the message to the user?
- importAlembic(filePath, message=False)¶
Loads an alembic file (.ABC) and will auto load the plugin/s if not loaded
- importObj(filePath)¶
- importFbx(filepath, cameras=False, lights=False, skeletonDefinition=True, constraints=True)¶
- exportFbx(filePath, exportNodes, skeletonDefinition=False, constraints=False, **kwargs)¶
- class ModFile(path)¶
Bases:
object
- pluginPath = ''¶
- version = ''¶
- pluginName = ''¶
- scriptsPath = ''¶
- property resolvedScriptsPath¶
- mayaFileType(message=True)¶
Returns the current Maya file type
- Returns:
General¶
General maya functions
Example use:
from zoo.libs.maya.utils import general
lockSelectedNodes(unlock=False, message=True)
- isSafeName(name)¶
Determines if the provided name is safe for use as a node name.
A name isn’t valid if it doesn’t start with a letter, or contains any invalid characters.
- mayaUpVector()¶
Gets the current world up vector
- Return type:
om1.MVector
- isYAxisUp()¶
Returns True if y is world up
- Returns:
bool
- isZAxisUp()¶
Returns True if Z is world up
- Returns:
bool
- isXAxisUp()¶
Returns True if x is world up
- Returns:
bool
- loadPlugin(pluginPath)¶
Loads the given maya plugin path can be .mll or .py
- unloadPlugin(pluginPath)¶
unLoads the given maya plugin name can be .mll or .py
- isPluginLoaded(pluginPath)¶
Returns True if the given plugin name is loaded
- getMayaPlugins()¶
- loadAllMayaPlugins()¶
- unLoadMayaPlugins()¶
- removeUnknownPlugins(message=True)¶
Removes unknown plugins from the scene.
- deleteUnknownNodes(message=True)¶
Deletes nodes of unknown type, usually plugins that are missing or not installed.
Also see removeUnknownPlugins()
- deleteTurtlePluginScene(removeShelf=True, message=True)¶
Removes Turtle from the scene, unloads the plugin and deletes the shelf too.
- deleteShelf(name)¶
Deletes maya shelf
- Parameters:
name (str) – Name of shelf
- Returns:
Returns true if deleted, False otherwise
- lockSelectedNodes(unlock=False, message=True)¶
Locks or unlocks the selected nodes, Maya locked nodes are nodes that can’t be deleted.
- namespaceContext(namespace)¶
Context manager which temporarily sets the current namespace, if the namespace doesn’t exist it will be created.
- Parameters:
namespace (str) – The maya Namespace to use, ie. “MyNamespace” or “:MyNamespace”
- tempNamespaceContext(namespace)¶
Creates a temporary namespace that only lives for the life time of the scope
- Parameters:
namespace (str) – The Temporary maya Namespace to use, ie. “tempNamespace” or “:tempNamespace”
- generateUniqueNamespace(name)¶
Generates a unique namespace based on the current scene state in the form of name, name01, name02.
If the provided namespace is already unique it will be returned as is.
- isolatedNodes(nodes, panel)¶
Context manager for isolating nodes in maya model panel
- maintainSelectionContext()¶
Context manager which maintains the current selection
- maintainSelectionDecorator(func)¶
Decorator to maintain the current selection.
- undoDecorator(func)¶
Allows all cmds, mel commands perform by the the
func
into a single undo operation.@undoDecorator def myoperationFunc(): pass
- undoContext(name=None)¶
Context manager for maya undo.
with undoContext: cmds.polyCube() cmds.sphere()
- openUndoChunk(name=None)¶
Opens a Maya undo chunk
- closeUndoChunk(name=None)¶
Opens a Maya undo chunk
- createRepeatCommandForFunc(func, *args, **kwargs)¶
Function which updates mayas repeat last command with the provide function.
Note
Only functions/staticmethods/classmethods are supported.
def testFunction(argOne, keyword=None): print(argOne, keyword) createRepeatCommandForFunc(testFunction, "helloworld", keyword=0)
- Parameters:
func (callable) – The function for the user repeat(hotkey: g or editMenu: repeat Last)
args (tuple) – The arguments to pass to the repeat function
kwargs (dict) – The keyword arguments to pass to the repeat function.
- createRepeatLastCommandDecorator(function)¶
Decorator function which updates the maya repeat command with the decorated function.
Note
All args/kwargs of the decorated function will be passed to the repeat command
Note
Only functions/staticmethods/classmethods are supported.
@createRepeatLastCommandDecorator def testFunction(): print("test function")
- userShelfDir()¶
Path to shelf
- Returns:
- mayaAppDir()¶
The Maya preference folder
Windows Vista, Windows 7, and Windows 8
Users<username>DocumentsMaya Mac OS X
~<username>/Library/Preferences/Autodesk/Maya Linux (64-bit)
~<username>/Maya
- Returns:
Gui¶
- inViewMessage(header, message, type_=0, fadeStayTime=1000)¶
Smaller wrapper function for nicely formatting maya inview message, INFO,WARNING,ERROR message types supported. Each message type will have a set color.
- refreshContext()¶
- selectedChannelboxAttributes()¶
- swapOutgoingConnectionsOnSelectedAttrs()¶
Mayamath¶
- axisVectorByIdx(index)¶
Returns the axis vector by index
- Parameters:
index (int) – The index of the axis between 0-2
- Returns:
The Axis Vector eg. om2.MVector(1,0,0) for 0 index.
- Return type:
om2.MVector
- aimToNode(source, target, aimVector=None, upVector=None, worldUpVector=None, constrainAxis=MockExt.OpenMaya.MVector)¶
Function to aim one node at another using quaternions.
- Parameters:
source (om2.MObject) – node to aim towards the target node
target (om2.MObject) – the node which the source will aim at
aimVector (om2.MVector) – the om2.MVector for the aim axis defaults to om2.MVector(1.0,0.0,0.0)
upVector (om2.MVector) – the om2.MVector for the upVector axis defaults to om2.MVector(0.0,1.0,0.0)
worldUpVector (
om2.MVector
) – Alternative World Up Vector.constrainAxis (
om2.MVector
) – The axis vector to constrain the aim on. ie. om2.MVector(0,1,1) will set X rotation to 0.0. Same deal as mayas aim constraint.
- lookAt(sourcePosition, aimPosition, aimVector=None, upVector=None, worldUpVector=None, constrainAxis=MockExt.OpenMaya.MVector)¶
Function to aim one node at another using quaternions.
- Parameters:
sourcePosition (
om2.MVector
) – source position which acts as the eye.aimPosition (
om2.MVector
) – The target position to aim at.aimVector (
om2.MVector
) – the om2.MVector for the aim axis defaults to om2.MVector(1.0,0.0,0.0)upVector (
om2.MVector
) – the om2.MVector for the upVector axis defaults to om2.MVector(0.0,1.0,0.0)worldUpVector (
om2.MVector
) – Alternative World Up Vector.constrainAxis (
om2.MVector
) – The axis vector to constrain the aim on. ie. om2.MVector(0,1,1) will set X rotation to 0.0. Same deal as mayas aim constraint.
- Return type:
om2.MQuaternion
Scene Node Structure:
+ (upVector) / / (sourcePosition) o------ + (aimVector) (aimPosition) +
- quaterionDot(qa, qb)¶
Computes the dot product of two quaternions.
- Parameters:
qa (
om2.Quaternion
) – The first quaternion.qb (
om2.Quaternion
) – The second quaternion.
- Returns:
The dot product of the two quaternions.
- Return type:
- slerp(qa, qb, weight)¶
Interpolates between two quaternions using a spherical linear interpolation.
- Parameters:
qa (
om2.Quaternion
) – The starting quaternion.qb (
om2.Quaternion
) – The ending quaternion.weight (float) – the weight of the second quaternion in the interpolation
- Returns:
The interpolated quaternion.
- Return type:
om2.Quaternion
- toEulerXYZ(rotMatrix, degrees=False)¶
Convert rotation matrix to Euler XYZ angles.
- Parameters:
rotMatrix (
om2.MMatrix
) – The rotation matrix to convert.degrees (bool) – A flag to indicate if the output angles should be in degrees or radians
- Returns:
The converted Euler XYZ angles
- Return type:
om2.MEulerRotation
- toEulerXZY(rotMatrix, degrees=False)¶
Convert rotation matrix to Euler XZY angles.
- Parameters:
rotMatrix (
om2.MMatrix
) – The rotation matrix to convert.degrees (bool) – A flag to indicate if the output angles should be in degrees or radians
- Returns:
The converted Euler XZY angles
- Return type:
om2.MEulerRotation
- toEulerYXZ(rotMatrix, degrees=False)¶
Convert rotation matrix to Euler XZY angles.
- Parameters:
rotMatrix (
om2.MMatrix
) – The rotation matrix to convert.degrees (bool) – A flag to indicate if the output angles should be in degrees or radians
- Returns:
The converted Euler XZY angles
- Return type:
om2.MEulerRotation
- toEulerYZX(rotMatrix, degrees=False)¶
Convert rotation matrix to Euler YZX angles.
- Parameters:
rotMatrix (
om2.MMatrix
) – The rotation matrix to convert.degrees (bool) – A flag to indicate if the output angles should be in degrees or radians
- Returns:
The converted Euler YZX angles
- Return type:
om2.MEulerRotation
- toEulerZXY(rotMatrix, degrees=False)¶
Convert rotation matrix to Euler ZXY angles.
- Parameters:
rotMatrix (
om2.MMatrix
) – The rotation matrix to convert.degrees (bool) – A flag to indicate if the output angles should be in degrees or radians
- Returns:
The converted Euler ZXY angles
- Return type:
om2.MEulerRotation
- toEulerZYX(rotMatrix, degrees=False)¶
Convert rotation matrix to Euler ZYX angles.
- Parameters:
rotMatrix (
om2.MMatrix
) – The rotation matrix to convert.degrees (bool) – A flag to indicate if the output angles should be in degrees or radians
- Returns:
The converted Euler ZYX angles
- Return type:
om2.MEulerRotation
- toEulerFactory(rotMatrix, rotateOrder, degrees=False)¶
A factory function that returns the corresponding euler angles based on the provided rotate order.
- Parameters:
rotMatrix (
om2.MMatrix
) – The rotation matrix to convert.rotateOrder (om2.MTransformationMatrix.kXYZ) – The order of rotation for the euler angles. Can be one of (kXYZ, kXZY, kYXZ, kYZX, kZXY, kZYX)
degrees (bool) – A flag to indicate if the output angles should be in degrees or radians
- Returns:
The converted Euler angles
- Return type:
om2.MEulerRotation
- mirrorXY(rotationMatrix)¶
Mirror a rotation matrix on the XY plane.
- Parameters:
rotationMatrix (
om2.MMatrix
) – the rotation matrix to mirror- Returns:
the mirrored rotation matrix
- Return type:
om2.MMatrix
- mirrorYZ(rotationMatrix)¶
Mirror a rotation matrix on the YZ plane.
- Parameters:
rotationMatrix (
om2.MMatrix
) – the rotation matrix to mirror- Returns:
the mirrored rotation matrix
- Return type:
om2.MMatrix
- mirrorXZ(rotationMatrix)¶
Mirror a rotation matrix on the XZ plane.
- Parameters:
rotationMatrix (
om2.MMatrix
) – the rotation matrix to mirror- Returns:
the mirrored rotation matrix
- Return type:
om2.MMatrix
- angleBetween3Points(a, b, c)¶
Compute the angle between three points in degrees.
- Parameters:
a (
om2.Vector
) – The first pointb (
om2.Vector
) – The second pointc (
om2.Vector
) – The third point
- Returns:
The angle between the three points
- Return type:
- evenLinearPointDistribution(start, end, count)¶
Generator function which evenly distributes points along a straight line.
Each returned point is the vector.
- Parameters:
start (
zapi.Vector
) – The start vectorend (
zapi.Vector
) – The end vectorcount (int) – the number of points to distribute
- Returns:
The distributed vector
- Return type:
zapi.Vector
- firstLastOffsetLinearPointDistribution(start, end, count, offset)¶
Same behaviour as
evenLinearPointDistribution()
but offsets the first and last point by the ‘offset value’Each returned point is the vector.
- Parameters:
start (
zapi.Vector
) – The start vectorend (
zapi.Vector
) – The end vectorcount (int) – the number of points to distribute
offset – The value to offset the first and last points. The offset is calculated from the fraction(direction*(fraction*offset))
- Returns:
The distributed vector
- Return type:
tuple[
zapi.Vector
, float]
- averagePosition(nodes)¶
Returns the average position on all provided nodes in workspace.
- Parameters:
nodes (list[
zapi.DagNode
]) –- Returns:
- Return type:
om2.MVector
- averageNormalVector(nodes, axis)¶
Computes and returns the averaged normal based on the provided nodes rotations.
- Parameters:
nodes (list[
zoo.libs.maya.zapi.DagNode
]) – The nodes to averageaxis (
om2.MVector
) – The axis to rotate around ie. om2.MVector(1,0,0)
- Returns:
The normalized averaged rotations as a vector.
- Return type:
om2.MVector
- twoPointNormal(pointA, pointB, normal)¶
Based on two points and an additional normal vector return the plane normal.
- Parameters:
pointA (
om2.MVector
) – First VectorpointB (
om2.MVector
) – Second Vectornormal (
om2.MVector
) – Additional normal which will be crossed with the distance vector
- Returns:
Plane Normal
- Return type:
om2.MVector
- threePointNormal(pointA, pointB, pointC)¶
Same As
twoPointNormal()
but for three points.- Parameters:
pointA (
om2.MVector
) – First VectorpointB (
om2.MVector
) – Second VectorpointC (
om2.MVector
) – Third Vector
- Returns:
Normalized vector from three points
- Return type:
om2.MVector
- closestPointOnPlane(point, plane)¶
Returns the closet point on the given Plane(projecting the point on the plane).
- Parameters:
point (
om2.MVector
) – The point to project on to the plane.plane (
om2.MPlane
) – The plane instance to get the closest point.
- Returns:
The closest point.
- Return type:
om2.MVector
- indexOfLargest(iterable)¶
Returns the index of the largest absolute valued component in an iterable.
- Parameters:
iterable (iterable) – An iterable of floating point values to search.
- Return type:
- axisInDirection(matrix, compareVector, defaultAxis)¶
Returns the axis in integer form 0, 1, 2, 3, 4, 5
0-2 is positive x,y,z while 3,4,5 is negative x,y,z
The defaultAxis is returned if the compareVector is zero or too small to provide meaningful directionality.
- basisVectorsFromMatrix(matrix)¶
Returns 3 orthonormal basis vectors that represent the orientation of the given object.
- Parameters:
matrix (
om2.MMatrix
) – The matrix to return the orthonormal basis from- Rtype matrix:
tuple[
om2.MVector
,om2.MVector
,om2.MVector
]
- alignToWorldAxis(matrix, rotationAxis=1, forwardAxis=MockExt.OpenMaya.MVector, defaultAxisDirection=2)¶
Returns the minimal viable single axis rotation to align to the forward axis.
- Parameters:
matrix (
om2.MMatrix
) – The reference Matrix to pull the rotation from commonly this is the worldMatrixrotationAxis (int) – The axis to rotate on. Defaults to YAXIS
forwardAxis (
om2.MVector
) – The forward vector representing the axis, defaults to ZAXIS_VECTORdefaultAxisDirection (int) – The default forwardAxis to use when a ZeroDivisionError occurs.
- Return type:
:class:` om2.MEulerRotation`
- perpendicularAxisFromAlignVectors(aimVector, upVector)¶
Given an aim and up vector return which axis isn’t being used and determine whether to get positive values from an incoming attribute whether it needs to be negated.
result = driverAxisFromAimUpVectors(om2.MVector(1,0,0), om2.MVector(0,1,0)) # (2, True) # 2 is the axis number therefore Z
- isVectorNegative(vector)¶
Whether the sum of the vector(x+y+z) is less then 0.0 :param vector: :return:
- primaryAxisNameFromVector(vector)¶
Internal function which returns the string name of the vector ie. X,Y,Z
- Parameters:
vector (
zapi.Vector
or tuple) – The vector to check- Returns:
Vector Axis Name ie . X, Y or Z
- Return type:
- primaryAxisIndexFromVector(vector)¶
Internal function which returns the string name of the vector ie. X,Y,Z
- Parameters:
vector (
zapi.Vector
or tuple) – The vector to check- Returns:
Vector Axis index
- Return type:
- nonPrimaryAxisNamesFromVector(vector)¶
Given a vector, returns a list of the non-primary axes. The primary axis is the one with the largest absolute value.
- Parameters:
vector (
om2.MVector
) – The input vector.- Returns:
List of non-primary axis names
- Return type:
list
- convertToSceneUnits(value)¶
Converts the value to the current maya scene UI unit. ie. meters, inches.
Note
Only current supports meters, inches and feet
- Parameters:
value (float or int or
om2.MVector
) – value to convert to the scene units.- Returns:
The newly converted value.
- Return type:
float or int or
om2.MVector
- convertFromSceneUnits(value)¶
Converts the value from the current maya scene UI unit back to centimeters. ie. meters to cms, inches.
Note
Only current supports meters, inches and feet
- Parameters:
value (float or int or
om2.MVector
) – value to convert to the scene units.- Returns:
The newly converted value.
- Return type:
float or int or
om2.MVector
- bezierGroups(values)¶
Groups a list of values into bezier chunks where the first and last tangents are two points and the middles are three points.
- Parameters:
values (list[list[]]) –
my_list = [0, 1, 2, 3, 4, 5, 6] my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8] result = bezierChunks(my_list) print(result) #[[0, 1], [2, 3, 4], [5, 6, 7], [7, 8]]
- bezierSections(values)¶
Groups a list of values into bezier chunks where the first and last tangents are two points and the middles are three points.
- Parameters:
values (list[list[]]) –
my_list = [0, 1, 2, 3, 4, 5, 6] my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8] result = bezierChunks(my_list) print(result) #[[0, 1], [2, 3, 4], [5, 6, 7], [7, 8]]
- bezierSegments(points)¶
Splits the points into bezier segments of 4 points each.
- Parameters:
points (list[any]) – List of values which represent cv points, this function only operates on the length on the list provided and the values are returned.
- Returns:
List of curve segments formed by the Bezier curve. Each segment is represented as a list of control points.
- Return type:
list[list[any]]
Scene¶
- findAdditionalSceneDependencies(references=True, textures=True)¶
Find additional dependencies from the scene by looking at the file references and texture paths
- findSceneTextures()¶
- findTextureNodePairs()¶
- iterTextureNodePairs(includeReferences=False)¶
- findSceneReferences()¶
- isolatedNodes(nodes, panel)¶
Context manager for isolating nodes in maya model panel
Shelves¶
- class Shelf(name='Animation')¶
Bases:
object
A simple class to build shelves in maya. Since the build method is empty, it should be extended by the derived class to build the necessary shelf elements. By default, it creates an empty shelf called “customShelf”.
- Parameters:
name (str) – Name of the shelf
- setAsActive()¶
Set the shelf as active in maya
- createShelf()¶
Create the shelf in maya
- addButton(label, tooltip=None, icon='commandButton.png', command=None, doubleCommand=None, Type='python', style='iconOnly')¶
Adds a shelf button with the specified label, command, double click command and image.
- Parameters:
label (str) – label of the button
tooltip (str) – tooltip text to display when hovering over the button
icon (str) – file path to image file for button icon
command (str) – command to execute on button press
doubleCommand (str) – command to execute on button double-press
Type (str) – type of command (python or mel)
style (str) – the layout of the button (iconOnly, textOnly, or iconAndText)
- Returns:
The shelfButton UI path
- Return type:
- static addMenuItem(parent, label, command='', icon='')¶
Adds a menu item with the specified label, command, and image. :param parent: The parent menu where the item should be added. :type parent: str :param label: The label of the menu item. :type label: str :param command: The command that should be executed when the menu item is clicked. :type command: str :param icon: The path to the icon that should be used for the menu item. :type icon: str :return: The menu item that has been created. :rtype: str
- static addSubMenu(parent, label, icon=None)¶
Adds a sub menu item with the specified label and icon to the specified parent popup menu.
- static addMenuSeparator(parent, **kwargs)¶
Adds a separator(line) on the parent menu.
This uses the cmds.menuItem to create the separator
- Parameters:
parent (str) – The full UI path to the parent menu
- addSeparator()¶
Adds a maya shelf separator to the parent shelf
- Returns:
The full path to the separator
- Return type:
- clear(deleteShelf=True)¶
Checks if the shelf exists and empties it if it does or creates it if it does not.
- shelfExists(shelfName)¶
Checks if a shelf exists in maya
- cleanOldShelf(shelfName, deleteShelf=True)¶
Checks if the shelf exists and empties it if it does
- primaryShelfLayout()¶
Returns the main maya shelf layer path.
Have to mel globals here, the hell?
- Returns:
The shelf layout path
- Return type:
MayaColors¶
Functions and constants related directly to Maya’s color handling.
Example use:
from zoo.libs.maya.utils import mayacolors
mayacolors.setColorSpaceAces()
renderSpaceColor = mayacolors.displayColorToCurrentRenderingSpace(displaySpaceColor)
displaySpaceColor = mayacolors.renderingColorToDisplaySpace(renderingSpaceColor)
- setColorSpaceLinear(message=True)¶
Sets color space color management settings to be linear as per older versions of Maya in 2022 and above
- setColorSpaceAces(message=True)¶
Sets color space color management settings to be ACES as per the new defaults in Maya in 2022 and above
- setColorSpaceAcesNoTone(message=True)¶
Sets color space color management settings to be ACES (no tone map) in Maya in 2022 and above
- setRenderingSpace(renderSpace='linear', message=True)¶
Sets the renderspace for Maya, use only in 2022 and above.
- setViewTransform(view='noToneMap', message=True)¶
Sets the view transform (grade/tone-map) inside Maya.
- displayColorToCurrentRenderingSpace(displayColor, setCurrentViewSpace=False, viewSpace='Un-tone-mapped')¶
Converts display space color to the current rendering space using Maya’s API
The Maya commands function cmds.colorManagementConvert() is useless.
Only works in Maya 2023 and above. Issues in 2022 unfortunately.
If lower than 2023 will return the color linearized instead.
viewSpace should be “Un-tone-mapped” if importing in JSON data, also for conversions to figure render space color.
- Parameters:
displayColor (list(float)) – display color (usually srgb color) as a float [0.1, 0.4, 0.6]
setCurrentViewSpace (str) – Sets the viewspace as the current viewspace. If True kwarg viewSpace is ignored.
viewSpace (str) – What view to output? ‘ACES 1.0 SDR-video’, ‘Un-tone-mapped’, ‘Unity neutral tone-map’, ‘Raw’ etc
- Return color:
color in maya’s native rendering space as a float
- Rtype color:
list(float)
- renderingColorToDisplaySpace(renderColor, setCurrentViewSpace=False, viewSpace='Un-tone-mapped')¶
Converts rendering space color to the current display space using Maya’s API
The Maya commands function cmds.colorManagementConvert() is useless.
Only works in Maya 2023 and above. Display colors are Un-tone-mapped. Issues in 2022 unfortunately.
If lower than 2023 will return the color linear to srgb instead.
viewSpace should be “Un-tone-mapped” if importing in JSON data, also for conversions to figure render space color.
- Parameters:
- Return color:
color in maya’s native rendering space as a float
- Rtype color:
list(float)
- renderingColorToDisplaySpaceLegacy(renderingSpaceColor)¶
Converts rendering space color to the current display space color using cmds.colorManagementConvert (not great)
This is depreciated, use renderingColorToDisplaySpace() as it supports the viewspace.
- Parameters:
renderingSpaceColor (list(float)) – color in maya’s native rendering space as a float [0.1, 0.4, 0.6]
- Return displayColor:
display color (usually srgb color) as a float [0.1, 0.4, 0.6]
- Rtype displayColor:
list(float)
Maya Test Utils¶
- class BaseMayaTest(methodName='runTest')¶
Bases:
BaseUnitest
Base class for all maya based unitests, provides helper methods for loading and loading plugins
- keepPluginsLoaded = False¶
- loadedPlugins = {}¶
- application = 'maya'¶
- newSceneAfterTest = False¶
- classmethod loadPlugin(pluginName)¶
Loads a given plugin and stores it on the class :param pluginName: str, the plugin to load
- classmethod unloadPlugins()¶
Unload all the currently loaded plugins
- tearDown(**kw)¶
Hook method for deconstructing the test fixture after testing it.
- classmethod tearDownClass()¶
Calls on cls.unloadPlugins()
Tooltips¶
- setMayaTooltipState(state)¶
Set the maya state to show the tooltips or not.
- Parameters:
state – bool
- Returns: