Анимация пластинчатого элемента
Orientation constraint.
Но можно использовать и другие типы.
LookAt например.
Издержкой этого метода будет расстановка ключей анимаций в каждом фрейме!
Что повышает размер файла. Однако, это же улучшает плавность анимации.
А при наличии множества контроллеров, для ФФЕ, существенно повышает время экспорта!
Как например с этой кирасой.
МАХ может на долго зависнуть! Минут 10-15.
Повторный импорт модели с прогонкой через Reduce Keys в утилитах редактора кривых, мог бы показаться хорошим методом.
Но часто, результат себя не оправдывает.
Времени занимает много, а финальная анимация может быть серьезно ухудшена!
Подробнее см. внизу страницы.
Для оптимизации файла, можно прогнать оный через FBX, либо посмотреть в сторону утилит запекания анимаций.
Которые позволят сократить кол-во кадров в несколько раз.
Но не смотря на описанную издержку, это очень удобный и быстрый способ создать и запечь анимацию в ниф файл!
Метод подойдет, как для захвата анимации частей брони, так и для улучшения анимации существ.
Базовые требования.
Скелет с базовой анимацией. Base_Anim сиречь. Здесь в качестве примера.
ФФЕ или ТЕС экспортеры, т.к. Нифтулз в пролете.
1. Подготовить анимацию, сиречь открыть файл с базовой анимацией в МАХе.
Можно добавить части Бетер Бодиез, или какую иную
скинненую деталь.
Это полезно для лучшего размещения деталей, но для самой анимации.
Удалить лишние кости!
Т.е. которые явно не будут использованы при создании анимаций.
Части ног, кисти рук и еще ряд костей удалены, т.к. они не будут использоваться в анимации.
Если в скинной части возникли
"сопли" - игнорируем.
2. Теперь следует создать собственно сами элементы которые будут анимированны!
В данном случае, это пластины наплечников!
Каждая пластина отдельный элемент!
3. Устанавливаем точки опоры.
Т.е. смотрим где у элемента правильно разместить точку, вокруг которой он должен вращаться.
4. Теперь следует слинковать элементы.
Select&Link и от первых к последним!
В данном случае, от нижней пластины и выше. 1->2->3->....
Пластины линкуются последовательно, одна к другой.
Самая последняя (здесь большая пластина на основании плеча) (сейчас) ни к чему не линкуется!
Т.е. связи создаются только между пластинами, но не со скелетом!
5. Теперь можно переходить к созданию самой анимации!
Выбираем нижнюю пластину и назначаем ей контроллер.
Assign controller ->Rotation->Orientation constraint.
Выделяем его в списке и смотрим ниже - Rotation List.
Выделяем его здесь.
Значение Weight 100!
Add Orientation Target - указываем цель на которую будет смотреть пластина.
Здесь это Bip01 L UpperArm.
Значение Weight 100!
Keep Initial Offset - ставим флаг, это зафиксирует стартовое положение.
Отчего все настройки следует проводить только в нулевом фрейме анимации!!
Теперь выделяем следующую пластину и проводим те же действия.
Assign controller ->Rotation->Orientation constraint.
Orientation constraint - значение Weight ставим 90 (к примеру).
Т.е. каждая следующая пластина будет иметь меньше воздействия от целевого объекта.
А в Add Orientation Target указываем первую пластину!
Т.е. ту, что настраивали шагом выше.
Последняя, самая большая пластина, может иметь значение около 20. 10, 15, 20, 25.
Значения веса могут быть не равномерны! 10, 30, 15, 45 (к примеру).
Если получающаяся анимация не будет устраивать, что будет хорошо заметно по скиненному объекту, то достаточно будет менять значения силы в этом разделе. И смотреть, как реагирует на это цепочка оных.
Собственно это практически все...
6. После назначения контроллера для всех пластин, линкуем и самую первую пластину к BIP 01!
Такой метод работы с анимациями показал наиболее годный результат.
Т.е. линковка первого объекта в цепочке к корню скелета ПОСЛЕ наложения контроллеров.
Если не слинковать первый объект в цепочке со скелетом, то (наплечник) останется приклеенным к месту, что негативно скажется на получении анимаций.
Но если сделать это в самом начале, анимации могут съехать... т.е. проигрываться не корректно.
А также возникают иные проблемы при перелинковке объектов и пр.
7. Теперь остается покрутить трек с анимациями и посмотреть как будет вести себя наплечник.
Затем подбирать наиболее оптимальные значения силы воздействия Bip01 L UpperArm на пластины.
Но некоторые моменты придется маскировать правкой геометрии, например делая пластины толще...
8. настроив один (наплечник) переходим к второму!
Все тоже самое, только в качестве цели указывается другое предплечье. Bip01 R UpperArm
9. Теперь... можно удалить все лишнее кроме самих наплечников и костей скелета...
Это ускорит экспорт.
Да, жмем EXPORT.
Не забываем сохраниться перед этим моментом!
Если сработает ТЕС экпортер, то лучше использовать его.
Он не создает лишнего мусора в сцене.
Экспорт со снятым флагом controllers.
10. Переходим в нифскоп.
Открываем модель любого (
ванильного, или что лучше из Симфонии) наплечника, или кирасы (
без скина желательно!).
Зависит от того что делалось, отдельно плечи, или вся кираса.
Во втором окне открываем вновь полученный файл.
В котором находим группу с пластинами.
И ничего не меняя, как есть, копируем и вставляем в ранее открытый файл!
Теперь остается совместить позиции, так чтобы добавленные детали оказались на подходящих местах.
После этого, удаляем исходные сетки, оптимизируем и сохраняем под иным именем.
Флаги
контроллера не меняем! Да, нужен именно 12ый. Т.к. это метод
синхронизации.
Можно идти в редактор и подключать модель в игру.
Дальше можно попытаться сделать кирасу и латную юбку.
Принцип все тот же.
Создаем цепочку объектов, указываем Orientation и в нем цель.
Можно указать несколько целей!
Это актуально для латной юбки, которая должна реагировать на движение ног.
Кроме "костей" можно указывать и МИР, т.е. Add World as a Target это фиксирует ориентацию по глобальным координатам.
Можно смешивать цели, меняя им вес в настройках ниже.
Т.е. есть два поля Weight!
Одно определяет глобальное влияние контроллера на объект, второе смешивает значения назначенных целей.
Такие наплечники лучше использовать только как часть кирасы...
Конечно можно и по отдельности... но это будут много сложнее.
Поскольку движок имеет "оптимизацию"
отзеркаливая левый наплечник на правое плечо.
Т.е. вся анимация будет перевернута!
Поскольку создаются два наплечника, то на слот Left pauldron следует использовать модель с захватом анимаций левого плеча.
А на правый - правого.
Конечно, можно и в МАХе сделать зеркальную копию наплечника, которая будет заранее перевернута, что в плане сеток, что в плане позиции - тогда игра поставит ее в правильную позицию.
Но это приличный такой геморрой((
Отчего проще сделать такую анимацию частью кирасы.
Проблем с отзеркаливанием не возникает.
Поэтому, лучше создавать сразу оба наплечника, а потом использовать их, как часть кирасы.
Т.е. в настройках бодипартов указать их частями кирасы, а не отдельными наплечниками.
Т.е. создаются два ниф файла с левым и правым плечами, которые также раздельно прописываются в редакторе.
Но дальше, они прописываются плечами в некую кирасу, а не как независимые элементы гардероба.
Если же анимация создавалась уже вместе с кирасой, то пускай они здесь и остаются!
Помимо собственно Orientation Constraint можно применять и прочие конструкции.
Wire Parameters и пр. что позволит создавать более точную анимацию.
Например, выше показанной кирасе, на латную юбку было бы хорошо добавить контроллер поднимающий пластины.
Т.е. не только фиксирующий ориентацию, но и влияющий на их смещение.
Было бы логично видеть, что пластины образуют гармошку и немного втягиваются во внутрь при подъеме ноги.
В отличие от реактора, этот метод, интерактивен.
Меняем анимацию скелета, меняются и анимации связанных деталей.
Также, не требуется создавать контрольные ключи и вся анимация может быть "запечена" сразу.
Метод не идеален, но весьма прост.
Подойдет лучше для доработки анимации существ, чем для анимирования частей брони и подобного.
Отлично подходит для улучшения анимации ванильных существ!
Например, хобот пепельного упыря, может быть легко улучшен.
Только вместо пластин, создаем обычную цепочку костей.
Которую завязываем на руки, или торс упыря. Сиречь на другие кости его скелета.
Из самых больших минусов это:
- создание 10000 ключей.
Т.е. в каждом фрейме будет создан ключ, что делает файлы довольно увесистыми (2, 4 и более МБ).
Впрочем, игра, как кажется, не сильно переживает из-за этого.
Исправить это, в принципе, можно импортом готовой модели обратно в МАХ, где применить:
Graph Editors menu > Track View — Curve Editor or Track View — Dope Sheet > Select the keys you want to reduce in the Keys window > Keys menu >Reduce Keys
Где задать число прорежаемых ключей.
Т.е. в теории это должно сократить кол-во ключей в разы, при этом сохранив анимацию практически без видимых изменений.
Но, срабатывает это не всегда...
Еще некоторый "минус"...
Это типы ключей LINER, т.е. не получается создать тип QUADRATIC или TBC.
Возможно ошибка модулей экспорта, либо некие иные ограничения.
Попытки прописать в Assign Controllers типы, которые дадут более качественные переходы ключей, результата не принесли.
Не сказать, что это критично, но это есть.
Из больших плюсов, кроме простоты метода:
- Возможность размещать текстурные эффекты на подвижных частях брони :D
Т.е. сверкающая и подвижная кираса это возможно!
Конечно же, подвижные детали будут внушать больше, чем статичные.