本文整理汇总了Python中marigold.utility.NodeUtility类的典型用法代码示例。如果您正苦于以下问题:Python NodeUtility类的具体用法?Python NodeUtility怎么用?Python NodeUtility使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了NodeUtility类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: createCompoundCurve
def createCompoundCurve(inCurves):
"""
Merges all the controls into one transform node.
@param inCurves: List of Strings. Names of curves to combine under one transform node.
The first curve in the list is considered the parent of all the others.
@return: MObject. Compound curve transform node.
"""
# List for creating the compound.
compoundList = []
# Get the nurbs curves of all curves in the list.
for index in range(1, len(inCurves)):
curve = NodeUtility.getDagPath(inCurves[index])
for child in xrange(curve.childCount()):
nurb = curve.child(child)
nurbDagPath = OpenMaya.MDagPath.getAPathTo(nurb)
if nurb.apiType() == OpenMaya.MFn.kNurbsCurve:
compoundList.append(nurbDagPath.fullPathName())
# Add the transform of the parent curve. This is the first curve passed into
# the function.
parent = NodeUtility.getDagPath(inCurves[0])
compoundList.append(parent.fullPathName())
# Now parent the shapes to the first curve's transform node.
cmds.parent(compoundList, shape=True, relative=True)
# Delete the remaining transform nodes of the other curves.
for index in range(1, len(inCurves)):
cmds.delete(inCurves[index])
# Returns a MObject.
return NodeUtility.getDependNode(parent.fullPathName())
示例2: getComponents
def getComponents( inObj ):
'''
Creates the components GUI.
'''
if inObj is not None:
components_list = NodeUtility.getFrameBitSettings( inObj )
else:
components_list = None
# If the newly selected bit has components then update the UI to show them.
# Check to see if any of the components are connected to a meta node.
# We do this check so that we don't create a bunch of UI elements
# unnecessarily.
if components_list is not None and metaNodeCheck( inObj, components_list ):
# Loop through each component on the bit.
components_class_list = {}
for node_name in components_list:
# Check to see if the component is connected to a meta node.
metaNode = NodeUtility.getNodeAttrDestination( inObj, node_name )
if metaNode:
# It has a meta node.
# Get the meta node properties. This returns a dict.
meta_properties = NodeUtility.getFrameBitSettings( metaNode[0] )
component_class = meta_properties[ 'classType' ]
# test hack!!!
components_class_list[ node_name ] = component_class
return components_class_list
else:
return None
示例3: addComponentToObject
def addComponentToObject( inClassType, **kwargs ):
if kwargs.has_key('inObject'):
targetObj = kwargs['inObject']
print 'targetObj: {0}'.format( targetObj )
del kwargs['inObject']
prevSel = None
else:
selList = cmds.ls( selection=True, long=True )
if len( selList ) is 1:
targetObj = selList[0]
prevSel = selList[0]
if targetObj is not None:
component_class = str_to_class( inClassType )
newNode = component_class.createCompNode( inClassType, **kwargs )
# Add the component attribute to the object.
NodeUtility.addPlug( targetObj, newNode.name(), 'attributeType', 'message' )
nodePlug = '{0}.parentName'.format( newNode.name() )
objectPlug = '{0}.{1}'.format( targetObj, newNode.name() )
NodeUtility.connectPlugs( objectPlug, nodePlug )
if prevSel is not None:
cmds.select( prevSel )
return newNode
示例4: requiredAttributes
def requiredAttributes( self, *args, **kwargs ):
NodeUtility.addPlug( self.newNode, 'parentName', 'attributeType', 'message' )
#cmds.addAttr( newNode, longName='parentName', attributeType='message', storable=True )
#self.setAttribute( cls(), 'parentName', self.newNode, inNodeName=self.newNode )
self.setAttribute( 'parentName', self.newNode, self.newNode )
NodeUtility.addPlug( self.newNode, 'classType', 'dataType', 'string' )
#cls( self.newNode ).classType = [ self.newNode, self.nodeType, True ]
self.classType = [ self.newNode, self.nodeType, True ]
示例5: storeControlTransforms
def storeControlTransforms( sourceObj, targetObj ):
'''
Store control transform data.
@param sourceObj: String. Name of object to pull data from.
@param targetObj: String. Name of object to store data on.
'''
sourceMatrix = TransformUtility.getMatrix( sourceObj, 'matrix' )
# Store the position
targetPosPlug = NodeUtility.getPlug( targetObj, 'controlPosition' )
sourceTranslation = TransformUtility.getMatrixTranslation( sourceMatrix, OpenMaya.MSpace.kTransform )
pos = [ sourceTranslation.x, sourceTranslation.y, sourceTranslation.z ]
NodeUtility.setPlugValue( targetPosPlug, pos )
# Store the rotation
targetRotPlug = NodeUtility.getPlug( targetObj, 'controlRotation' )
sourceRotation = TransformUtility.getMatrixRotation( sourceMatrix, 'euler' )
#rot = [ degrees(angle) for angle in (sourceRotation.x, sourceRotation.y, sourceRotation.z) ]
rot = [ sourceRotation.x, sourceRotation.y, sourceRotation.z ]
NodeUtility.setPlugValue( targetRotPlug, rot )
# Store the scale.
targetSclPlug = NodeUtility.getPlug( targetObj, 'controlScale' )
sourceScale = TransformUtility.getMatrixScale( sourceMatrix, OpenMaya.MSpace.kTransform )
scl = [ sourceScale.x, sourceScale.y, sourceScale.z ]
NodeUtility.setPlugValue( targetSclPlug, scl )
示例6: connectModules
def connectModules(self):
'''
Connects a module to the character component.
'''
# Get modules selected from disList
selList = self.disList.selectedItems()
for module in selList:
NodeUtility.connectNodes( self.charNode, 'modules', self.disMods[module.text()], 'characterRoot' )
# Refresh the lists.
self.updateLists()
示例7: setPriorities
def setPriorities( self ):
'''
Applies the user adjusted priorities to all the modules of a character.
'''
for index in xrange( self.dropList.count() ):
moduleName = self.dropList.item( index ).text()
moduleComponent = self.modDict[moduleName][0]
priorityPlug = NodeUtility.getPlug( moduleComponent, 'buildPriority' )
NodeUtility.setPlugValue( priorityPlug, index )
self.close()
示例8: __init__
def __init__( self, nodeName, parent=None ):
super( componentWidget, self ).__init__( parent )
self.parent = parent
def on_context_menu( point, inNodeName ):
popMenu = QtGui.QMenu()
deleteAction = QtGui.QAction( 'Delete Component', popMenu, triggered=lambda a=inNodeName:self.deleteComponentFromObject( a ) )
popMenu.addAction( deleteAction )
popMenu.exec_( self.componentLabel.mapToGlobal( point ) )
# Setup layout.
verticalLayout = QtGui.QVBoxLayout()
verticalLayout.setContentsMargins( 0,0,0,0 )
verticalLayout.setSpacing( 0 )
verticalLayout.setAlignment( QtCore.Qt.AlignTop )
# Label for component
componentLabel = QTWidgets.basicLabel( nodeName, 'bold', 10, 'black', '6E9094', inIndent=20 )
componentLabel.setMinimumHeight( 18 )
componentLabel.setContextMenuPolicy( QtCore.Qt.CustomContextMenu )
componentLabel.customContextMenuRequested.connect( lambda point, nodeName=nodeName:on_context_menu( point, nodeName ) )
# Properties
propertyStack = QtGui.QVBoxLayout()
propertyFrame = QTWidgets.basicFrame()
propertyFrame.setMinimumHeight( 40 )
propertyFrame.setMaximumHeight( 40 )
# Add string edit property
modulePlug = NodeUtility.getPlug( nodeName, 'moduleName' )
moduleValue = NodeUtility.getPlugValue( modulePlug )
moduleTextLayout = QTWidgets.stringProperty( 'Module Name', moduleValue )
'''
ADD EDIT FIELDS FOR PRIORITY AND CHARACTER ROOT!!!!!!!!!
'''
# Add everything to the vertical layout.
propertyStack.addLayout( moduleTextLayout )
propertyFrame.setLayout( propertyStack )
verticalLayout.addWidget( componentLabel )
verticalLayout.addWidget( propertyFrame )
# Connections
moduleTextBox = propertyFrame.findChild( QtGui.QLineEdit, 'Module Name' )
moduleTextBox.editingFinished.connect( lambda inPlugName='moduleName', inQTType='QLineEdit', inPlugValue=moduleTextBox, inNodeName=nodeName
:ModuleRootComponent( inNodeName ).setComponentAttributeFromQT( inPlugName, inQTType, inPlugValue, inNodeName ) )
#return mainWidget
self.setLayout( verticalLayout )
示例9: addComponentToObject
def addComponentToObject( self, inClassType ):
selList = cmds.ls( selection=True, long=True )
if len( selList ) is 1:
prevSel = selList[0]
component_class = Components.str_to_class( inClassType )
newNode = component_class.createCompNode( inClassType )
# Add the component attribute to the object.
FrameUtility.addPlug( selList[0], newNode.name(), 'attributeType', 'message' )
nodePlug = '{0}.parentName'.format( newNode.name() )
objectPlug = '{0}.{1}'.format( selList[0], newNode.name() )
NodeUtility.connectPlugs( objectPlug, nodePlug )
cmds.select( prevSel )
示例10: __init__
def __init__( self, nodeName, parent=None ):
super( componentWidget, self ).__init__( parent )
self.parent = parent
def on_context_menu( point, inNodeName ):
popMenu = QtGui.QMenu()
buildAction = QtGui.QAction( 'Build Joint', popMenu, triggered=lambda a=inNodeName:self.buildNode( a ) )
popMenu.addAction( buildAction )
deleteAction = QtGui.QAction( 'Delete Component', popMenu, triggered=lambda a=inNodeName:self.deleteComponentFromObject( a ) )
popMenu.addAction( deleteAction )
popMenu.exec_( componentLabel.mapToGlobal( point ) )
# Setup layout.
verticalLayout = QtGui.QVBoxLayout()
verticalLayout.setContentsMargins( 0,0,0,0 )
verticalLayout.setSpacing( 0 )
verticalLayout.setAlignment( QtCore.Qt.AlignTop )
# Label for component
componentLabel = QTWidgets.basicLabel( nodeName, 'bold', 10, 'black', '6E9094', inIndent=20 )
componentLabel.setMinimumHeight( 18 )
componentLabel.setContextMenuPolicy( QtCore.Qt.CustomContextMenu )
componentLabel.customContextMenuRequested.connect( lambda point, node=nodeName:on_context_menu( point, node ) )
# Properties
propertyStack = QtGui.QVBoxLayout()
propertyFrame = QTWidgets.basicFrame()
propertyFrame.setMinimumHeight( 40 )
propertyFrame.setMaximumHeight( 40 )
# Add string edit property
propertyPlug = NodeUtility.getPlug( nodeName, 'jointName' )
propertyValue = NodeUtility.getPlugValue( propertyPlug )
jointTextLayout = QTWidgets.stringProperty( 'Joint Name', propertyValue )
propertyStack.addLayout( jointTextLayout )
propertyFrame.setLayout( propertyStack )
verticalLayout.addWidget( componentLabel )
verticalLayout.addWidget( propertyFrame )
# Connections
textBox = propertyFrame.findChild( QtGui.QLineEdit )
textBox.editingFinished.connect( lambda inPlugName='jointName', inQTType='QLineEdit', inPlugValue=textBox, inNodeName=nodeName
:BasicJointComponent( inNodeName ).setComponentAttributeFromQT( inPlugName, inQTType, inPlugValue, inNodeName ) )
self.setLayout( verticalLayout )
示例11: addComponentToObject
def addComponentToObject( self, inClassType ):
'''
'''
selList = cmds.ls( selection=True, long=True )
if len( selList ) is 1:
prevSel = selList[0]
newNode = componentNodes.jointComponentNode().createCompNode( inClassType )
# Add the component attribute to the object.
FrameUtility.addPlug( selList[0], newNode.name(), 'attributeType', 'message' )
#cmds.addAttr( inObject, longName='jointComponent', attributeType='message', storable=False )
nodePlug = '{0}.parentName'.format( newNode.name() )
objectPlug = '{0}.{1}'.format( selList[0], newNode.name() )
NodeUtility.connectPlugs( objectPlug, nodePlug )
cmds.select( prevSel )
示例12: getFramesInSceneWIP
def getFramesInSceneWIP():
# Get all the meta nodes in the scene.
metaNodes = NodeUtility.getMetaNodesInScene()
print metaNodes
if not metaNodes:
return None
else:
for node in metaNodes:
# Get the root bit of the frame module.
rootBit = NodeUtility.getNodeAttrSource( node, 'rootBit' )
# Get the parent's full path. We need to remove the group name from the beginning as well.
parent = cleanParentFullName( rootBit[0] )
print parent
示例13: mirrorModule
def mirrorModule():
# Mirrors a module.
selList = cmds.ls( selection=True, long=True )
if len( selList ) == 1:
# Prompt for axis.
mirrorAxis = int( cmds.layoutDialog( ui=mirrorObjectPrompt ) )
inBitObj = selList[0]
# Check if selected bit is the root.
if NodeUtility.attributeCheck( inBitObj, 'frameRoot' ):
# This is the root bit of the module. From here we know we can get the
# meta node by accessing the frameRoot attribute.
metaNode = NodeUtility.getNodeAttrDestination( inBitObj, 'frameRoot' )[0]
else:
# The selected bit is not the root. Run through each custom attribute
# to find one connected to the meta node.
attrList = cmds.listAttr( inBitObj, userDefined=True )
for attr in attrList:
connection = NodeUtility.getNodeAttrDestination( inBitObj, attr )
if NodeUtility.attributeCheck( connection[0], 'metaType' ):
metaNode = connection[0]
break
# Now that we have the meta node, we need the XML file name and it's location.
metaClassPlug = NodeUtility.getPlug( metaNode, 'metaClass' )
metaClassValue = NodeUtility.getPlugValue( metaClassPlug )
metaBuildFolderPlug = NodeUtility.getPlug( metaNode, 'buildFolder' )
metaBuildFolderValue = NodeUtility.getPlugValue( metaBuildFolderPlug )
# Create the target module.
targetRootBit = buildFrameModule( metaBuildFolderValue, metaClassValue )
# Loop through each object in the source module.
metaRootBit = NodeUtility.getNodeAttrSource( metaNode, 'rootBit' )[0]
sourceChildBits = getFrameRootAllChildren( metaRootBit )
targetChildBits = getFrameRootAllChildren( targetRootBit )
sourceBits = []
targetBits = []
for i,bit in enumerate( sourceChildBits ):
sourceBits.append( bit )
sourceBits.insert( 0, metaRootBit )
for i, bit in enumerate( targetChildBits ):
targetBits.append( bit )
targetBits.insert( 0, targetRootBit )
for bit in xrange( len(sourceBits) ):
# Mirror the source onto the target.
mirrorObject( inSourceObj=sourceBits[bit], inTargetObj=targetBits[bit], inMirrorAxis=mirrorAxis )
示例14: nodeRotation
def nodeRotation( self ):
'''
dagFn= OpenMaya.MFnDagNode( self.fNodePath )
path = OpenMaya.MDagPath()
dagFn.getPath( path )
path.pop()
transformFn = OpenMaya.MFnTransform( path )
q = OpenMaya.MQuaternion()
transformFn.getRotation( q, OpenMaya.MSpace.kWorld )
return q
'''
plug = NodeUtility.getPlug( 'ControlBox1', 'rotate' )
rot = NodeUtility.getPlugValue( plug )
e = OpenMaya.MEulerRotation( rot[0], rot[1], rot[2] )
return e
示例15: matchTransforms
def matchTransforms( inType ):
'''
@param inType: String. Type of matching to perform. 'tran', 'rot', or 'all'
'''
selObjs = cmds.ls( selection=True, dag=False, ap=True )
if len( selObjs ) == 0:
cmds.warning( 'No objects are selected. Select two objects and try again' )
elif len( selObjs ) > 2:
cmds.warning( 'To many objects are selected. Select only two objects and try again' )
else:
# first object is child, second object is target
cObj = selObjs[0]
tObj = selObjs[1]
# do the matching of child to target
MFnTrans = OpenMaya.MFnTransform()
childDagPath = NodeUtility.getDagPath( cObj )
MFnTrans.setObject( childDagPath )
targetMatrix = getMatrix( tObj, 'worldMatrix' )
if inType == 'tran' or inType == 'all':
childTranslation = getMatrixTranslation( targetMatrix, OpenMaya.MSpace.kWorld )
MFnTrans.setTranslation( childTranslation, OpenMaya.MSpace.kWorld )
if inType == 'rot' or inType == 'all':
childRotation = getMatrixRotation( targetMatrix, 'quat' )
MFnTrans.setRotation( childRotation, OpenMaya.MSpace.kWorld )