Я хочу сделать переключатель майа между верхним и нижним орфографическими видами с одной горячей клавишей, спереди и сзади с помощью одной горячей клавиши, а влево и вправо - третьей, как в MODO. Это две команды с одним ключом за раз. Я хотел бы знать, как это сделать, в Python или Mel в редакторе команд runtime, и желательно с любыми другими командами, которые я выбираю в будущем. Спасибо.Переключить между двумя командами с одной клавишей за один раз
ответ
На самом деле это довольно просто, мне не очень нравится играть с камерами майя по умолчанию, но я не думаю, что здесь проблема. Все, что вам нужно сделать, это умножить на -1 координаты перевода. и добавьте 180 градусов к соответствующей оси для каждой камеры, которую вы хотите.
def getActiveViewport():
"""Return the active 3D viewport if any"""
panel = cmds.getPanel(withFocus=True)
if cmds.getPanel(typeOf=panel) == 'modelPanel':
return panel
return ''
def switchcamera(cam):
viewport = getActiveViewport()
if viewport:
orient = {'top': 'X', 'front': 'Y', 'side': 'Y'}
translate = cmds.getAttr(cam + '.translate')[0]
translate = [i*-1 for i in translate]
rotate = cmds.getAttr(cam + '.rotate' + orient[cam])
rotate = (rotate + 180) % 360
if rotate < 0:
rotate = rotate + 360
cmds.setAttr(cam + '.translate', *translate, type='double3')
cmds.setAttr(cam + '.rotate' + orient[cam], rotate)
cmds.modelPanel(viewport, edit=True, camera=cam) # Set the camera to the active viewport
Вы можете затем вызвать эти команды с фокусным окном просмотра и автоматически переключиться на указанную камеру.
switchcamera('top')
switchcamera('front')
switchcamera('side')
Вы также можете создавать новые камеры для каждой ориентации -если они не существует уже- и переключаться между умолчанию и те, не по умолчанию. Не забывая копировать атрибут translate/rotate, это сложная и менее элегантная часть этого решения.
спасибо, но как я могу использовать этот скрипт python? –
Что вы подразумеваете под этим? Вы можете скопировать его на консоль и выполнить ее, чтобы проверить, работает ли она. Если вы имеете в виду под этим «Как назначить эту функцию какой-либо горячей клавише/полке?» это совершенно другой вопрос. Вы можете либо скопировать весь сценарий + звонок с помощью камеры, которую вы хотите для каждой камеры, а затем дублировать код. Или поместите код в файл switchcamera.py (или все, что вы хотите называть) в своей папке «скрипты» Maya, и поместите его в ярлык, который вы хотите: 'import switchcameras; switchcameras.switchcamera ('top')' – Regnareb
Это немного сложнее, чем вы могли бы подумать, потому что вы можете легко получить _name_ камеры майя, но единственный способ убедиться, что на самом деле это ориентация по умолчанию - проверить фактическую ориентацию камеры: вы можете есть камера, которая начала жизнь как «передняя» камера, но пользователь перевернул ее так, что она обращена влево - но, поскольку майя знает, что это все еще передняя камера. Вас интересует наличие большего количества камер, чем по умолчанию front/side/top/persp? – theodox
@ theodox - это камеры правого майаса, которые не работают, как ожидают люди. Его также лучше не пытаться заставить майю быть чем-то другим, кроме как использовать то, что майя хорошо, например, в майе, вы делаете это, используя космос и коснувшись пространства. Однако это можно сделать, но я не рекомендую это делать, поскольку у него есть несколько серьезных предостережений, потому что майя не работает, как макс или modo в этом отношении. – joojaa