Einführung in die Befehle rund um die Referenz. Es ist eine Zusammenstellung nur derjenigen, die häufiger verwendet werden als die Erklärungen.
~~ Bereits im Adventskalender mit ähnlichen Inhalten gepostet, aber keine Sorge! ~~
Versuchen Sie, den Referenzknoten aus dem referenzierten Objekt abzurufen.
Zuerst werde ich den falschen Weg einführen.
node = "ref:pSphere1"
namespace = node.split(":")[0]
RNnode = namespace + 'RN'
# Result: u'refRN' #
Es sieht gut aus, funktioniert aber nicht, wenn sich der Namespace des Objekts ändert.
Hier ist der richtige Weg
node = "ref:pSphere1"
RNnode = cmds.referenceQuery(node, referenceNode=True)
# Result: u'refRN' #
Sie können den Namen des RN-Knotens problemlos abrufen, auch wenn sich der Namespace des ursprünglichen Objekts ändert.
Häufig verwendete Gegenstände
Wenn Sie ohne CopyNumber nichts wissen, werden Sie süchtig danach sein, seien Sie also vorsichtig.
https://help.autodesk.com/cloudhelp/2019/JPN/Maya-Tech-Docs/CommandsPython/referenceEdit.html
node = "ref:pSphere1"
RNnode = cmds.referenceQuery(node, referenceNode=True)
#Referenz-Namespace abrufen
cmds.referenceQuery(RNnode, namespace=True)
# Result: u':ref' #
#Rufen Sie den Pfad der Referenzdatei ab
cmds.referenceQuery(RNnode, filename=True)
# Result: u'C:/Users/ponty/Desktop/ref.ma' #
#Ergebnis des Dateinamens ist'C:/Users/ponty/Desktop/ref.ma(1)'Wenn ja, verwenden Sie dies.
#Rufen Sie den Pfad der Referenzdatei ab
cmds.referenceQuery(RNnode, filename=True, withoutCopyNumber=True)
# Result: u'C:/Users/ponty/Desktop/ref.ma' #
#Referenzladestatus abrufen
cmds.referenceQuery(RNnode, isLoaded=True)
# Result: True #
#Holen Sie sich eine Liste der referenzierten Objekte
cmds.referenceQuery(RNnode, nodes=True)
"""
Result: [
u'ref:pSphere1',
u'ref:pSphereShape1',
u'ref:shapeEditorManager',
u'ref:poseInterpolatorManager',
u'ref:layerManager',
u'ref:defaultLayer',
u'ref:renderLayerManager',
u'ref:defaultRenderLayer',
u'ref:polySphere1',
u'ref:uiConfigurationScriptNode',
u'ref:sceneConfigurationScriptNode'
]
"""
Lassen Sie uns eine Liste der Asset-Informationen in der Szene in einem Wörterbuch zusammenstellen.
def getRefarenceInfo():
ret = []
refNodes = cmds.ls(references=True)
for RNnode in refNodes:
ref = {}
ref.update({
'namespace' : cmds.referenceQuery(RNnode, namespace=True),
'filenam' : cmds.referenceQuery(RNnode, filename=True),
'w_filenam' : cmds.referenceQuery(RNnode, filename=True, withoutCopyNumber=True),
'isLoaded' : cmds.referenceQuery(RNnode, isLoaded=True),
'nodes' : cmds.referenceQuery(RNnode, nodes=True),
'node' : cmds.referenceQuery(RNnode, nodes=True)[0],
})
ret.append(ref)
return ret
"""
# Result: [{'filenam': u'C:/Users/ponty/Desktop/cube.ma{1}',
'isLoaded': True,
'namespace': u':ref',
'node': u'ref:pCube1',
'nodes': [u'ref:pCube1',
u'ref:pCubeShape1',
u'ref:shapeEditorManager',
u'ref:poseInterpolatorManager',
u'ref:layerManager',
u'ref:defaultLayer',
u'ref:renderLayerManager',
u'ref:defaultRenderLayer',
u'ref:polyCube1',
u'ref:uiConfigurationScriptNode',
u'ref:sceneConfigurationScriptNode'],
'w_filenam': u'C:/Users/ponty/Desktop/cube.ma'},
{'filenam': u'C:/Users/ponty/Desktop/ref.ma{2}',
'isLoaded': True,
'namespace': u':ref1',
'node': u'ref1:pSphere1',
'nodes': [u'ref1:pSphere1',
u'ref1:pSphereShape1',
u'ref1:shapeEditorManager',
u'ref1:poseInterpolatorManager',
u'ref1:layerManager',
u'ref1:defaultLayer',
u'ref1:renderLayerManager',
u'ref1:defaultRenderLayer',
u'ref1:polySphere1',
u'ref1:uiConfigurationScriptNode',
u'ref1:sceneConfigurationScriptNode'],
'w_filenam': u'C:/Users/ponty/Desktop/ref.ma'}] #
"""
Ich benutze es oft in meiner eigentlichen Arbeit.
#Referenz erstellen
cmds.file('C:/Users/ponty/Desktop/ref.ma', reference=True, ns='ref')
# Result: u'C:/Users/ponty/Desktop/ref.ma' #
#Referenz entfernen
node = "ref:pSphere1"
RNnode = cmds.referenceQuery(node, referenceNode=True)
RNpath = cmds.referenceQuery(RNnode, filename=True)
cmds.file(RNpath, removeReference=True)
#Referenzersatz
node = "ref:pSphere1"
RNnode = cmds.referenceQuery(node, referenceNode=True)
cmds.file('C:/Users/ponty/Desktop/cube.ma', lr=RNnode)
Wenn Sie viele der gleichen Zeichen in der Referenz lesen müssen, ist es einfacher, sie über den Befehl zu lesen.
cmds.file('C:/Users/ponty/Desktop/characterA.ma', reference=True, ns='CH_A_1')
cmds.file('C:/Users/ponty/Desktop/characterA.ma', reference=True, ns='CH_A_2')
cmds.file('C:/Users/ponty/Desktop/characterA.ma', reference=True, ns='CH_A_3')
cmds.file('C:/Users/ponty/Desktop/characterB.ma', reference=True, ns='CH_B_1')
cmds.file('C:/Users/ponty/Desktop/characterB.ma', reference=True, ns='CH_B_2')
cmds.file('C:/Users/ponty/Desktop/characterB.ma', reference=True, ns='CH_B_3')
Wenn Sie die Datei manuell bedienen, werden Sie später darunter leiden. Lassen Sie uns sie also so weit wie möglich automatisieren!
das ist alles!