[PYTHON] Einführung in Befehle rund um die Maya-Referenz

Einführung

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! ~~

Rufen Sie den Namen des Referenzknotens ab

Versuchen Sie, den Referenzknoten aus dem referenzierten Objekt abzurufen. image.png

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.

Informationen vom Referenzknoten abrufen

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'
 ]
"""

Funktionalisierung

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.

Operationen rund um die Referenz

#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!

Recommended Posts

Einführung in Befehle rund um die Maya-Referenz
Untersuchen Sie die (versteckte?) Option des Maya | -Befehls
Machen Sie den Mangel an Maya Node-Referenz wieder wett
Maya | Ruft den Arbeitsbereichspfad ab