Как сделать сквош и стретч в Spine
Смотреть оригинальный пост
Алексей Ольферт предложил в спайне придумать конструкцию, дабы реализовать что когда мы тянем объект он вытягивался и становился тоньше и наоборот, сдавливая по высоте - становился шире. Так скажем по классике🙂
Условие - это должно работать чисто за счет рига в режиме сетапа.

Решения:
Первый вариант - конструкция на парных кинетических парах. Просто пара по две кости с общим констреинтом вверху. Для удобства внизу добавляем общую кость точку куда кладем текстуру и эти "ноги". Текстура завязывается через веса на 4-ре кости. Верхний констреинт, нижняя кость-основание и две боковые - это либо по одной кости из кинетических пар - либо на "колене" кинетической пары создаем кость и выключаем ей ротейт и завязываем весами. Развесовка - по 50% каждой стороны прилегающих костей. первый вариант видео

Второй вариант - это использование двух ТК. Мы создаем родительскую кость, для нее дочернюю кость повернутую на 90 градусов относительно родительской кости. И кладем текстуру в дочернюю кость. Далее в этом варианте - мы создаем еще одну кость которая будет контролировать эти две кости посредством трансформируемого констреинта. Для родительской кости назначаем например зависимость в 90, а для дочерней -90 по масштабированию. Тут есть два момента которые могут все поломать - первое это то что необходимо перевести настройку дочерней кости (та что с отрицательным значением) в режим local - чтобы ее ориентация основывалась не на мировых координатах, а на локальных по кости. Второй момент это порядок констреинтов - дочерний констреин должен быть в списке констреинтов ниже настройки констреинта родительской кости. В видео я показываю что меняется когда любой из этих параметров нарушен. Все после этого маштабируем по одной из осей наш "контролер" и он передает разные значения на разные кости, а они в свою очередь расположены так что меняют разные направления второй вариант видео

Третья версия выплывает из второй, но являет собой объединение и ИК и ТК🙂 50 на 50🙂 Мы создаем такую же пару из родительской кости и к ней под 90 градусов дочернюю кость. Кладем в дочернюю кость слот с текстурой. Далее берем дочернюю кость и через трансформируемый констреинт задаем ей зависимость от родительской кости, хехе, дико я знаю🙂 ставим -90 и локал. Теперь удлиняя родительскую уже будет наблюдается этот эффект и в системе будет всего две кости и один констреинт. Но сделаем преобразование перемещения в скейл в этой схеме. Для этого для родительской кости создаем жесткий ограничитель для одной кости и включаем функцию сжатия и растяжения. Теперь отдаляя или приближая этот констреинт - он изменяет длину родительской кости и происходит преобразование🙂) третий вариант видео

В последних двух вариантах меш и веса не нужны, слот просто кладется на дочернюю кость.
Четвертый вариант с использованием весов и транслейты🙂 четвертый вариант видео

Пятый вариант на транслейтах, мы связываем два IK контроллера с помощью TK по локальным координатам. Для этого мы делаем родительскую кость, развернутую на 90 градусов. Для TK исползуется отриацтельный 100%-й transform, а для IK ставится compress&stretch.

Если у Вас есть свои варианты - пишите!
Спасибо всем участникам нашего чата