使用一个键一次在两个命令之间切换

时间:2016-04-29 14:19:00

标签: python maya hotkeys mel

我想让maya在顶部和底部正交视图之间切换一个热键,正面和背面用另一个热键,左右三分之一,就像在MODO中一样。这是两个命令,一次只有一个键。 我想知道如何在运行时命令编辑器中使用Python或Mel,最好使用我将来选择的任何其他命令。 感谢。

1 个答案:

答案 0 :(得分:2)

实际上非常简单,我真的不喜欢使用默认的Maya相机,但我不认为这是一个问题。 您所要做的就是将-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')

您还可以为每个方向创建新的摄像机 - 如果它们不存在 - 并在默认和非默认之间来回切换。不要忘记复制他们的翻译/旋转属性,这是该解决方案中棘手且不太优雅的部分。