Render.ru

не прекрепляется Beam

Стивен Кирке

Активный участник
Рейтинг
15
#1
Всем добрый день. Не могу ни как закрепить корректно Beam. Координаты почему то уплывают. А поправить не возможно.
 

M.O.Z.G

Знаток
Рейтинг
50
#2
У Вас выражение не правильное. Должно быть:
...
[value[0], temp] // Таким образом привязка будет только у оси Y, X будет использовать оригинальное значение.

В Вашем же вырианте и X и Y на входе получают одну переменную temp.
 

M.O.Z.G

Знаток
Рейтинг
50
#6
Я ни чего не понял если честно.
Координаты точки в данном случае, это массив из двух чисел. value - это "константная" переменная, которая всегда содержит оригинальные данные указанные в конкретном параметре. В данном случае, это вектор координат ([X, Y]) конечной точки Beam. Возвращая [value[0],temp], в конце выражения, вы передаёте значение переменной temp только в Y.
То-есть, исходя из Вашего выражения, Y будет полностью наследовать Y координату слоя Null_dynamic, X будет оставаться неизменным (если не анимировать его вручную).

Так как записано на приложенном видео сейчас - не верно. X и Y равны Y координате слоя Null_dynamic. Из-за чего конечная точка смещается по горизонтали и по вертикали. В этом и ошибка, если я правильно понимаю, что Вы добиваетесь только вертикального смещения конечной точки луча.
 
Последнее редактирование:

M.O.Z.G

Знаток
Рейтинг
50
#8
Я понял что это координаты, но как их прописать и почему постоянные ошибки понять не могу.
Конкретно в этом скриншоте, потому что Вы не объявили переменную temp, а thisComp.layer("DUMMI_ANIM").transform.position возвращает не число, а массив двух чисел.

По аналогии, Вы должны записать так:
temp = thisComp.layer("DUMMI_ANIM").transform.position[1];
[value[0], temp]

или так (в зависимости от того, как Вы планируете использовать эту переменную дальше в коде):
temp = thisComp.layer("DUMMI_ANIM").transform.position;
[value[0], temp[1]]
 

Стивен Кирке

Активный участник
Рейтинг
15
#10
Спасибо тебе большое, вроде сейчас сообразил.
А где можно посмотреть скрипты для АЕ? Для полных новичков как я?
 

M.O.Z.G

Знаток
Рейтинг
50
#11
Вы так написали, как будто это что-то плохое. Можно и так, и даже ещё более "жёстко". Всё зависит от конкретных задач. Я лишь описал на примере той ошибки, которую увидел в первом видео.
Там вообще нет каких-то определённо правильных или неправильных подходов.
 

Стивен Кирке

Активный участник
Рейтинг
15
#12
Вчера полвечера просидел с привязкой Beam ни как не получалось его к пустышке привязать обычным способом.
 

M.O.Z.G

Знаток
Рейтинг
50
#13
А где можно посмотреть скрипты для АЕ? Для полных новичков как я?
Скрипты или выражения?

Скрипты, это вообще тема не для "новичков") Но если определённый скилл кодинга или программирования есть, можно скачать API Reference на сайте адобов. Но это в основном только набор методов, которые сами по себе ничего не делают, просто описывают как обращаться к объектам и параметрам.

А выражения, не знаю, например тут, конечно не всё на свете, но есть с чего начать и очень хорошо описано, с примерами.

Вчера полвечера просидел с привязкой Beam ни как не получалось его к пустышке привязать обычным способом.
Ничего не могу прокомментировать по этому поводу. Сейчас же работает. Значит что-то было не так.
 

Стивен Кирке

Активный участник
Рейтинг
15
#15
Пу меня еще небольшой вопрос возник. А например можно сделать так что бы одна пустышка была прикреплена к другой на позишн. И при перемещинии первой пыстышки, вторая как бы двигалась с небольшим отставанием (как на пружене).
 

M.O.Z.G

Знаток
Рейтинг
50
#16
Пу меня еще небольшой вопрос возник. А например можно сделать так что бы одна пустышка была прикреплена к другой на позишн. И при перемещинии первой пыстышки, вторая как бы двигалась с небольшим отставанием (как на пружене).
Я же Вам скинул ссылку) Там всё это есть.

http://www.motionscript.com/mastering-expressions/follow-the-leader.html
 

Стивен Кирке

Активный участник
Рейтинг
15
#18
ни чего не понял, анимировал вручную и применил

amp = .1;

freq = 2.0;

decay = 2.0;



n = 0;

if (numKeys > 0){

n = nearestKey(time).index;

if (key(n).time > time){

n--;

}}



if (n == 0){ t = 0;

}else{

t = time - key(n).time;

}



if (n > 0){

v = velocityAtTime(key(n).time - thisComp.frameDuration/10);

value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);

}else{value}
 
Сверху