Задать вопрос
@zeni1agent

Как создать настоящий морф svg файла с помощью javascript?

Я постараюсь объяснить что я имею в веду под словом "настоящий морф"
Те кто знаком с программой blender называют его Ключ формы(Shape Keys)
Морф состоит из двух или более svg файлов имеющую общую структуру на различающиеся в положении точек.
и ползунка с ID="key_1" с помощью которого и управляется морф
Код морфа создает параллель между каждой отдельной точкой или свойством и делит отрезки расстояния для каждого деления
И если point_1 = 1px, point_key_1 = 1px, point_key_2 = 100px, key_1.max = 10, key_1.min = 0, key_1.value = 5,
то key_1.step = 10px, point_1 = 50px,
если key_1.value = 0,
то point_1 == point_key_1; так как point_key_1 всегда является начальным значением.
Морф не является запеченной анимацией
запеченной анимацией - Заранее просчитанная анимация в 3d графике которая не способна взаимодействовать с окружением таким как свет, жидкости, дым или любые другие физические предметы

Другими словами если на svg файл воздействуют два разных морфа в равной степени то итоговое значение должно быть равно point_1 = point_key_1(33%)+point_key_2(33%)+point_key_3(33%)
Пример в blender
Тип №1
5e3baf5d5c51f536896520.gif
Тип №2
5e3bae3f23b79763623900.gif
Если значение key_1.value больше или меньше максимально допустимого то point_1 должен продолжить свое движение
Например если
key_1.value = 11 при key_1.max = 10
то point_1 = 110px;
и наоборот если
key_1.value = -1 при key_1.min = 0
то point_1 = -10px;

Да я знаю что объясняю не очень то понятно, но я стараюсь как могу.
Если говорить максимально просто то мне нужен аналог Shape Keys->Join as Shape из blender

Я попытался использовать
gsap

или polymorph

Но не один из этих способов не дал мне нужного результата.

Поэтому я попытался создать свою формулу для морфов
Тип №1

Тип №2

Но это код работает только с polygon
А мне нужно что бы он работал с уже созданными svg файлами из adobe illustrator
Но в них находится вот такой синтаксис.
<svg width="580" height="400" viewBox="0 0 621.69 605.5"><defs><style>.a{fill:#ff0;stroke:#000; stroke-miterlimit:10;}</style></defs><title>1</title><path class="a" d="M366.5,74.5c1.19,58.5-.19,314.24-.19,314.24V678.5H987V74H670.89Z" transform="translate(-365.81 -73.5)"/></svg>

И я не могу создать параллели между ними поскольку не понимаю этот код
M366.5,	74.5c1.19,	58.5-.19,	314.24-.19,	314.24V678.5H987V74H670.89Z

M366.5,	74.5c43,	68,			289,		295,289,295l-289.19,309,317.19-279L987,678.5l-270.5-308L987,74,682.5,335.5Z

Может ли кто нибудь мне помочь с этим?

Мой код
  • Вопрос задан
  • 201 просмотр
Подписаться 3 Простой 9 комментариев
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы