2015-07-27 4 views
0

Я хотел знать, есть ли опция в Maya 2016, скрипт python, чтобы получить данные с клавиатуры, но не с открытием окон пользовательского интерфейса или такими вещами, как 'raw_input' в python, но жить, как если бы вы играли в игру, и вы нажимаете кнопку, происходит действие. Есть ли способ сделать это в скриптах Maya python?Как получить вход от keyboad в Maya 2016 python

+0

Включает код того, что вы пробовали до сих пор – depperm

+0

Я ничего не пробовал, потому что не знаю, есть ли .. Я посмотрел в интернете, но нашел только такие вещи, как функции raw_input, что не помогает. Если вы знаете технику, я был бы благодарен, если вы поделитесь ею здесь! – ErezProductions

+1

Вы не получаете непрерывный ключевой опрос с майотой по умолчанию. Возможно, вы сможете захватить сигналы из главного окна Maya с помощью PySide, но это может быть проблематично, потому что вы будете конкурировать с основным контуром интерфейса Maya. Если вы просто хотите делать горячие клавиши, которые не требуют окна, просто создайте объекты RuntimeCommand – theodox

ответ

1
def moveCurrent(direction): 
    getSel = cmds.ls(sl=True) 
    if getSel: 
     if direction == "up": 
      currentVal = cmds.getAttr("%s.tx" % getSel[0]) 
      cmds.setAttr("%s.tx" % getSel[0], currentVal + 10) 
     elif direction == "down": 
      currentVal = cmds.getAttr("%s.tx" % getSel[0]) 
      cmds.setAttr("%s.tx" % getSel[0], currentVal - 10) 
     elif direction == "left": 
      currentVal = cmds.getAttr("%s.tz" % getSel[0]) 
      cmds.setAttr("%s.tz" % getSel[0], currentVal - 10) 
     elif direction == "right": 
      currentVal = cmds.getAttr("%s.tz" % getSel[0]) 
      cmds.setAttr("%s.tz" % getSel[0], currentVal + 10) 

cmds.nameCommand('moveCurrentSelectionFuncUp', ann='Move Selected Mode', c='python("moveCurrent(\\\"up\\\")")') 
cmds.nameCommand('moveCurrentSelectionFuncDown', ann='Move Selected Mode b', c='python("moveCurrent(\\\"down\\\")")') 
cmds.nameCommand('moveCurrentSelectionFuncLeft', ann='Move Selected Mode c ', c='python("moveCurrent(\\\"left\\\")")') 
cmds.nameCommand('moveCurrentSelectionFuncRight', ann='Move Selected Mode d ', c='python("moveCurrent(\\\"right\\\")")') 
cmds.hotkey(keyShortcut='F5', name='moveCurrentSelectionFuncUp')  
cmds.hotkey(keyShortcut='F6', name='moveCurrentSelectionFuncDown') 
cmds.hotkey(keyShortcut='F7', name='moveCurrentSelectionFuncLeft') 
cmds.hotkey(keyShortcut='F8', name='moveCurrentSelectionFuncRight') 

Удостоверьтесь, что у вас есть фокус просмотра, после выполнения над фрагментом.

+0

Спасибо! У меня есть 2 вопроса: 1) Если я хочу, чтобы объект двигался в направлении, если нажата горячая клавиша? Как мне это сделать? 2) Если я хочу, чтобы у одного объекта было более 1 горячая клавиша? например, если я нажимаю W, он перемещается вперед, S перемещает его назад, A влево и D вправо? – ErezProductions

+0

Большое спасибо! – ErezProductions

+0

Это сработало! Как бы то ни было, если я хочу переместить объект, не записывая позицию (вверх, вниз, вправо и влево) в функции, как я могу это сделать? – ErezProductions

 Смежные вопросы

  • Нет связанных вопросов^_^