Скелет для Oblivion.

Бипед для TES IV: Oblivion для экспорта анимации.

Необходимый инструментарий:

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

Oblivion skeleton max2010 1.2 Mb

В файле есть несколько слоев для удобства:

I. Новый бипед.

При импорте файла \meshes\characters\­_male\skeleton.nif в сцену получаем базовый скелет построенный из костей. Так же после импорта он показывается в виде линий, чтоб увидеть привычные кости нужно выделить весь скелет и на правой панели открыть раздел Display, в свитке Link Display снять галку Link Replaces Object.

Для экспорта одежды/брони больше уже ничего не нужно, кроме импорта частей тела для переноса скининга. Но для анимации данный скелет подходит плохо. Прежде всего полное отстутствие средств контроля, констрейнов инверсной кинематики и средств работы с позами. Разумеется и в таком виде анимировать можно. Вручную. Но это будет долго и неудобно. По любому надо делать риг для управления скелетом. И, внезапно, в максе уже есть готовый Biped. Даже имена костей теже самые, что намекает об его использовании в беседке.

При создании бипеда ему нужно задать следующие параметры:

После чего можно выравнивать по импортированным костям. Работа не трудная, но требующая аккуратности.

У импортированного скелета имеется ряд дополнительных костей. Их нужно перелинковать с импортированного скелета на бипед.

Вот как раз про кости ForearmTwist и UpperArmTwist при анимации и забывают.

II. Я не понимаю твою систему, но вижу, что она работает.

Кость ForearmTwist не столь критична. Например в реплейсере тел HGEC про эти твисты автор вообще забыл. Кость в скининге присутствует, но почти не влияет на геометрию.

Тем не менее лучше всего сделать управление от кости Bip01 R \ L ForeTwist. Напрямую использовать стандартный бипедовский ForeTwist не получится, геометрию слегка перекручивает. Поэтому для ForearmTwist в контроллер вращения вместо Euler XYZ сперва ставится контроллер Rotation List. Оригинальный Euler XYZ сохраняется, а ниже нужно добавить контроллер Orientation Constraint. В качестве цели указать бипедовский ForeTwist и не забыть галку Keep Initial Offset. Это для сохранения изначального вращения кости ForearmTwist. Так же можно частично ослабить вращение добавив кость Forearm.

Но основная сложность с костью UpperArmTwist. При движении руки она вращается, на глаз, градусов до 40 относительно кости UpperArm. Использовать стандартный бипедовский твист UppArmTwist невозможно, так как его состояние в Т-позе сильно отличается и по координатам и по вращению от импортированной кости UpperArmTwist. Сделать констрейн аналогично ForearmTwist можно. Это самый простой путь, но результат немного отличается от оригинала. Так что, тем кто любит трудности, представляю мини-риг, при котором вращение UpperArmTwist отличается от оригинала всего на несколько градусов. Приступим.

1. В нулевых координатах ставится поинт _RootAddonConstrain, фактически это для удобства, чтоб прилинковать к нему остальные цепочки рига. Это сделано, чтоб отделить их от иерархии бипеда.

2. Следующий поинт _c_L_Clavicle выравнивается (позиция/вращение) по кости Bip01 L Clavicle. Чтоб поинт сохранял позицию и вращение плеча ему ставятся контроллеры Position Constraint и Orientation Constraint. Настройки по умолчанию.

3. Следующий поинт _c_L_ClavicleEnd выравнивается (позиция/вращение) по кости Bip01 L UpperArm. Контроллеры никакие не нужны.

4. Следующий поинт _c_L_UpperArm линкуется к _RootAddonConstrain. На позицию/вращение ставятся контроллеры Position Constraint и Orientation Constraint использующие Bip01 L UpperArm в качестве цели. Настройки по умолчанию.

5. Следующий поинт _c_L_UpperArmEnd линкуется и выравнивается по _c_L_UpperArm, и сдвигается к UpperArmTwist.

6. Следующий поинт _c_L_SmoothRotation линкуется к _c_L_ClavicleEnd (п.3). На вращение ставится Orientation Constraint с двумя целями: _c_L_ClavicleEnd (п.3) и _c_L_UpperArm (п.4).

7. Следующий поинт _c_L_LookAtUpperArmEnd ставится все в той же точке. На вращение назначается контроллер LookAt Constraint, в качестве цели _c_L_UpperArmEnd (п.5). Нужно изменить настройку Select Upnode вместо World на поинт _c_L_SmoothRotation (п.6)

8. Наконец, на кость UpperArmTwist, на вращение ставится контролер List Constraint и дополнительный LookAt Constraint. В качестве цели _c_L_LookAtUpperArmEnd (п.7), Select Upnode вместо World меняется на поинт _c_L_LookAtUpperArmEnd и выбирается ось Y в разделе aligned to Upnode Axis.

Фактически можно было бы сразу указать для UpperArmTwist LookAt на _c_L_SmoothRotation, но как оказалось такой двойной LookAt как сделан выше более плавный и более точный. Осталось все повторить для правой руки. Там единственное уточнение, что для UpperArmTwist надо поставить галку Flip для Z в разделе Source Axis. Это из-за зеркального отражения костей.

III. Вариант экспорта.

Чтобы не мучится с лишними костями и пустышками есть следующий способ экспорта. Сперва разумеется грохнуть все ненужное (4 последних слоя с геометрией и оригинальным скелетом). Затем экспортировать в FBX-файл.

Поставить галку Bake animation и указать временной интервал анимации. Оставить шаг по ключу на каждый кадр.

После этого нужно импортировать FBX-файл в новую сцену и удалить все не нужные кости из иерархии скелета.

А именно оканчивающиеся на Nub, которые расположены на концах пальцев (рук и ног) и на голове, кость Bip01 Footsteps и собственные твисты бипеда UppArmTwist, ForeTwist.

Не перепутать! У бипеда кости называются UppArmTwist и ForeTwist их и надо удалить, а мини-риг с обливионом работают с UpperArmTwist и ForearmTwist.

Так как каждой кости уже записаны ключи в каждом кадре, то мини-риг тоже более не нужен и его следует удалить.

В качестве опции можно отфильтровать количество ключей, номожно и забить болт на это, т.к. размер 5-секундного KF-файла к меня уменьшился с 264кб до 85кб. Было бы из-за чего волноваться. Чтобы все же сделать фильтрацию надо открыть Track View - Curve Editor. И выделив все кости, выделить все их ключи и поставить им линейную интерполяцию. А иначе с безье-интерполяцией фильт удалит ключей в 5 раз больше. И с большими допусками. Но это решается уменьшением порога Reduce Keys.

Выбрать в меню Keys -> Reduce Keys (или по правому клику) с величиной не более 0,2. Обработать весь скелет займет довольно много времени.

В финале добавить к Bip01 трек Notes и создать ключи для групп анимаций.