【问题标题】:Toggle between two commands with one key at a time一次用一个键在两个命令之间切换
【发布时间】:2016-08-24 18:08:30
【问题描述】:

我想使用一个热键在顶部和底部正交视图之间切换 Maya,使用另一个热键切换前后视图,使用第三个热键切换左右,就像在 MODO 中一样。那是一次用一个键的两个命令。 我想知道如何在运行时命令编辑器中使用 Python 或 Mel 执行此操作,并且最好使用我将来选择的任何其他命令。 谢谢。

【问题讨论】:

  • 这比你想象的要难一些,因为你可以很容易地获得 Maya 相机的 name,但这是确保它实际上处于默认方向的唯一方法是检查相机的实际方向:你可以有一个相机,它最初是一个front cam,但用户已经把它翻转过来,所以它朝左——但据 Maya 所知,它仍然是前置摄像头。您是否关心拥有比默认的正面/侧面/顶部/透视更多的摄像头?
  • @theodox 是对的,因为玛雅相机不像人们期望的那样工作。最好不要试图强迫maya 成为别的东西,而是利用maya 擅长的东西,例如在maya 中,您可以通过敲击空间和敲击空间来做到这一点。但是可以这样做,但我不建议这样做,因为它有几个严重的警告,因为在这方面 Maya 不像 max 或 modo 那样工作。

标签: python maya hotkeys mel


【解决方案1】:

这实际上很简单,我不太喜欢使用默认的 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')

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

【讨论】:

  • 你这是什么意思?您可以将其复制到控制台并执行它以检查它是否有效。如果您的意思是“如何将该功能分配给某个热键/架子?”这是一个完全不同的问题。您可以为每个摄像机复制所有脚本 + 调用所需的摄像机,然后复制代码。或者将代码放在 Maya“脚本”文件夹中的 switchcamera.py 文件(或任何你想调用的文件)中,并将其放在你想要的快捷方式中:import switchcameras;switchcameras.switchcamera('top')
猜你喜欢
  • 1970-01-01
  • 2011-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多