3 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

JA анимации ч.2. Как приписать анимацию нпс

Анимации в Android по полочкам (Часть 2. Комплексные анимации)

Приведённые в предыдущей части инструменты были относительно низкоуровневыми и в Android есть куда более простые способы добиться красивых анимаций не прибегая к прямому рисованию графики или изменению свойств объектов.

В этой части мы рассмотрим как можно минимумом усилий получить красивые анимации.

Часть 2. Комплексные анимации

1. Анимация изменений лэйаута (aka animateLayoutChanges)

Всё, что нам нужно сделать, чтобы добиться анимации как на гифке выше — это добавить флаг animateLayoutChanges в наш ViewGroup в xml. Теперь, когда мы удаляем или добавляем элемент в наш контейнер, либо изменяем его свойства, они автоматически будут анимированы.

Ладно, я немного слукавил когда говорил, что чтобы получить анимацию как на гифке выше, нужно всего лишь установить флаг. Добавление animateLayoutChanges на самом деле устанавливает LayoutTransition нашей ViewGroup. Но LayoutTransition по умолчанию анимирует только изменение видимости объектов в лэйауте. Поэтому если мы хотим изменять свойства объекта (например ширину и высоту) нужно включить эту опцию отдельно:

Теперь точно всё. Если захочется как-то кастомизировать это поведение, то у LayoutTransition есть метод setAnimator позволяющий задать свою собственную анимацию изменений. Ну самые хардкорные ребята всегда могут написать свой LayoutTransition .

• Применение:
Базовая анимация изменений объектов на сцене.
• Достоинства:
Минимальные трудозатраты
• Недостатки:
Слабая кастомизация

2. Transitions framework

Начиная с API 19 в Android появился новый фреймворк позволяющий создавать сложные анимации с участием большого количества элементов и минимумом кода.

Есть два основных варианта его использования:

1) Использование TransitionManager.beginDelayedTransition(ViewGroup)
Чтобы создать анимацию необходимо перед внесением изменений в наши View вызвать TransitionManager.beginDelayedTransition(ViewGroup) и передать в него ViewGroup, который мы хотим анимировать. Фрэймворк запомнит состояние View и запустит анимацию на следующем кадре.

2) Создание сцен
Создание анимации в этом случае сводится к созданию двух похожих xml, отвечающих за начальное и конечное состояние ваших анимаций. Соответственно, id объектов в xml должны совпадать, чтобы дать фреймворку возможность найти соответствие (На самом деле beginDelayedTransition тоже создаёт сцены, одну в момент вызова, а вторую на следующем кадре. После чего запускает анимацию между ними).

Кастомизация в Transitions framework достигается за счёт передачи объекта Transition вторым параметром. По умолчанию используется AutoTransition() , так что код ниже будет работать абсолютно так-же, как и код выше.

И если заглянуть внутрь AutoTransition можно заметить что анимации будут происходить в последовательно в следующем порядке:
— анимируются исчезающие объекты
— анимируются изменения размеров
— анимируются появляющиеся объекты

• Применение:
Анимация большого количества объектов

• Достоинства:
Минимальные трудозатраты
Доступная кастомизация

JA анимации ч.2. Как приписать анимацию нпс

Полный список анимаций, которые можно прописывать в логике НПС в Зове Припяти. Многие из них перекочевали из ТЧ, однако квестовые являются уникальными.

zat_b14_give_artefact_idle — стоя рулим( Я так понял что этот анимпоинт связан с баржей на затоне)
zat_b14_give_artefact_act — стоя поворачиваем руль
zat_b38_stalker_break_lock — чиним замок
zat_b38_stalker_turn_on_lift — открываем лифт и спускаемся вниз по лестнице
zat_b38_stalker_jump_tonnel — прыгаем в люк
zat_b38_stalker_alert — идет как бандит, а потом оглядывается и вскидывает оружие
zat_b20_noah_jump — отходим и прыгаем с разбега
pri_a17_ice_climb — вверх по лестнице
pri_a17_fall_down — попали в человека и он упал
pri_a17_pray_in — идет на тебя и по моему посылает
pri_a17_pray- идет на тебя и по моему посылает (много раз)
zat_b22_medic_turn_idle — чистит стол. Хотя не особо понятно что он делает (видимо эту анимацию исполняет медик на Скадовске)
zat_b22_medic_turn_out — отворачиваемся от стола
zat_b22_medic_suicide — суицид
zat_b3_tech_drunk — спит (Кардан)
zat_b3_tech_drink — выпиваем водочки (Кардан)
zat_b3_tech_idle — сидит на стуле (Кардан)
zat_b3_tech_surprise — заснул сидя (Кардан)
give_orders — тоже самое что и анимка give_orders — оглядываемся по сторонам и посылаем на два стороны чуваков
bloodsucker_search — оглядываемся по сторонам
bloodsucker_panic — от бедра стреляем
jup_b10_drunk_ravings — спим сидя
pas_b400_vano_probe — тыкаем в детекторе что то
pri_a28_kirillov_sit_high_radio — сидим высоко и ковыряемся в радио
pri_a18_inspert_monolit_actor — идем и оглядываем все вокруг
pri_a20_colonel_radio — стоим оперевшись об стол и смотря в комп/радио
pri_a21_sentry_madness — стоим и отстреливаемся по кругу
pri_a21_sentry_madness_suicide — отстреливаемся и потом суицид
pri_a28_army_trance_out — Совсем не понятно
zat_b106_wounded_idle — лежит на кровати (Краб)
zat_b38_cop_dead — Прикидываемся трупом
jup_b15_zulus_sit_drink — сидим в позе Зулуса и пьем водку
jup_b15_zulus_sit_idle — сидим в позе Зулуса
jup_b15_zulus_sit_out — слазим со стола
jup_b219_actor_one — оружие на плечо и смотрим
jup_b219_azot_all — стоим бьем кулаком по столу, указываем в стол
zat_b100_heli_2_serch — сидим и тыкаем в ПДА пальцем
jup_b217_guide_stand — оглядываемся потихоньку и идем к точке
jup_b217_nitro_stand — стоим у стены боком
jup_b41_novikov_stand — руки в кармане и стоим
pri_b305_actor — идем прямо потом крадемся вправо наставляем ногу на ящик и пушкой смотрим туда
jup_a9_cam2_actor — чуть чуть наклонились и рассматриваем что то
pri_a25_psy_medic_idle — пси раненый
pri_a25_psy_medic_out — выход из пси ранения

Некоторые названия говорят сами за себя. Остальные проверяйте 🙂
Ходячие:

walk Идет с оружием в руках
walk_noweap Идет без оружия
run Бежит с оружием в руках
sprint быстро бежит (а-ля сталкер Вобла с артом) без оружияне прицеливаясь
patrol идет прицеливаясь
patrol_fire идет стреляя
raid крадется прицеливаясь
raid_fire идет стреляя
sneak идет в приясяди прицеливаясь
sneak_run идет в присяди с оружием в руках
sneak_no_wpn крадется в присяде без оружия
sneak_fire идет в присяде стрее=ляя
assault полубежит, с оружием на -готове
assault_fire полубежит стреляя
rush бежит с оружием

wait просто стоит
wait_trade просто стоит руки опущены
wait_na просто стоит
guard просто стоит в руках оружие
guard_chasovoy кудуто смотрит прикладывает руку колбу
guard_na просто стоит
guard_fire стоя ведёт огонь
threat нацеливает оружие
threat_danger в панике смотрит по сторонам
give_orders стоит нацелившись
threat_heli нацеливает оружие на небо
threat_na нацеливает оружие
threat_fire нацеливает оружие стреляя
threat_sniper_fire стреляет стоя одиночными
hide целится с колена ожидая отаки
hide_na присев на одно колено стреляет
hide_fire полуприсев целится и стреляет
hide_sniper_fire стреляет стоя одиночными с колена
caution слегка согнувшись, что-то внимательно высматривает на земле, руки прикладывает к коленям
choose что-то высматривает: оглядывается по сторонам
press указывает пальцем
ward руки за спиной, голова наклонена вниз
ward_short руки за спиной, голова наклонена вниз
ward_noweap руки за спиной, голова наклонена вниз
ward_noweap_short руки за спиной, голова наклонена вниз
fold_arms стоит руки в локтях согнуты
search встает на колени или на корточки и начинает что-то искать
stoop_no_weap полусогнувшись руки на коленях чтото осматривает
salut встает в позицию «смирно»
salut_free переходит в позицию «вольно»
prisoner пленный
hide_no_wpn на одном колене руки на земле

Сидячие и лежачие:

sit Сидит на присядках
sit_knee Сидит полубоком
sit_ass Сидит на заднице
play_guitar играет на гармошке
play_harmonica играет на гитаре
sleep спит
hello машет одной рукой над головой
hello_wpn одной рукой машет
refuse непись пожимает плечами
claim НПС подзывает ГГ рукой целчсь в ГГ
backoff Непись начинает махать стволом в разные стороны – типа убери ствол
backoff2 Непись начинает махать стволом в разные стороны – типа убери ствол
punch анимка удара рукой (или прикладом)
search_corpse в панике согнув колено
help_wounded полуприсев
dynamite закладка динамита
binocular смотрит в бинокль
hide_rac сидит с рацией
wait_rac .
wait_rac_noweap .
wait_rac_stc .
guard_rac достает рацию
probe_stand сканирует стоя
probe_stand_detector_advanced
probe_stand_detector_elite
probe_way
probe_way_detector_advanced
probe_way_detector_elite
probe_crouch
probe_crouch_detector_advanced
probe_crouch_detector_elite
scaner_stand сканирует стоя
scaner_way
scaner_crouch сканирует с колена
hands_up стоит руки вверх

IdleMarkers — От создания до расширения имеющихся

IdleMarker — что это такое, как создать новый и сделать модель поведения NPC в разное время суток.

Для работы ИИ (Искусственного интеллекта) в игре используется NavMesh. После создания навмешей для NPC требуются AI пакеты, которые сделают его «живым» (Вкладка AI Packages в меню Actor). Каждому NPC лучше прописывать определенный набор Default пакетов, наиболее важным из которых будет является Sandbox пакет (DefaultSandboxLocEditor1024 – например).

Приписав персонажу пакет, вы увидите, как тот бродит с места на место, пьет и закусывает. Для того, чтобы как-то разнообразить жизнь актера, используется фурнитура (WorldObjects/Furniture/. ) и набор маркеров, таких как IdleMarkers.

Для начала разберемся, что за зверь такой этот IdleMarker. В словоблудии уже говорилось, что эти маркеры позволяют разнообразить поведение NPC в какой-либо локации. Более того, они позволяют, не прибегая к скриптам и сценам создавать модель поведения NPC в разное время суток, но это уже зависит от AI-пакетов.

Читать еще:  Legendary: Game of Heroes 12

Именно благодаря IdleМаркерам стражники патрулируют улицы городов, а Драконий Предел ежедневно очищается от пыли и мусора двумя безустанными служанками. Сами по себе IdleМаркеры наследуют анимации, заложенные для каждого NPC. К сожалению, не все анимации пригодны для использования в маркерах, но самое главное не это, а то, что десятки анимаций так и небыли использованы разработчиками игры. Теперь, когда дело сказано, можно приступить к поэтапному разбору и созданию IdleMarker’a.

Создание IdleMarker’a на основе доступных анимаций

Откроем ObjectWindow > раздел Miscellaneous > IdleMarker. Здесь мы видим список из уже доступных маркеров:

Жмем правой кнопкой мыши по этому пространству и создаем новый IdleMarker. Перед нами появляется окно IdleMarker:

Тут стоит остановиться на каждом из параметров окна:

  1. Поле Marker Model – его трогать не стоит. Модель маркера уже заложена и будет использоваться в окне рендера;
  2. Child Can Use – могут ли дети использовать маркер;
  3. Ignored By Sandbox – будет ли маркер игнорироваться актерами (применимо в ситуациях, когда маркер выполняет специальную анимацию для какой-либо сцены в каком-либо квесте;
  4. Do Once – маркер будет использован один раз;
  5. Поле Idle Timer Setting – настройка времени выполнения данного маркера. Не все маркеры могут быть настраиваемы этим параметром;
  6. Пункты Random и Run In Sequence отвечают за случайное или последовательное выполнение IdleАнимаций в случаях, когда ваш маркер содержит сразу несколько анимаций;
  7. Этими стрелочками можно регулировать порядок распределения маркеров в списке, соответственно изменять последовательность их выполнения (не забываем про пункт 6).

Разобравшись со свойствами окна, переходим к добавлению новой анимации в наш маркер. Нажимаем на пустое поле правой кнопкой мыши и выбираем New. Перед нам окно Select Idle. Мы видим список всех IdleАнимаций, доступных для использования в IdleМаркерах, кроме того есть поле выбора актера и окно просмотра:

Выберем себе актера, для которого нам нужно получить список анимаций. Обратите внимание, при смене актеров меняется и список. Вы можете упорядочить список по имени или ID. По умолчанию список упорядочен по дате:

Я выбрал Ульфрика Буревестника и получил список доступных анимаций. Обязательно учтите следующее:

  • Список анимаций идентичен для всех играбельных рас, в том числе детей. Для всех пауков, к примеру, будет одинаковый список состоящий из нуля доступных анимаций.
  • В данном списке содержатся где-то 250-300 анимаций. В IdleМаркерах применимы лишь 150. Как правило все они начинаются со слова Idle.
  • Многие анимации не будут проигрываться актерами. К этому нужно привыкнуть и смириться. Вероятно, это есть баг самой системы IdleМаркеров.
  • Все анимации добиваний (около 80) можно найти в этом списке. К сожалению при их исполнении актеры не используют оружие из инвентаря. Они просто машут руками.
  • Не возвращайте окно выбора Актера в позицию NONE – это приводит к вылету редактора.
  • Вероятно, в превью-окне должен был работать рендер самой анимации, дабы вы не включали по 100 раз игру для тестирования. Увы, что сломано, то сломано.
  • Некоторые анимации имеют начало, зацикленную часть выполнения и конец. Используйте либо начальную, либо срединную фазу (в названии анимации слова StartEnter и Instant).
  • Некоторые анимации наследуют объекты, такие как кинжалы, бутылки, чашки, метла. Добавлять их в инвентарь самому персонажу не нужно. Однако, например анимация чистки меча наследует оружие из инвентаря актера.

Для примера я выбрал анимацию IdleAstrid (Финальная миссия за Темное Братство, обгоревшее тело Астрид «распято» на полу). Далее жмем OK. И выбираем место для своего маркера:

По быстрому я собрал прототипную ячейку, не забыл про сетку путей, Ульфрика и сам маркер:

В результате Ульфрик подходит к маркеру и растягивается на полу:

Не находите это немного скучным и не обыгранным? Так давайте изменим окружение под этот маркер:

И вот сцена преобразилась, она уже может поведать какую-то историю. Ульфрик Буревестник стал жертвой имперского произвола, либо у Авентуса Аретино появились новые заказы для Темного Братства. Первый этап пройден.

Расширение списка доступных IdleАнимаций для использования их в системе IdleMarker

А что если нам мало стандартных анимаций? А есть ли другие анимации? Давайте разбираться. На верхней панели найдите Gameplay, далее Animations:

Перед нами окно Idle Animations. Здесь мы видим каталоги с анимациями для разных типов существ, в том числе для фурнитуры и активаторов:

Запомним это место. Теперь нам необходимо выбрать анимацию, которую мы хотим использовать в качестве IdleМаркера. Для этого откроем в окне Object Window наших NPC. (Actors > Actor):

Находим своего актера, открываем, переходим на вкладку Animation (список анимаций также доступен через Preview Window):

Тут работает рендер анимаций. Все, что нам нужно — это выбрать себе анимацию по вкусу. Естественно лучше искать среди анимаций, начинающихся со слова Idle. Изначально я выбрал анимацию шатающейся пьяной походки (А такая есть и нигде не используется, сюрприз да?), но она не сработала на IdleМаркере. Поэтому возьмем анимацию написания письма пером в сидячем положении (Два сюрприза за день – да вы везунчик!):

Теперь запомним ее название. В моем случае это IdleWriteTableChairIdle.hkx. Название нужного нам AnimEvent’a будет примерно таким же. Возвращаемся к окну Idle Animations. Итак, нам нужен набор анимаций для «разумных рас». Это каталог ActorsCharacterBehaviors_Master.hkx:

Тут мы видим много подкаталогов с различными действиями для игрока. Ничего не трогаем, листаем вниз до папки LOOSE:

Открыв эту папку, мы видим до боли знакомую картину – тот самый список анимаций, доступных при создании IdleМаркера (разве что сортировка алфавитная). Жмем куда-нибудь в это место правой кнопкой мыши > Insert Child. Получаем новую анимацию, без имени. (отображение вверху списка), придумываем ей ID:

В самом окне имеются дополнительные параметры:

  • Sequence, Blocking, No attacking не трогаем. Они не используются в данном разделе.
  • Looping Seconds используется для задания цикличности выполнения действия.
  • Replay Delay – задержка перед повторным выполнением анимации.
  • Conditions – пропишите условия для выполнения анимации. Тут вы ограничены только свей фантазией. Можно поставить зависимость от чего угодно (погода, пол, раса, уровень и еще десятки условий – все зависит от вас).
  • AnimEvent – само окно для выбора анимационного события:

Начинаем искать нашу анимацию. Мы видим действие IdleWriteTableChairEnterInstant. То, что нужно. Кстати, там еще есть анимации для разных типов кресел: будь то с левосторонним «входом» или правосторонним. Нам же не принципиально. Заметьте, название AnimEvent’a и Havok Анимации не совпадает, но очень похоже:

Выбираем нужную анимацию, нажимаем Close. Открываем свой IdleMarker. Нажимаем New. Получаем список доступных анимаций. Находим там свою IdleАнимацию:

Дважды кликаем по ней, сохраняем маркер и если он у вас уже где-то размещен – смотрим результат в игре:

И вот вроде бы все хорошо. У Ульфрика появилось письмо, он старательно выводит на нем пустоту что пишет. Но. Где стул? А где плавная анимация посадки на этот стул? Непорядок. Давайте разбираться:

Как видите, иногда приходится «помогать» IdleАнимациям нормально выглядеть. Можно было бы подставить какую-нибудь табуретку или камень для Ульфрика, но это не профессиональный подход.

Итак, нам нужно заставить Ульфрика проиграть IdleАнимацию тогда, когда он сядет за стул. Определенный стул, а не кровать или скамейку:

Для этого нам нужен сам Ульфрик. Открываем его как Reference самой локации, переходим на вкладку Scripts и создаем новый скрипт (Add > New > «Вводим название» > OK). Затем правой кнопкой по нему > Edit Source:

Открывается текстовое окно, там мы видим только: Scriptname (Имя вашего скрипта) extends ObjectReference

Сменяем ObjectReference на Actor и полный скрипт выглядит так:

В данном случае, как только Ульфрик использует фурнитуру (OnSit), при условии, что наша фурнитура — нами выбранное кресло (Chair), проигрывается наша IdleАнимация (AnimIdle). Нажимаем File > Save. Скрипт скомпилирован. Остается дать скрипту знать, какую фурнитуру ему нужно учитывать, и какую анимацию проигрывать:

Дважды кликаем левой кнопкой мыши по имени скрипта / правой кнопкой мыши по названию > Edit Properties. Выбираем наше AnimIdle. В окне Pick Object мы видим тот самый список анимаций, доступных только для IdleМаркеров, в который мы занесли новую. Затем в Chair выбираем наше кресло.

Проверим в игре:

Ульфрик садится в кресло, достает пергамент и начинает писать. Великолепно! Сцена обыграна логично (Стол выберете сами).

Гениальность системы искусственного интеллекта Скайрима в том, что он не станет заставлять NPC 100% выполнять вашу анимацию, если его не попросить. Как видите пока один Ульфрик пишет, второй закусывает, а третий запивает:

Минутка словоблудия

В Скайриме зашито множество анимаций, пригодных для использования IdleМаркерами. Почему разработчики их не использовали? Мы не знаем, но ничто не мешает вам использовать эти анимации не только для скриптовых сцен, но и для обычных ситуаций и локаций так, чтобы они стали необычными.

Вот небольшой список (далеко не полный) Havok Анимаций (просмотр во вкладке Actor), которые не найти в повседневном Скайриме, либо их использовали единожды (Даю начало названия, каждая анимация имеет два-три варианта или стадий исполнения):

FNIS PCEA2 / Уникальные анимации для ГГ

Мод позволяет назначить анимации только для ГГ, не затрагивая анимации NPC. PCEA2, в отличие от PCEA, позволяет менять наборы анимаций прямо в игре через МСМ меню и создавать свои наборы. Кроме того, в отличии от PCEA, мод не требует уникальной расы ГГ, работает и с ванильными.
Инструкция: Гравицапа

Читать еще:  Razer представила Viper Ultimate — игровую мышь будущего

Обновление:1.3
— Обновлен набор предустановленной анимации Magiska — Spell Casting Animations до версии 1.1 (вариант B). Это устранит блокировку анимации после переключения заклинаний.
— Добавлены внутренние события для синхронизации с модами как XPMSE

Обновление:1.2
— Добавлена анимация прыжка от мода Jump animations как предустановленная замена анимации (в МСМ меню будет выбор)
— PCEA2 не будет инициализироваться во время интро Скайрима (во избежании «универсальных ошибок»)
— Новое (для модеров): Новая функция «Т», чтобы заново определить анимационные эвенты («триггеры») для альтернативной анимации в под папках PCEA2

Мод идёт в комплекте с некоторыми популярными паками анимаций, а значит — не требует их отдельной установки.

  • New Animation Pack от xp32
  • Immersive Animations от Bergzore
  • YY Anim Replacer — Mystic Knight от yukl
  • YY Anim Replacer — Zweihander от yukl
  • Oriental Swordsmanship animation от East Asia by cyh0405
  • Magiska — Spell Casting Animations от Feuertin
  • Pretty Female Idles от dualsun (1 анимация)

Требования:
1. SKSE
2. SkyUI
3. FNIS 6.2 и выше

Установка: вручную или через NMM/MO.
Установка вручную — скопируйте содержимое папки DATA в вашу папку DATA.
После установки файлов любым способом:
— Запустите FNIS генератор по адресу: Data/tools/GenerateFNIS_for_Users.exe (у вас уже должен быть установлен мод «FNIS»)
— Выберите необходимые действия исправления в окошке «Патчи». Если вы используете скелет XP32, вам потребуется, по крайней мере отметить патч «Фикс скелета рук»
— Нажмите кнопку «Обновить FNIS Behavior».

МСМ меню:
Тут всё просто. Слева будут названия папок с анимациями, которые можно выбирать. Хоть все сразу. О папках читайте ниже.
Справа — кнопка применения анимаций. Перед выходом из меню не забудьте поставить там крестик.

Что надо знать.
1. Мод позволяет иметь 10 наборов анимаций. Папки с анимациями пронумерованы от 0 до 9. Т.е. 7 уже есть в моде, можете ещё 3 набора до установить (читайте ниже).
2. Номера папок имеют приоритеты. 0 — самый низкий приоритет, 9 — самый высокий.
«Система динамических анимаций устроена так, что не может комбинировать папки между собой. Т.е. если в папке 0 лежит анимация походки и стойки, а в папке 9 — только анимация стойки, то при активации папки 9, даже если будет активна папка 0, будет анимация стойки из 9, а походка будет ванильной.» — так написано у автора, не дословно, но так. На практике я проверила — всё комбинируется. Анимации из папки с номером выше заменяют такие же из папки с номером ниже, при этом остальные не заменённые анимации работают. То ли я чего «не до поняла», то ли информация устарела, то ли колдовство какое.

Как добавить свой набор анимаций:
По адресу MeshesactorscharacteranimationsFNIS_PCEA2 расположены папки с анимациями. Обратите внимание на названия — впереди должна стоять цифра от 0 до 9. О приоритетах читайте выше.
Для добавления любых анимаций:
1. Создаёте папку, название которой начинается с цифры от 0 до 9, далее, без пробела, название латинскими буквами.
2. Помещаете в эту папку файлы анимаций из любимых модов.
3. Запускаете FNIS и генерируете заново.
Примечание: если вторым символом поставить «_», то эти папки будут выбраны по-умолчанию.

Известные проблемы:
Не работают анимации прыжков в бок/назад. Автор пока сам не знает почему.

Анимация в Unity для чайников — проблемы и решения

При разработке игры для нашего прошлого джема мы столкнулись с рядом неожиданных проблем касательно анимации персонажей. В качестве постмортема тогда я написала, что именно у нас вызвало затруднения и какие неочевидные параметры Unity нам очень пригодились.

Для этого фестиваля я неспешно делаю в одиночку 2D-платформер по одной из своих завалявшихся идей. И да, здесь опять анимация, но на этот раз не трехмерная, а спрайт-шитовая. Как оказалось, хоть статья была написана давненько, а проблемы все еще актуальны. И теперь я могу дополнить ее еще и пунктом для спрайтовой анимации.

Эта заметка будет:

— полезна тем, кто только начинает работать с анимацией в Unity;

— довольно бесполезна для опытных разработчиков, хотя мне было бы приятно получить от них фидбэк;

— совершенно не нужна тем, кто не имеет ничего общего с Unity и Mecanim. Разве что они хотят почитать про Mixamo.

Если кто не в курсе, Mixamo — это облачная служба автоматического риггинга и банк персонажей и анимаций, а Fuse — это приложение для создания гуманоидных моделей (редактор типа как в Sims), которые потом можно анимировать через Mixamo. К сожалению, в 2015 году все это купила Adobe, которая полностью забила на дальнейшее развитие этих продуктов и прикрутила Fuse к своему Creative Cloud. Что примечательно, все это сейчас совершенно бесплатно — бери не хочу, только зарегайся в Adobe и поставь себе кучу их ненужных сервисов.

Основные затраты по времени у нас вызвал тот факт, что для разных двуногих моделей, на вид одинаковых и с одинаковым скелетом, нужны разные анимации. В частности, если вы натаскаете разных человечков с Mixamo и скачаете для одного из них весь набор нужных движений, эти анимации к другим человечкам подходить не будут. С другой стороны, если вы сделаете персонажей в Adobe Fuse (потратив несколько часов на его установку и полчаса на запуск), то скачанные с ними Mixamo-анимации будут взаимозаменяемы. Если бы кто-то сказал нам об этом в самом начале, это бы сэкономило уйму времени, которое мы в итоге потратили на закачку тонны анимаций, их смену и (неочевидный момент) вставку оружия в руки персонажей, что нам пришлось делать дважды (а это ужасно муторный процесс).

Я покажу две кнопочки на Mixamo, которые нам помогли ускорить закачку всего этого добра. Первая из них — в форме черепушки — снимает скин с предпросмотра, позволяя значительно повысить производительность сервиса и предотвратить его падения.

Вторая полезная фишка — в окошечке загрузки, это возможность не загружать скин (модельку), а скачать только анимацию, уменьшив вес загрузки раз в 10. Таким образом, вам нужно только одну анимацию скачать с моделью (with skin, не забудьте пометить как-нибудь этот fbx, чтобы в юнити проще было его найти), а все остальные можно оставить без нее.

Хорошо, модельки и анимации у нас есть, только при импорте в Unity все текстуры куда-то пропали. Что делать? Про магию импорта моделек из Mixamo хорошо рассказывается здесь: https://www.youtube.com/watch?v=xOeodlLTx8g

А на скриншоте ниже показаны две волшебные кнопки, которые и достают текстуры и материалы из моделек (здесь и далее версия Unity 2017.4.0f1).

И не удивляйтесь, если у вас получаются вот такие ресницы:

А дальше мы переходим к самому интересному…

Корень всех проблем, как обычно, заключался в том, что мы успели совершенно забыть даже то немногое, что знали про Mecanim ранее, и начинали практически с нуля. В общем, вот вам список проблем, над которыми нам пришлось помучаться.

Проблема 1: как зациклить анимацию (например, ходьба или idle). Или же наоборот, не зацикливать. Мы помнили, что где-то этот флажок был, но проискали его целый вечер. Вот он:

Проблема 2: как прервать анимацию другой анимацией. Например, как запустить анимацию выстрела в момент нажатия кнопки игроком, не дожидаясь окончания 4-х-минутного айдла «я-держу-ружье». А по умолчанию Unity делает именно это. Когда вы создаете переход, ему автоматически ставится флажок Has exit time — это значит, что переход между анимациями начнется тогда, когда первая анимация подойдет к концу. Если нужен переход в момент триггера, просто снимите этот флажок.

Проблема 3: как задать нужный момент в анимации. Например: вот у вас есть анимация «бью-мечом». Она состоит из замаха, собственно момента поражения врага и возвращения меча на место. Любая анимация какой-либо атаки строится по этому принципу. Как определить момент, в который нужно сделать проверку попадания и вычесть хиты? А точнее, как это сделать лучше и правильней? Потому что для этого есть как минимум три способа:

  • Повесить коллайдер на оружие и проводить проверку попадания по физике. Честно. Зато дополнительный коллайдер жрет мощность, хотя мог бы этого не делать. Даже если его включать только на время атаки. В нашей игре мы сделали вначале коллайдеры. И они работали… до какого-то момента, когда они работать стали нестабильно. Я почти целый день пыталась выяснить, в чем же, собственно, причина, и не нашла ее. Зато официальный туториал Unity меня убедил, что триггер-коллайдеры должны быть статичными. Пришлось уйти от коллайдеров. (Апдейт: триггер-коллайдеры могут прекрасно работать с кинематическими rigidbody)
  • Анимационные события. Мощно. Удобно. Если бы не тот факт, что анимации, идущие вместе с моделями, закрыты для редактирования. Для того чтобы повесить на них ивенты, надо создать новую анимацию в Юнити и скопировать туда все точки нужной анимации вручную. Это не сильно долго, но довольно муторно, если у вас этих анимаций хотя бы десяток. И хорошо бы это пришлось делать один раз — но ведь анимации подлежат постоянным изменениям, и тогда придется все опять переделывать. Как бы то ни было, этот способ лучше всего подойдет в том случае, если у вас на одну атаку несколько разных анимаций (для разнообразия) или больше одного момента атаки в анимации.
  • Параметр задержки, настраиваемый в редакторе. Лучше всего, если он будет в долях от длительности анимации атаки (во многих случаях подойдет 0.5) — тогда будет проще менять анимации при необходимости. Мне показался этот вариант самым простым и удобным.
Читать еще:  Играй с королевским достоинством в Just Jewels™ Deluxe

Проблема 4: состояние смерти. Trigger vs bool. Триггер, если кто опять не в курсе, это такой bool-параметр анимации, который сам выключается где-то там после запуска этой анимации. Очень удобно использовать для запуска тех же анимаций атаки. Когда именно он выключается и что там потом происходит — этого никто не знает. И в этом кроется огромная проблема. У нас персонажи после проигрывания анимации смерти по триггеру снова возвращались в idle-состояние. И происходило это даже тогда, когда уже было полностью исключено как в коде, так и в аниматоре (см. скриншот). Так и не выяснив причину, мы решили поменять тип параметра на bool. И столкнулись с еще одной неприятной проблемой: персонажи зависали в начале анимации смерти и дальше не продвигались. Происходило это от того, что анимация смерти все время переходила сама в себя. Как оказалось, это лечится простым флажком:

В общем, триггеры — для единомоментных событий (прыжок, атака), а для перехода между состояниями (например, смерть-жизнь, спокойствие-битва) — только буллеаны.

Проблема 5 (для классических спрайтовых анимаций):

И вот в очередной раз принимаемся за анимацию главного персонажа, вроде бы все на месте, но откуда-то возникают задержки (заметите на гифке?)

Оказалось, что проблема в длительности переходов. По умолчанию юнити делает плавные переходы между анимациями, для костевых и параметрических анимаций это подойдет, но для спрайт-шитов это ни разу не нужно. После зануления длительностей переходов сразу стало видно, что не так в машине анимаций, и я смогла ее довести до приемлемого состояния. (На скриншоте в этот раз Unity 2019.2)

Как обрабатывать анимацию, в которую зашито движение (root motion). Благо, большинство анимаций Mixamo имеют флажок In place, который отключает рут-моушн. Но что делать, если вам хочется использовать в игре подобную анимацию, а возможности убрать у нее перемещение нет? Как отключить его или хотя бы скормить это перемещение navmesh-агенту — мы так и не придумали. Поэтому неписи в нашей игре прыгают от врагов, а потом оказываются в начальной точке, и все это выглядит так, будто они телепортируются вокруг зомби (в целом довольно сносно:)) Если кто сможет предложить иное решение, помимо «не использовать анимации с вшитым движением» — welcome, очень жду. И да, на флажок enable root motion в компоненте аниматора мы пробовали нажимать:)

Редактирование анимаций.

Рекомендуемые сообщения

Последние посетители 0 пользователей онлайн

Ни одного зарегистрированного пользователя не просматривает данную страницу

Похожий контент

Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте.
Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте. Версия:2.0
Язык:не требуется
Конверсия под SE: Я
Данный мод является только конверсией аналогичного
Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте. с версии ЛЕ. 1. Все анимации и бихевиор файлы конвертированы под х64.
2. Мод протестирован в игре. Нерабочих анимаций мне не попалось.
Описание:
Уже много вышло разных анимаций для игры Скайрим, таких как изменение оригинальных анимаций движения игрока, анимации стоек, боя, просто походки и бега и так далее, есть различные моды на добавление новых анимаций движения, но вот появился ещё одни мод, куда более масштабный чем все ранее выходившие моды на анимацию движений! Этот пакет включает в себя свыше 560 анимаций, которые изменяют практически все задействованные игровые анимации, разных типов. Почти каждая анимация Скайрима была заменена. Видео показывает только небольшое количество общих изменений, так как просто нереально показать все анимации, на это уйдет достаточно много времени, если показать все.
Анимация в этом пакете была подобрана и настроена для использования с женскими персонажами и NPC. Однако пакет включает в себя и папку для мужских персонажей и NPC, но она в настоящее время имеет только ванильные, игровые анимации, я так и не понял зачем они и что они заменяют и заменяют ли вообще, или будут использоваться такие же анимации как и для женских персонажей, непонятно.
Подробнее:
— Свыше 560 заменителей оригинальных игровых анимаций всех типов и направлений
— Заменены все боевые анимации для различных видов оружия, одноручных, двуручных, дуал и выпады, развороты в бою и так далее
— Заменены все анимации с кастом магии
— Заменены все анимации верховой езды
— Заменены все анимации связанные со скрытным режимом, с перекатом
— Заменены все анимации для чтения заклинаний
— Заменены все анимации бега, шага, прыжков, уклонений, разворотов, влево, вправо и так далее
— Заменены все анимации MomoAJ, акробатических прыжков
— Заменены все анимации стрельбы из лука и арбалетов (поддержка Dawnguard)
— Присутствует анимация трансформации в лорда вампиров (если я не ошибаюсь файл mt_vampirelord_transform.hkx)
— И много, много других заменителей игровых анимаций и все в одном пакете
Видеообзор
Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте. Требования:
Skyrim SE

Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте. Процесс установки полностью аналогичен версии ЛЕ
Перед установкой:
— Сделайте резервное сохранение папок animations и behaviors: (если таковые папки у вас имеются, если нету, то ничего не надо сохранять)
Datameshesactorscharacteranimations
Datameshesactorscharacterbehaviors
— На всякий случай, чтобы потом не было мучительно больно, если вам не понравится мод и вы захотите вернуть все обратно
Установка: (можно вручную или через NMM менеджер)
— Поместите папку Data из архива в папку с игрой (не Data в Data), подтвердите слияние папок и файлов
— На заметку. Все анимационные файлы в одном общем пакете, так что если кто понимает какие файлы за что отвечают могут просто не ставить то что не надо, описывать какие файлы к какой анимации относятся просто очень и очень долго, ведь для каждой анимации из 560 вариантов невозможно описать и представить весь список.
— Далее после установки заходим в FNIS, по пути Data/Tools/GenerateFNIS_for_Users и запускаем исполняемый файл GenerateFNISforUsers.exe, в открывшемся окошке 1. Отмечаем галочками три патча внизу окошка:
GENDER Specific Animations (Спец анимации по половой принадлежности)
SKELETON Arm Fix (Фикс скелета рук)
xp32’s Momo Acrobatic Jump (акробатические прыжки)
2. Жмем кнопку «Обновить FNIS behavior» и ждем пока все анимации сгенерируются и добавятся в лист, после завершения вам напишут в окошке сколько анимаций добавлено
3. У вас возможно появится предупреждение: «1 non-FNIS behavior files in meshescharacterbehaviors. They CAN be the cause of Skyrim incompatibility»
Это предупреждение может быть проигнорировано, закрываем окошко FNIS и все, идем играть

Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте.

Описание: добавляет в Скайрим анимации с креатурами(пока 2-е
Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте. С Матерью-Дымок —
Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте. и Драугром)

Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте.
. в последствии возможно будут добавлены еще анимации.

Требования: стандартные для модов такой тематики, SLLoader

Установка: скачать, разархивировать в любом месте на компе, скопировать папки по путям в игру, прогнать фнисом(желтый ярлык), в игре: в «Настройке модов» подключить анимации в разделе SLLoader->HoltCreatureSL

Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте.

Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте. v.0.1

Маленький и простенький мод, который предоставляет возможность вашей ЖГГ иметь близость с двумя НПС без всякого выноса мозга о позициях, крышках и прочего.

Используется только одна, самая удачная, анимация от АМРА72 — 5101

Все очень просто и быстро!

SexoutAMRA_Anim.esm (0.34 или выше)

Анимации от
Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте.

18+
Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте.

Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте.
Установка: в DATA.
Требования:
Sexout.esm
SCR.esm
Version 0.41а (в соответствии с выпуском анимации ARMA72)
Включает в себя анимации секса от ARMA72, которые предназначались для моддинга и не вошли в общую кучу.
Присутствует скелет и анимационный пак 0.41 с лицевой мимикой.
Внимание: ESP файл не подключать.
Добавлены все анимации, включая альтернативные..
Плюс, я добавил несколько дополнительных..
Потребуются для других модов. Будут обновляться по мере выхода новых анимаций..
ВНИМАНИЕ: Этот плагин не интегрирует анимации в SexoutNG — без модов, требующих этот ESM, бесполезен.

Анимационный ресурс от АМРА72 (оригинал) версия
Скрытое содержимое
Для просмотра скрытого содержимого необходима РЕГИСТРАЦИЯ на сайте. с лицевой анимацией.

Источники:

http://habr.com/ru/post/348336/

http://modroom.at.ua/publ/zov_pripjati/rabota_s_konfigami/animacii_nps_zov_pripjati/12-1-0-160

http://tesall.ru/tutorials/the-elder-scrolls-modding/modostroenie-skyrim/1089-idlemarkers-ot-sozdaniya-do-rasshireniya-imeyush-ihsya

http://gamer-mods.ru/load/skyrim_le/gejmplej_i_animacija/fnis_pcea2/16-5-0-3568

http://dtf.ru/s/festival/126097-animaciya-v-unity-dlya-chaynikov-problemy-i-resheniya

http://gamesource.org/topic/5937-%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-%D0%B0%D0%BD%D0%B8%D0%BC%D0%B0%D1%86%D0%B8%D0%B9/

Ссылка на основную публикацию
Статьи c упоминанием слов:
Adblock
detector