Oblivion Bow.

Новая глава о познании добра (экспорт новых моделей) и зла (в движок Обливиона) поведает об экспорте луков.

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

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

1. Пролог (настройки сцены).

Прежде всего хочу напомнить, что единицы измерения в Обливионе (так же как в Морровинде и Фаллаут3) можно принять за 128 единиц = 180 см (высота фигуры игрока). Поэтому надо или импортировать один из оригинальных луков для соответствия масштаба или делать приблизительно 90-100 единиц в высоту и где-то 15-20 единиц в ширину. Это для примера. Размер может быть любым, главное чтоб красиво в игре смотрелось. В нулевых координатах по X,Y,Z будет располагатся точка захвата лука рукой. В проекции "вид сверху" модель должна выглядеть так:

Временная шкала таймлайна 0-18 кадров, при стандартной скорсти 30fps. Это важно.

2. Завязка (морфинг модели).

Для начала модель. Ну тут как у кого фантазия работает.

Для анимации луков применяется модификатор Morpher, поэтому нужна копия модели лука, но в натянутом состоянии. Если посмотреть nif-файлы оригинальных луков data\meshes\weapons\­goldensaint\bow.nif к примеру, то там есть два интересных нода. ArrowBone и ArrowHelper01. Фактически они не понадобятся, их можно и нужно copy/past-нуть в NifScope-е. Однако ArrowHelper01 дает информацию о позиции тетевы при натягивании лука. А именно по оси Х смещение -46 единиц от нулевых координат. К этому надо стремится при сгибании модели для морфинга.

Согнуть лук вручную можно используя например модификатор Bend (изгиб). Можно сделать при помощи модификатора FFD Box. Можно даже сделать цепочку костей и настроить инверсную кинематику. Это я перечислял в порядке усложнения.

После создания "натянутой" модели лука на оригинальную применяется модификатор Morpher (морфинг) и в первый канал загружается "натянутая" модель. Канал морфинга должен называтся BowMorph, это важно.

Теперь нужно расставить ключи анимации для воздействия канала BowMorph на модель:

3. Развитие действия (модель коллизии и экспорт).

Пара слов об модели для коллизии. Игровые движки оперируют следующими формами для расчета коллизии (в порядке сложности и скорости расчета):

  1. простейшие геометрические фигуры, которые можно описать 2-3 параметрами: шар, куб, цилиндр, капсула
  2. convex shape (если по научному, то выпуклый многогранник, который образует выпуклое множество. о как...);
  3. strips shape (в качестве примера можно привести тор, трубу, оригинальную модель, которой делается коллизия)

В Обливионе для таких объектов как оружие, мусор, "мировые" модели брони, которые появляются когда броню выкидываешь из инвентаря используются или простейшие геометрические фигуры или convex shape. Мне что-то физика с strips shape не встречалась, может плохо смотрел.

Создать модель для коллизии можно или вручную (что немного дольше, но результат более оптимальный по сравнению с автоматичесики методами) или использовать NifTools хелпер bhkCollProxy. На скриншоте слева ручная коллизия, справа хелпер. В хелпер можно добавить несколько объектов и он создаст единую convex-модель для них. Кнопка Clone Mesh хелпера создаст модель, с которой будет происходить дальнейшая работа, а сам хелпер нужно удалить.

На созданную модель коллизии добавляется модификатор bhkRigidBodyModifier. Выбирается материал по умолчанию (Metal к примеру), ставится тип коллизии Convex Shape и галка Enable Optimize с настройками по умолчанию. После этого создается еще один NifTools хелпер bhkRigidBody, в который добавляется мешь коллизии. Расположение хелпера - по центру объекта, он символизирует собой центр массы. Для лука можно в нулевые координаты расположить, в точку хвата рукой. У хелпера надо изменить следующие настройки:

  1. Material: Metal (или другой)
  2. Layer: Weapon
  3. Mass: 1-10 (не знаю в каких единицах, в кг или енотах, но ноль лучше не оставлять)
  4. Motion System: 4: Box
  5. Quality Type: 3: Debris

Для экспорта надо оставить только 3 объекта, лук с морфингом, модель коллизии и хелпер bhkRigidBody. Остальные объекты или скрыть или удалить. Настройки экспорта следующие:

Почему NIF w/o Animation? Потому что контроллер морфинга все равно будет записан правильно. Вот если бы были в сцене кости BoneArrow и BoneHelper01 с анимацией, тогда надо было бы выбирать экспорт nif с анимацией. Но их проще скопировать в NifScope.

4. Кульминация (обработка в Niftools).

Скопировать (Block -> Copy Branch / Block -> Paste Branch) из оригинального лука (к примеру data\meshes\weapons\­goldensaint\bow.nif) следующие ноды:

Изменить настройки коллизии:

Переименовать нулевой NiNode в Bow, а нод геометрической модели в Bow: 0.

Проверить флаги в нодах:

5. Эпилог (TES IV CS).

В разделе оружия создать новое, типа Bow с новой моделью. Иконка должна лежать в папке Data\Textures\menus\Icons\ (дополнительные папки внутри Icons разрешены). Размер иконки 64*64 пикселя, DDS DXT5 с альфа-каналом, но без mip-maps. Об этом можно прочитать например тут.

И да, нормальная текстуры нету из-за лени, поэтому одна моделька.