Склейка скелетных анимаций30.06.2023, 13:34. Показов 829. Ответов 10
Метки нет (Все метки)
Добрый день
Есть скелетная анимация (первый аттач). Робот (char) "идет", анимация зациклена, т.е. первый кадр равен последнему, изменилась только позиция робота. Требуется: изменить анимацию так чтобы плавно достигалась новая заданная поза (второй аттач), менять можно/нужно все кадры кроме первого (старого) и последнего (нового), позиция робота не обязана совпадать с исходной, число кадров тоже можно менять. Вот собсно и все, дальше детали. Не стоит стесняться если Вы "никогда не работали со скелетной анимацией". Это просто иерархия бонов (костей, часто 60-70 штук), для каждого кадра записывается "трансформ" всех бонов, реально только корень движется (имеет смещение), для остальных записывается только вращение (в кватернионах или углах поворота). Некоторые боны вообще не анимируются (устраивает как они движутся с парентом). Да, эта техника существует уже десятки лет, но попытки "открыть книгу" в данном случае успеха не имели. Многочисленные книги (в глянцевых обложках) по сути разжевывают "азы" упомянутые в предыдущем абзаце, приводят код и.т.п. Ну иногда упоминается что анимации можно "интерполировать" - здесь это как-то можно применить для рук, но никак не для ног. Также интересовался как это делается в играх, спросил на здешнем юнити форуме - по сути то же, можно интерполировать 2 анимации, как получилось - так и получилось. Никаких др средств не видно. Какие есть мысли? Делать это великом или искать готовые решения? (тогда где и есть ли они). Спасибо
0
|
|
| 30.06.2023, 13:34 | |
|
Ответы с готовыми решениями:
10
Создание скелетных схем (приложение)
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 30.06.2023, 17:31 | ||
|
Например, это гуглится на раз-два.
0
|
||
| 30.06.2023, 19:19 [ТС] | ||
|
Не по теме: Возможно перед тем как гуглить стоит определить "а что мы, собсно, хотим найти :)
0
|
||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 30.06.2023, 19:53 | ||
|
0
|
||
| 30.06.2023, 20:38 [ТС] | |||
Как я себе представляю:- вот есть анимация "идет" (walk). В начале цикла движения левая нога на уровне правой но чуть приподнята. Она идет вперед и становится на землю, за это время подымается пятка правой. Потом двигается вперед правая и тоже становится на землю, за это время приподнимается левая. Цикл движения окончен (здесь 38 кадров), можно начинать все сначала. Конечно root смещается соответственно. - теперь как должно выглядеть "идет и встал". Левая также идет вперед но на земле занимает положение позы останова. Потом правая идет вперед, но делает не полный шаг, человек "приставил ногу". Все, останов достигнут. Ну и ясно что интерполяция по всем бонам ничего хорошего не даcт. Хотя бы потому что в какой-то момент для левой уже все свершилось, а для правой еще ничего (нового) не началось. Ну и я так смело говорю левая/правая, но это ведь только пара бонов стопа/foot (что стоит на земле). Не по теме:
0
|
|||
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||
| 30.06.2023, 20:52 | ||
|
Во-вторых, вы можете смешивать не в любой момент, а только начиная с "ключевых" кадров (напр., в момент окончания шага, так же как и в жизни, остановка при ходьбе начинается в определенных позах). В старых игрушках, насколько я помню, именно так и делали. Как в современных - не знаю, но судя по реалистичности, там просто специальные переходные анимации.
0
|
||
| 01.07.2023, 11:12 [ТС] | |||
|
Вот левая нога. Сгибается (поворот боны) у бедра и, возможно, в колене, левая стопа "в воздухе" (позиция 2 на скрыншоте). Потом она приземляется (позиция 3), причем приземление может быть всяким-разным (на пятку, носок или всю стопу), но в конце-концов стопа "на земле" и неподвижна до следующего шага левой. Потом начинается перенос тяжести на левую ногу, боны левого бедра и колена "распрямляются" (позиция 4) И вот у нас есть конечная позиция (прямые ноги), и мы можем ее как-то смешивать с любым кадром. Хорошо, пусть с какого-то кадра по какой-то. Хорошо, пусть даже разные веса для левой и правой ног. Все равно не вижу "разумного сценария" такого смешивания
0
|
|||
| 11.07.2023, 14:39 [ТС] | |
|
В аттаче мувик - полный цикл левой ноги, кадры 0..37. А картинка - требуемое конечное положение. Напрашивается бленд разных костей на разных интервалах времени. На кадре 15 стопа полностью "приземлилась", значит 3 нижних кости уже должны занять свое конечное положение "в мире". Может с этого же кадра начать бленд 3 верхних бонов? Но сколько кадров он должен длиться? И как морфить "часть бонов" в мире - смутно себе представляю. Пусть стопа на кадре приземления (15) отличается от требуемой (хотя и немного). Как это пофиксить, начинать блендить ее напр с кадра 10? Так можно убить "фазу приземления". Или морф 3 верхних бонов - они ведь "парент", и стопа (чайлд) может начать елозить по земле. Да, и это всего лишь левая нога, для правой все совсем иначе.
В общем "велик" не выглядит таким уж безнадежным, но проблем/неясностей хватает. Другие пути/подходы? Огромное число людей занимающихся "играми" и.т.п. ничего не скажут, они сосредоточены на конкретном API, реальный ответ "в нашем API этого нет" давно получен. Остальные наоборот, видимо инстинктивно, полагают что какие-то средства/API существуют и городить велик неуместно. Попал "в стык"
0
|
|
|
6352 / 3523 / 1428
Регистрация: 07.02.2019
Сообщений: 8,995
|
||||||
| 12.07.2023, 13:39 | ||||||
|
Если ваша цель сделать реалистичные переходы между анимациями (я говорю именно глобальное смешивание, а не "аддитивное", когда, например, к ходьбе или бегу добавляются различные анимации торса), то проще попросить аниматора, он вам вручную сделает анимации-переходы для всех возможных комбинаций - это будет быстрее и качественнее, чем какой-то универсальный автоматический или полуавтоматический инструмент изобретать и использовать. Все это, конечно, ИМХО.
0
|
||||||
| 13.07.2023, 14:52 [ТС] | |||
А возможных комбинаций быстро набегает много. И качество "ручняка" отнюдь не гарантируется. Исходная анимация обычно записана с датчиков, mocap (motion capture), сделать свое движение в редакторе реально, но насколько естественным оно будет - неизвестно. Примерный расклад: есть компании торгующие анимациями, это не редкость. Для рекламы дается пара-тройка бесплатных char'ов, для каждого несколько простых анимаций, часто idle, walk, run (стоит, идет, бежит). Человек скачал этот stuff и хочет слепить из него простую анимацию. И тут выясняется что, напр, перехода walk->idle нету, и его надо как-то делать (или даже покупать ). И так для каждого char'а. Поэтому считаю что инструмент имеет смысл. О технических вещах отвечу отдельно чтобы не смешивать
0
|
|||
| 14.07.2023, 19:20 [ТС] | ||
|
В аттаче подписанные боны, мувик - цикл для 2 ног (левые боны синие). Имею такие соображения
Цель - анимация "шел-встал". Крутим цикл движения, вот левая нога приземлилась, примерно кадр 13, боны Toe и Foot заняли свои позиции, больше они двигаться не будут (хотя и есть какие-то повороты Toe). Тогда известны и конечные позиции всех бонов в мире, включая корень (Hips). Теперь ищем кадр где корень ближе всего к этому конечному положению. Это (примерно) кадр 18, т.е. на этом кадре корень + все боны левой ноги должны оказаться в конечном положении. Это время конца морфа (левой ноги), но с какого кадра начинать? Здесь ясности нет Также имеется мелкая неприятность: при морфе бонов левой ноги необходимо чтобы позиция Toe/Foot оставалась неизменной (стопа не должна скользить). Придется обеспечить это сдвигая корень, другого не вижу
0
|
||
| 14.07.2023, 19:20 | |
|
Помогаю со студенческими работами здесь
11
Смешение анимаций Рисование анимаций Задержка проигрывания анимаций Исходники готовых анимаций Организация очереди анимаций Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|