1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Mel обрабатывается раз в секунду

Тема в разделе "Maya", создана пользователем Ro, 2 июл 2012.

Модераторы: Dark™, Skif
  1. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Добрый день, подскажите, пожалуйста, как заставить mel скрипт выполняться раз в секунду? Если это возможно через scriptJob, то какой параметр отвечает за время?
    Заранее благодарю
     
  2. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Вот засада, никто не знает... Может, кто-нибудь знает, как найти код, по которому майя производит автосохранение? Там-то все по таймеру
     
  3. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Раз в секудну чего? Времени анимации или реального времени? Для анимации у scriptJob'а нужный флаг есть, а для реального времени две полезные команды: pause и timerX.
     
  4. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Dark, спасибо. Раз в секунду реального времени
    Pause во время остановки скрипта блокирует программу. Не подходит
    TimerX только отсчитывает время, но не выполняет функции
    Это все я знаю, мне нужен скрипт, который бы без участия юзера выполнял функцию при каждом увеличении TimerX на 1
    Единственный пример, который я встречал - это встроенный Autosave, который выполняется через определенное время, даже если пользователь ничего не делает
     
  5. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    В обычном mel'e в реализациях автосейва используется комбинация из scriptJob'а на ивент смены выделения + timerX на проверку пройденного времени. Конечно, это не будет происходить секунда в секунду, но для данной задачи этого хватает. Еще флаг idleEvent можно попробовать для scriptJob.
     
  6. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Спасибо, что предлагаете варианты. Принимаются любые. Мне нужно, что бы каждую, допустим, секунду, майя проверяла, работает Batch render или нет, и, если нет, то запускала его заного
    Идеально было бы, если б сам Batch по мере своей работы постоянно сигнализировал об этом (например, появляющиеся строки в Script editor'e о ходе выполнения рендера как сигнал), и, если программа молчит в течении какого-то времени, майя снова его запускает
    Такой возможности не нашел, остается запускать скрипт, проверяющий, появляются в папке новые изображения или нет, и если нет - запускает новый Batch. Для этого и нужна функция, запускающая скрипт проверки через определенное время
    Idle, если не ошибаюсь, грузит комп и работает только когда программа простаивает. Если юзер работает в программе, idle, вроде, молчит
    Внутренний Autosave не зависит от смены выделения, он срабатывает секунда в секунду вне зависимости от того, работает юзер в программе или пьет кофе на кухне. Если бы найти код этого Autosave'a. Пробовал использовать этот автосейв как ивент для saveScene для scriptJob, но так не работает
    Или еще один фантастический вариант - может ли питон запускать mel-скрипт?
     
  7. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Зачем его заново запускать? Если только, чтобы выполнить другую задачу. Тогда batch render надо запускать из командной строки batch файлом, где каждая строка будет выполняться поочередно. Тут велосипед изобретать не надо. Лучше скажи, что в итоге надо.

    Это нативный автосейв, я же говорил про старые реализации на mel'e.

    В pyMel и в стандартных библиотеках есть множество майских функций. Если же надо именно мел файл со скриптом запустить, то есть maya.mel.eval("source sc.mel").
    Но и питоновский скрипт запущенный из майи, ставит ее на ожидание, пока не выполнится.
     
  8. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    На ночь ставится вирейский batch-рендер. Рендер вылетает с ошибкой раз в 2-4 часа. Скрипт выполняет следующее:
    1. Каждые n минут мониторит папку с готовыми изображениями
    2. Если с последней проверки ни одного изображения не добавилось (т.е. рендер закончился с ошибкой), скрипт узнает, какой последний кадр отрендерен и запускает batch-рендер со следующего кадра.
    В идеале с этим скриптом можно будет оставить рендер на длительное время не боясь, что рендер прервется в самое неподходящее время и оставит всего пару готовых кадров
     
  9. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    Опять же Batch файл подойдет:
    Код:
    @echo off
    :start_render
    set count=0
    for %%x in (.\images\*) do set /a count+=1
    echo %count%
    render -s %count% scene.mb
    if %ERRORLEVEL% NEQ 0 goto start_render
    exit
    Но, как по мне, надо решать саму проблему с рендером и его оптимизацией.
     
  10. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Выглядит как язык, в котором я не силен...
    Dark, спасибо. Скрипт написал, взял за основу Idle, хоть он и вешает комп на 12%. Написать бы отдельную программу, не зависящую от Maya, запускающую рендер из bat-файла
     
  11. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
    А выше, что я указал?
     
  12. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Обьясните в двух словах, что это есть, или ресурс, на котором можно разобраться самому. Спасибо
     
  13. Dark™ vip

    Dark™ Administrator Команда форума

    С нами с:
    28.10.2001
    Сообщения:
    3.110
    Симпатии:
    217
    Баллы:
    1.520
  14. Ro

    Ro Знаток

    С нами с:
    28.11.2007
    Сообщения:
    291
    Симпатии:
    0
    Баллы:
    28
    Спасибо
     
Модераторы: Dark™, Skif

Поделиться этой страницей