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

Помогите написать expression

Тема в разделе "Maya", создана пользователем Кирилл Клят, 5 апр 2012.

Модераторы: Dark™, Skif
  1. Кирилл Клят

    Кирилл Клят Знаток

    С нами с:
    13.06.2011
    Сообщения:
    406
    Симпатии:
    5
    Баллы:
    22
    Задача такая: нужно, чтобы некий объект при нажатии плей поднимался вверх по оси y , и когда он доходил до определенного места - спускался быстро на предыдущую позицию, и опять начинал подниматься. цикл собственно говоря.

    сначала идет так pCube1.translateY=1*time а вот потом -хз. т.е. тут судя по всему надо построить зависимость по типу "если a ( объект при такой скорости доходит до ..., то его скорость равна =, положение =... " , в зависимости опять же от времени думаю. хотя может sin/cos тут использовать надо.
     
  2. fruit_cake

    fruit_cake Знаток

    С нами с:
    20.12.2010
    Сообщения:
    488
    Симпатии:
    59
    Баллы:
    28
    проще ключи перемещений задать и скопировать их, квадратичная зависимость анимации у них и так по дефолту стоит
     
  3. Кирилл Клят

    Кирилл Клят Знаток

    С нами с:
    13.06.2011
    Сообщения:
    406
    Симпатии:
    5
    Баллы:
    22
    то что проще это да, но интересно было бы решить этот вопрос именно экспрешеном. мои эксперименты к чему привели :

    pCube1.translateY=time*1;
    if(pCube1.translateY>=3)pCube1.translateY=pCube1.translateY*-1; коcяк в последнем. Так как переменной скорости, насколько я понял, нет, используем время. Но после того как объект достиг числа 3 - то время то уже прошло, и если мы умножаем на время * -1 - то объект телепортируется вниз именно на столько, сколько секунд прошло*-1. а надо , чтобы просто скорость его изменилась.
     
  4. Skif vip

    Skif Administrator Команда форума

    С нами с:
    26.03.2004
    Сообщения:
    6.827
    Симпатии:
    417
    Баллы:
    2.787
    я чего то не совсем понял что в итоге должно получится? шагающий робот? механизм?
     
  5. Кирилл Клят

    Кирилл Клят Знаток

    С нами с:
    13.06.2011
    Сообщения:
    406
    Симпатии:
    5
    Баллы:
    22
    шестеренка движется (при этом вращаясь) вверх, когда доходит до границы пространства (в кубе каком нибудь допустим она будет. Доходит до определенного числа вообще) - быстро спускается к начальной точке, и опять начинает подниматься

    что то походу кроме ключей не получится иначе сделать, если учесть что у нас скорость можно задать только переменными frame/time/sin/cos и подобными, зависящими от времени. Почему то деление времени на время не помогло всё равно
     
  6. fruit_cake

    fruit_cake Знаток

    С нами с:
    20.12.2010
    Сообщения:
    488
    Симпатии:
    59
    Баллы:
    28
    реечная передача, передаточное число 1

    по моим расчётам формула вычисления угла вращения будет rotate = translate / (2 * 3.14 * gear_diameter) * 360

    у translate ставим ключи и всё двигается по квадратичной зависимости

     
  7. fruit_cake

    fruit_cake Знаток

    С нами с:
    20.12.2010
    Сообщения:
    488
    Симпатии:
    59
    Баллы:
    28
    диаметр брать делительный

    [​IMG]
     
  8. Кирилл Клят

    Кирилл Клят Знаток

    С нами с:
    13.06.2011
    Сообщения:
    406
    Симпатии:
    5
    Баллы:
    22
    а можно ли зациклить , скажем, 2 ключа, и чтобы они потом сами повторялись? т.е. чтобы не ставить много ключей, а пару-тройку, их зациклить
     
  9. Lemieux

    Lemieux Знаток

    С нами с:
    08.06.2011
    Сообщения:
    808
    Симпатии:
    74
    Баллы:
    32
    post infinity?
     
  10. Кирилл Клят

    Кирилл Клят Знаток

    С нами с:
    13.06.2011
    Сообщения:
    406
    Симпатии:
    5
    Баллы:
    22
    да, пост инфинити прокатит

    вот что с буржуйского форума написали по поводу expression


    float $Up = 15; //steps up (in frames)
    float $Down = 5; // steps down (in frames)
    float $offset = frame%($Up+$Down);
    if ($offset<=$Up)
    {
    pCube1.translateY = $offset; //go up
    }
    if ($offset>$Up)
    {
    pCube1.translateY = $Up-(($offset-$Up)*($Up/$Down)); // go down
    }


    а в хелпе нигде не хранится информация об операторах? потому что ту же команду float я не вижу в разделе useful functions
     
  11. fruit_cake

    fruit_cake Знаток

    С нами с:
    20.12.2010
    Сообщения:
    488
    Симпатии:
    59
    Баллы:
    28
    float это присвоение переменной с плавающей точкой
     
Модераторы: Dark™, Skif

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