2015-11-23 1 views
0

Я могу экспортировать данные объекта кадра из Maya 2015 с помощью настраиваемого File Translator.Maya 2015 Предложения по ускорению экспорта при сцене анимации

Когда я экспортирую анимацию из сцены, мой экспортер перемещает ползунок времени вдоль каждого кадра и записывает новые значения (такие как положение) для анимированных каналов. Это повторяется для всех анимированных каналов, пока мы не достигнем последнего кадра анимации.

Экспорт этого пути заставляет окно просмотра Maya обновлять каждый кадр. Во время экспорта я действительно не хочу/нуждаюсь в этом.

Кто-нибудь знает какой-либо способ обновить все логические данные на кадр в Maya, не запрашивая окно просмотра, также отражает эти обновления?

ответ

2

Отключение видового экрана является одним из вариантов, но с использованием обновления в 10 раз быстрее.

cmds.refresh(suspend=True) 
doYourFunc() 
cmds.refresh(suspend=False) 
+0

Спасибо за дополнительный ввод на это, я попробую попробовать, и если он будет работать быстрее, чем предложение @DrHaze, я отмечу это как ответ. – Hinchy

1

Основная функция вы ищете, чтобы включить окно просмотра ОТКЛ:

from maya import mel 
mel.eval("paneLayout -e -manage false $gMainPane") 

И включить его:

mel.eval("paneLayout -e -manage true $gMainPane")

Где $gMainPane является Mel глобальная переменная, содержащая путь вашего окна просмотра.


От Asimation Blog:

При запуске процесса, что петли через кадры сцены, как испечь анимации или экспорта гео, Maya обновит окно просмотра для каждого кадра. Это обновление избыточно и замедлит процесс. Поэтому, чтобы избежать этого, мы можем отключить окно просмотра во время работы кода.

# ----------------------------------------------------------------------------- 
# Imports 
# ----------------------------------------------------------------------------- 
from functools import wraps 
from maya import cmds 
from maya import mel 


# ----------------------------------------------------------------------------- 
# Decorators 
# ----------------------------------------------------------------------------- 
def viewportOff(func): 
    """ 
    Decorator - turn off Maya display while func is running. 
    if func will fail, the error will be raised after. 
    """ 
    @wraps(func) 
    def wrap(*args, **kwargs): 

     # Turn $gMainPane Off: 
     mel.eval("paneLayout -e -manage false $gMainPane") 

     # Decorator will try/except running the function. 
     # But it will always turn on the viewport at the end. 
     # In case the function failed, it will prevent leaving maya viewport off. 
     try: 
      return func(*args, **kwargs) 
     except Exception: 
      raise # will raise original error 
     finally: 
      mel.eval("paneLayout -e -manage true $gMainPane") 

    return wrap 

# ----------------------------------------------------------------------------- 
# Export/Bake function 
# ----------------------------------------------------------------------------- 
@viewportOff 
def export(): 
    """ 
    the export/bake process 
    """ 
    # do something 
    print "running some process" 
    for i in range(1000): 
     print i 


export() 
+0

Вы являетесь героем, спасибо! – Hinchy

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

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