def preprocessNode(nodeName):
'''
Preprocessing a node.
This is needed as some nodes (like ramp or bump) can be
replaced by several other nodes for Katana.
We return either one original node or several
nodes if something was replaced during preprocessing
'''
nodeType = cmds.nodeType(nodeName)
if nodeType not in premap:
return None
nodes = {}
attributes = getNodeAttributes(nodeName)
connections = {}
nodeConnections = cmds.listConnections(nodeName, source=True, destination=False, connections=True, plugs=True)
if nodeConnections:
for i in range(len(nodeConnections) / 2):
connTo = nodeConnections[i * 2]
connTo = connTo[connTo.find('.') + 1:]
connFrom = nodeConnections[i * 2 + 1]
connections[connTo] = {
'node': connFrom[:connFrom.find('.')],
'originalPort': connFrom[connFrom.find('.') + 1:]
}
node = {
'name': nodeName,
'type': nodeType,
'attributes': attributes,
'connections': connections,
'renamings': {}
}
premapSettings = premap[nodeType]
for attr in ['type', 'postprocess']:
if premapSettings.get(attr):
node[attr] = premapSettings.get(attr)
if premapSettings.get('preprocess'):
preprocessFunc = premapSettings.get('preprocess')
if preprocessFunc:
preprocessResult = preprocessFunc(node)
if preprocessResult:
nodes.update(preprocessResult)
else:
nodes[node['name']] = node
return nodes
评论列表
文章目录