Jump to content
Sign in to follow this  
Trofei

Тригонометрия для ботаников (от vistly)

Recommended Posts

Тригонометрия для ботаников

Спасибо автору урока за предоставленную для ARTTalk'a информацию из личного ЖЖ.

 

t65tz6.gif

 

Задача: повторить меню макоси в After Effect'е, применительно к обувной косметике

 

а именно: сделать "волну" вырастающих тюбиков, с возможностью контролировать все параметры "волны"

 

засада: тюбики не должны друг на друга залезать

 

решение: напишем экспрешшен в афтереффекте, и всего делов

 

мувик

 

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

 

2. рисуем на бумажке, или еще где, графики изменения размера и позиции баночек в зависимости от приближения контрольного объекта.

 

rhvkvq.gif

 

на графиках:

 

ось Х - расстояние между баночкой и контрольным объектом

ось У - изменения позиции (зелененькое) и размера (красненькое)

а - расстояние на котором баночка начинает "чуять" контрольный объект по поводу сдвига

b - изначальный размер банки

с - максимальное изменение размера банки (высота волны)

d - максимальный сдвиг баночки

e - расстояние на котором баночка начинает "чуять" контрольный объект по поводу роста

 

3. вспоминаем тригонометрию из школы, получается что в серединке у графиков куски синусоиды и косинусоиды:

 

если расстояние до контрольного объекта меньше а - банка сдвигается по формуле Y(X)=-d

 

если расстояние до контрольного объекта больше а - банка сдвигается по формуле Y(X)=d

 

если расстояние до контрольного объекта укладывается в интервал от -а до а - банка сдвигается по формуле Y(X)=sin((x*pi)/(a*2))*d

 

если расстояние до контрольного объекта меньше e - банка растет по формуле Y(X)=((cos((x*pi)/e)+1)/2)*c+b

 

если расстояние до контрольного объекта меньше e - банка растет по формуле Y(X)=b

 

4. осталось это перевести на язык экспрешшенов афтереффекта

 

делаем композицию из всех банок и добавляем в нее дамми-слой, который будет у нас контрольным объектом.

у всех банок смещаем анкор-пойнт к основанию, чтобы они росли только вверх

выстраиваем банки в линию

 

2rlzy52.gif

 

на дамми-слой накладываем четыре эффекта Expression controls - Slider Control

переименуем их попонятнее. они будут отвечать за переменные a,c,d и e. переменная b будет равна 1.

 

на position каждой банки применяем expression:

 

pos = thisComp.layer("Null 1").effect("Shift")("Slider");

if (thisComp.layer("Null 1").transform.position[0] - transform.position[0] < 0) {pos = -thisComp.layer("Null 1").effect("Shift")("Slider");}

if (Math.abs(thisComp.layer("Null 1").transform.position[0] - transform.position[0]) <thisComp> thisComp.layer("Null 1").effect("Affect scale")("Slider")) {scl = 1;}

transform.scale*scl

 

в которых нетрудно узнать наши формулки :)

 

потянем за контрольный объект и насладимся результатом!

 

30cbzgw.jpg

 

осталась ерунда, фон, тени и глосси-отражения.

 

Автор: vitsly

Источник: Урок в ЖЖ

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Terms of Use