Теперь по подробнее.
Создаем композицию (для примера 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 (в ручную)