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

Помогите с несложным скриптом

Тема в разделе "Maya", создана пользователем Max Lozovski, 6 окт 2015.

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

    Max Lozovski Пользователь сайта

    С нами с:
    17.02.2011
    Сообщения:
    22
    Симпатии:
    1
    Баллы:
    2
    Всем привет. Требуется скриптик, сам я не очень разбираюсь в скриптовании поэтому обращаюсь за помощью к вам. Может быть уже есть гдето похожий скрипт.

    Что нужно?
    Имеем два объекта или более.
    1.jpg
    На одном стоят ключи в разных местах. На другом как у меня

    2.jpg
    Нужен такой скрипт: Выделяю два объекта, указываю рабочую зону
    3.jpg

    Запускаю скрипт, и он на втором объекте делает пустые ключи (ставит ключи без изменения значения на подобии фунции кнопки S Set Key) в тех же местах что и ключи первого объекта (в рамках рабочей области, красный цвет). В итоге на втором объекте должно получится так.

    4.jpg
    Если кто может помочь буду очень признателен.
     
    Последнее редактирование: 13 окт 2015
  2. zka

    zka Активный участник

    С нами с:
    24.10.2007
    Сообщения:
    137
    Симпатии:
    6
    Баллы:
    13
    1) Что значит пустые ключи? Ключ по определению не может быть пустым.
    2) Скрипт? Copy/Paste отменили? С какой версии?
     
  3. Max Lozovski

    Max Lozovski Пользователь сайта

    С нами с:
    17.02.2011
    Сообщения:
    22
    Симпатии:
    1
    Баллы:
    2
    Пустой в смысле просто прокеить позишн, ротейт, и скейл. в тех же ключах что и на первом объекте но без перенесения значений. Копи паст тут не нужен.
     
    Последнее редактирование: 13 окт 2015
  4. zka

    zka Активный участник

    С нами с:
    24.10.2007
    Сообщения:
    137
    Симпатии:
    6
    Баллы:
    13
    Ваш ответ ввергает меня в уныние.

    [​IMG]

    Просто прокеить без "перенесения значений". Вы шутите? А что тогда будет содержать этот ключ и какую информацию он будет передавать на ноду Time?

    Что нам говорит майский хелп на запрос key:

    Keys are arbitrary markers that specify the property values of an object at a particular time. Setting keys is the process of creating the markers that specify timing and action in your animation. Animation is the process of creating and editing the properties of objects that change over time.

    Надеюсь перевод не нужен? "Пустые ключи" куда катится мир....

    Сформулируйте то, чего вы хотите достигнуть в результате и получите ответ.
     
  5. Cherednick

    Cherednick Мастер

    С нами с:
    26.01.2012
    Сообщения:
    545
    Симпатии:
    875
    Баллы:
    172
    Да вроде все ясно написано. Прокеить те же фреймы, но без изменения значений. Т. е. что там было, то кеится.
     
    Max Lozovski нравится это.
  6. Max Lozovski

    Max Lozovski Пользователь сайта

    С нами с:
    17.02.2011
    Сообщения:
    22
    Симпатии:
    1
    Баллы:
    2
  7. zka

    zka Активный участник

    С нами с:
    24.10.2007
    Сообщения:
    137
    Симпатии:
    6
    Баллы:
    13
    Замысел понятен. Пока будете ждать скрипт проще выделить все объекты и расставить ключи вручную.
     
  8. Max Lozovski

    Max Lozovski Пользователь сайта

    С нами с:
    17.02.2011
    Сообщения:
    22
    Симпатии:
    1
    Баллы:
    2
    Да я так и делаю. Скрипт мне не к спеху, просто подумал может знающие люди смогут быстро помочь.
     
  9. zka

    zka Активный участник

    С нами с:
    24.10.2007
    Сообщения:
    137
    Симпатии:
    6
    Баллы:
    13
    Быстро помочь... Хм, давайте рассмотрим Вашу задачу поближе:
    1) Для того, что бы скрипт корректно работал нужно что бы он работал с любыми объектами вне зависимости от их имен.
    2) Для того, что бы скрипт корректно работал нужно знать на какие каналы ставить ключи или предусмотреть выбор каналов в процессе исполнения скрипта. Нам ведь не нужны лишние пустые ключи и мы не хотим пропустить то, что нам нужно.
    3) Из этого следует, что нужно написать универсальный скрипт который будет работать при любых условиях и не надо будет каждый раз менять код.
    4) Нужен интерфейс (диалоговое окно) где можно будет задать параметры.
    5) 3-4 часа работы с отладкой.

    Быстро помочь.... :) Не, так не бывает.
     
  10. Max Lozovski

    Max Lozovski Пользователь сайта

    С нами с:
    17.02.2011
    Сообщения:
    22
    Симпатии:
    1
    Баллы:
    2
    :)))))))))))))))))))
    Все так. Нужен универсальный скрипт. Я прошу помощи потому как знания в программировании весьма ограничены. Если можете хотя бы с направлением подскажите, атрибуты и все такое.

    2) Нужно Транслейт, Ротейт, и Скейл, ну или хотябы Транслейт (тут даже не важно что будет прокеиваться важнее создать ключь в нужном месте.)
     
  11. Cyberika

    Cyberika Активный участник

    С нами с:
    17.02.2012
    Сообщения:
    116
    Симпатии:
    9
    Баллы:
    13
    Думаю скрипт вам тут никто не напишет. Надо самому писать, рас так нужно.
    Задачу надо разбить на несколько частей.
    1. Получить и поместить в переменную имя объекта с которого копируйте ключи.
    2. Получить и поместить в переменную имя(имена) объекта(объектов) на которую надо скопирoвать ключи.
    3. Получить и поместить в переменную диапазон таймлайна(выделенная область).
    4. Получить и поместить в переменную ключи с данного диапазонa фотограмм.
    5. Назначить полученные ключи на объект(ы), который(е) у вас находится в переменной из пункта 2 с помощью for in loop-a или других итераций(смотря что нужно).

    Вот вам подсказки. На остальное гугль + документация по командам Мел вам в помощь.
     
    Последнее редактирование: 14 окт 2015
  12. iNOD

    iNOD Активный участник

    С нами с:
    10.11.2009
    Сообщения:
    631
    Симпатии:
    2
    Баллы:
    19
    Помещаете второй объект в группу. Центр группы должен находиться там же где и центр первого объекта. Копируете ключи с первого объекта и вставляете ключи в группу, за тем выделяете все ключи что создались и обнуляете.
     
  13. zka

    zka Активный участник

    С нами с:
    24.10.2007
    Сообщения:
    137
    Симпатии:
    6
    Баллы:
    13
    Ииии?
    Что это даст?
     
  14. Max Lozovski

    Max Lozovski Пользователь сайта

    С нами с:
    17.02.2011
    Сообщения:
    22
    Симпатии:
    1
    Баллы:
    2
    iNOD :)))))))) Вообще не то. Про кубики это грубо, там у каждого объекта своя иерархия, которую трогать нельзя.
     
  15. Max Lozovski

    Max Lozovski Пользователь сайта

    С нами с:
    17.02.2011
    Сообщения:
    22
    Симпатии:
    1
    Баллы:
    2
    Нашел рабочий скрипт по теме, только нужно докрутить чтобы ключи проставлял в Time Range диапозоне. Ктонибудь сможет помочь?

    global proc ackTimingFramework() {
    //progess window
    int $max = 1;
    progressWindow
    -title "ackTimingFramework"
    -maxValue $max
    -status ""
    -isInterruptable true;


    float $allTimes[] = `keyframe -q -timeChange`;

    //loop over selected curves and process independently
    string $selectedCurves[] = `keyframe -selected -q -name`;

    if (size($selectedCurves) <= 1){
    //one or none curves selected so insert keys on all curves
    $max = size($allTimes);
    progressWindow -e -maxValue $max;

    for ($i = 0; $i < size($allTimes); $i++){
    progressWindow -e -step 1;
    if ( `progressWindow -query -isCancelled` ){break;}

    setKeyframe -insert -time $allTimes[$i];
    }
    } else {
    //only key selected curves

    //estimate time
    string $sc[] = `keyframe -selected -q -name`;
    $max = size($sc);
    for ($x = 0; $x < size($sc); $x++){
    $max += size(`keyframe -q -timeChange $sc[$x]`);
    }


    for ($c = 0; $c < size($selectedCurves); $c++){
    //channel to use for this pass
    $channel = $selectedCurves[$c];

    for ($i = 0; $i < size($allTimes); $i++){
    progressWindow -e -step 1;
    if ( `progressWindow -query -isCancelled` ){break;}

    setKeyframe -insert -time $allTimes[$i] $channel;
    }
    }
    }

    //kill window
    progressWindow -endProgress;

    }
     
Модераторы: Dark™, Skif

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