Render.ru

Рисующаяся линия

#1
Как создать рисующуюся линию, чтобы ее крайний край был не круглым (как в эффекте stroke) а прямым ?
Кто знает ?
 

monter

Знаток
Рейтинг
35
#4
2 mazzza
Тот способ (мой) имеет один недостаток на внутренних сгибах или что-то в этом роде.
Сейчас попытался изготовить новый способ но что-то глючит АЕ6.
 
#5
Так это пример использования обычного строка...Край то все равно получается круглый
 

monter

Знаток
Рейтинг
35
#6
2 woodmal
Край там как раз прямой, читай внимательнее установки. ограничения см. чуть выше.
 

monter

Знаток
Рейтинг
35
#7
разобравшись с глюкм.

На слое рисуем произвольную линию. Накладываем эффект строк (любой)
Создаем новый солид, белый квадрат размером в 2 раза больше чем толщина строка в эффекте.
анимируем квадрат по движению линии.
На слое с линией изменяем трак моде на альфа инвертед мате.

есть недаработки в конце строка, но времени сегодня больше нет.
Я думаю принцип понятен
 
#10
Так...ну вроде как сделать путь из маски догадался...Но только она же отсекает лишь небольшую часть...А если анимировать вырастание в параметрах строка...и отсекать этой маской крайнюю рисующуюся часть...Но движения этих параметров не совпадают совершенно...Как их можно синхронизировать ?
 

monter

Знаток
Рейтинг
35
#11
Теперь по подробнее.

Создаем композицию (для примера 10 сек.)
Создаем слой, на нем маской рисуем кривую линию. Накладываем эффект строк шириной 10.
Анимируем строк. End от 0 до 100 на 5-ой секунде.
Открываем на слое Mask Shape и ставим ключ, копируем его в память.
Создаем новый БЕЛЫЙ слой размерами равным ширене строка умноженному на 2, т.е. Solid 20x20.
Вставляем в Position этого слоя ключ от маски. Последний ключ растягиваем до 5-й секунды (там где End строка = 100). Подрезаем длительность слоя до 5 сек., если маска замкнутая.
Вставляем в Rotation скрипт (Alt+Shift+=)

//-------
x1=position.value_at_time(time-0.04)[0];x2=position[0];
y1=position.value_at_time(time-0.04)[1];y2=position[1];
y=y2-y1;x=x2-x1-0.0001;
a=radians_to_degrees(Math.atan(y/x));
b=((1-x/Math.abs(x))/2)*180;
a+b+90
//-------

Проверяем как на таймлайне ведет себя белый квадрат при необходимости доводим погрешности на крутых изгибах вручную.

Возвращаемся к нашему первому слою и изменяем TrkMate на "Alpha Inverted Matte"
результат - уже удовлетворительный

Посмотрев как ведет себя строк на поворотах изменяю квадрат на прямоугольник 24х20
и меняю значения в Anchor Point (у меня в примере 10,20). после этого прямоугольник(наш solid) можно еще уменьшить до ширины строка 24х10. Anchor Point сам становится 10,10
Вот и все. результат - отличный.
Думаю буковки этим способом писать не стоит, а вот сплошную разделительную линию на асфальте - запросто.
Ограничение в пересечении линий. И это можно обойти,В местах пересечений маски, меняю Opasiti квадратного слоя на 0 (в ручную)
 
#13
Попробуй вместо Stroke использовать Write-on и привязать квадрат к
Brush Position.
 

mazzza

Знаток
Рейтинг
22
#16
monter! клево!
контроллер along path плохо отрабатывает резкие переходы, а твой скрипт можно задавать с любой точностью.(в строке time(time-0.04)-да?)
Спасибо!
 
Сверху