Render.ru

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

Кирилл Клят

Активный участник
Рейтинг
17
#1
Задача такая: нужно, чтобы некий объект при нажатии плей поднимался вверх по оси y , и когда он доходил до определенного места - спускался быстро на предыдущую позицию, и опять начинал подниматься. цикл собственно говоря.

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

fruit_cake

Мастер
Рейтинг
127
#2
проще ключи перемещений задать и скопировать их, квадратичная зависимость анимации у них и так по дефолту стоит
 

Кирилл Клят

Активный участник
Рейтинг
17
#3
то что проще это да, но интересно было бы решить этот вопрос именно экспрешеном. мои эксперименты к чему привели :

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

Skif

Администратор 3D галереи
Команда форума
Рейтинг
584
#4
я чего то не совсем понял что в итоге должно получится? шагающий робот? механизм?
 

Кирилл Клят

Активный участник
Рейтинг
17
#5
шестеренка движется (при этом вращаясь) вверх, когда доходит до границы пространства (в кубе каком нибудь допустим она будет. Доходит до определенного числа вообще) - быстро спускается к начальной точке, и опять начинает подниматься

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

fruit_cake

Мастер
Рейтинг
127
#6
реечная передача, передаточное число 1

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

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

 

Кирилл Клят

Активный участник
Рейтинг
17
#8
а можно ли зациклить , скажем, 2 ключа, и чтобы они потом сами повторялись? т.е. чтобы не ставить много ключей, а пару-тройку, их зациклить
 

Кирилл Клят

Активный участник
Рейтинг
17
#10
да, пост инфинити прокатит

вот что с буржуйского форума написали по поводу 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
 
Сверху