Многое зависит от того, что вам нужно сделать.
Если вы хотите запустить скрипт, который имеет доступ к функциям Maya, вы можете запустить автономный экземпляр Maya, как в ответе Картика. Двоичный файл mayapy
, установленный в той же папке, что и ваш Maya, является интерпретатором Maya python, вы можете запустить его напрямую так же, как запускаете python.exe
Mayapy имеет те же командные флаги, что и обычный интерпретатор Python.
Внутри сеанса Mayapy, как только вы вызовете standalone.initialize()
, у вас будет работающий сеанс Maya - за некоторыми исключениями, это как если бы вы работали внутри вкладки скрипта в обычном сеансе Maya.
Чтобы заставить Maya запускать определенный скрипт при запуске, вы можете вызвать флаг -c
точно так же, как в python. Например, вы можете запустить Maya и распечатать содержимое пустой сцены, как это (примечание: я предполагаю, что mayapy.exe
находится на вашем пути. Вы также можете просто перейти в каталог Maya bin).
mayapy -c 'import maya.standalone; maya.standalone.initialize(); import maya.cmds as cmds; print cmds.ls()'
>>> [u'time1', u'sequenceManager1', u'renderPartition', u'renderGlobalsList1', u'defaultLightList1', u'defaultShaderList1', u'postProcessList1', u'defaultRenderUtilityList1', u'defaultRenderingList1', u'lightList1', u'defaultTextureList1', u'lambert1', u'particleCloud1', u'initialShadingGroup', u'initialParticleSE', u'initialMaterialInfo', u'shaderGlow1', u'dof1', u'defaultRenderGlobals', u'defaultRenderQuality', u'defaultResolution', u'defaultLightSet', u'defaultObjectSet', u'defaultViewColorManager', u'hardwareRenderGlobals', u'hardwareRenderingGlobals', u'characterPartition', u'defaultHardwareRenderGlobals', u'lightLinker1', u'persp', u'perspShape', u'top', u'topShape', u'front', u'frontShape', u'side', u'sideShape', u'hyperGraphInfo', u'hyperGraphLayout', u'globalCacheControl', u'brush1', u'strokeGlobals', u'ikSystem', u'layerManager', u'defaultLayer', u'renderLayerManager', u'defaultRenderLayer']
Вы можете запустить mayapy в интерактивном режиме — по сути, версию Maya для командной строки — используя флаг -i: Это запустит mayapy и выдаст вам командную строку:
mayapy -i -c \"import maya.standalone; maya.standalone.initialize()\""
который снова запускает автономный режим для вас, но сохраняет сеанс вместо запуска команды и выхода.
Чтобы запустить файл сценария, просто передайте файл в качестве аргумента. В этом случае вы захотите сделать, как предлагает Картик, и включить standalone.initalize()
в сценарий. Затем вызовите его с помощью
mayapy path/to/script.py
Чтобы подавить userSetup, вы можете создать переменную environmnet с именем MAYA_SKIP_USERSETUP_PY
и установить для нее ненулевое значение, которое загрузит Maya без запуска usersetup. Вы также можете изменить переменные среды или переменные пути перед запуском Mayap; например, я могу запустить mayapys из двух разных сред с этими двумя псевдонимами bash (в Windows вы должны использовать SET вместо EXPORT для изменения env vars):
alias mp_zip="export MAYA_DEV=;mayapy -i -c \"import maya.standalone; maya.standalone.initialize()\""
alias mp_std="export MAYA_DEV=C:/UL/tools/python/ulmaya;export ZOMBUILD='C:/ul/tools/python/dist/ulmaya.zip';mayapy -i -c \"import maya.standalone; maya.standalone.initialize()\""
Это сообщение в блоге содержит модуль Python для запуска Mayapy. экземпляры с различными средами по мере необходимости.
Если вы хотите взаимодействовать с работающим Maya из другой среды — скажем, если вы пытаетесь дистанционно управлять им с портативного устройства или программы C — вы можете использовать Maya commandPort для обработки простых запросов через TCP. Для более сложных ситуаций вы можете настроить базовую службу удаленного взаимодействия, подобную этой самостоятельно или используйте предварительный RPC-модуль Python, например RPyC или ZeroMQ
person
theodox
schedule
12.12.2014