Под этим солнцем и небом мы тепло приветствуем Вас, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Бухта 2.0. Тёплая. Ламповая. Твоя.

Автор Тема: [Скайрим] Добавляем моделям коллизии  (Прочитано 16370 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн @perture

  • *
  • Сообщений: 7
  • Пол: Мужской
+6
Мне известно два способа добавления коллизий моделям. Первый – с помощью редактора 3ds Max, второй – с помощью утилиты ChunkMerge, которая в совокупности с утилитами NifConvert и ChunkExtract объединены в программе NifUtilsSuite, имеющей удобный графический интерфейс и просмотрщик моделей и коллизий. В данной теме я попробую разобрать оба способа.

Создание моделей с коллизиями в программе 3ds Max.

В составе Nif-плагина для 3ds Max есть консольная утилита NifMopp.exe, которая при экспорте модели с коллизией генерирует MOPP данные в блоке bhkMoppBvTreeShape. Однако из нескольких версий плагина, которые я опробовал, корректно работает только плагин для 3ds Max 2013 от товарища Ehamloptiran. Плагин находится в постоянной доработке, и может быть скачан по ссылке внизу сообщения. Поговаривают, что он работает и с 2014 версией редактора, однако я не пробовал. К слову, эта версия плагина вполне корректно экспортирует настройки шейдера, даже если в редакторе материал не настроен, тангент и бинормали, сводя последующие настройки модели в NifSkope к минимуму, а также правильно масштабирует коллизии как при импорте, так и при экспорте.

Таким образом для данного туториала подготавливать модели я буду в программе 3ds Max 2013 х64 с установленным вышеозначенным плагином.

Коллизии сложной формы для статичных объектов.

Начнем с создания коллизий сложной формы для статичных объектов, и для примера я воспользуюсь моделью дерева, сделав из него static, хотя модели деревьев в Skyrim имеют другую структуру. Процесс сводится к созданию меша, который будет играть роль модели столкновения, и добавления к нему модификатора bhkRigidBody. В идеале геометрия модели столкновения должна быть предельно простой, но при этом соответствовать геометрической форме модели, для которой создается. Можно, конечно, создать копию исходной модели, можно скопировать её сетку, для этого в модификаторе bhkRigidBody есть соответствующая кнопка, но подобные коллизии будут инициировать ненужные расчеты столкновений, что может негативно сказаться на производительности в игре. Я изобретать новую сетку не стал, скопировал с исходной модели. После импорта модели первым делом я свелдил все вершины с порогом 0,001 и назначил все фейсы на одну группу сглаживания. Далее накидываем модификатор bhkRigidBody, ограничение объема выбираем Packed Strips Shape, и нажимаем кнопку Clone Mesh.



В результате у нас копируется сетка красного цвета, которую мы и будем использовать в качестве модели столкновения. Можно переименовать её например в collision, и применяем к ней модификатор bhkRigidBody (у дерева этот модификатор после копирования сетки необходимо удалить!) с ограничением объема опять же Packed Strips Shape.



Остальные параметры можно не менять, на данный момент (версия плагина от 11/08/2014) они не работают. По этой причине данным способом нельзя создать коллизии с несколькими материалами, только с одним. Будем надеяться, что разработчик плагина в будущем добавит поддержку материалов.

Можно экспортировать модель, не забыв отметить чекбокс Collision.



Открываем модель в NifScope и донастраиваем несколько пунктов. У меня экспортировалось вот в таком замечательном виде.



Из настроек надо отредактировать флаги BSXFlags, выбрать материал в блоке bhkCompressedMeshShapeData, и включить отображение цвета вертексов в геометрии модели, с последующим обновлением массива вершин. Особенность плагина такова, что при экспорте цвет вертексов будет включен только при наличии у модели модификатора VertexPaint.



Основные настройки шейдера находятся в приемлемом виде сразу после экспорта, однако если необходимо поменять какие либо параметры, то заглядываем и туда. Посмотреть коллизии можно с помощью вьювера программы NifUtilsSuite, там видно все коллизии, даже те, которые не отображает NifSkope.



Правда этот вьювер некорректно масштабирует коллизии, в результате чего они не совпадают с моделью.

Теперь переходим в Creation Kit и помещаем наше дерево в игровой мир.



И далее смотрим в игре. Можно видеть, как в дерево втыкаются стрелы.



Коллизии формы выпуклого многогранника для объектов с поддержкой физики

Теперь создадим модель столкновений, имеющую форму выпуклого многогранника, называемого convex shape. Этот многогранник должен условно повторять форму модели, для которой создаётся, и не должен содержать вогнутых поверхностей. Коллизии вогнутой формы можно создать из нескольких выпуклых. В расчетах столкновений такие коллизии проще, поэтому используются в основном для различных предметов с поддержкой физики, хотя иногда используются и для статичных объектов.
Создавать коллизию будем на примере классического для подобных случаев объекта – чайника.



Для создания convex shape воспользуемся модификатором MassFX Rigid Body. Из настроек достаточно изменить только количество вертексов, из которых будет состоять наш многогранник. В зависимости от сложности геометрических форм модели оно должно составлять в большинстве случаев от 10 до 30 вершин, однако встречаются модели и с большим числом. Например, convex shape Звезды Азуры состоит из 68 вертексов. Их число должно быть по возможности минимальным, но чтобы форма получающегося многогранника соответствовала форме исходной модели. Здесь же мы должны посмотреть центр тяжести многогранника, и выписать эти цифры, позже понадобятся. Теперь нажимаем кнопку Convert to Custom Shape и получаем отдельный меш, из которого и сделаем коллизию, путем добавления ему модификатора bhkRigidBody с ограничением объема Convex Shape.



Модификатор MassFX Rigid Body у чайника необходимо удалить, и можно экспортировать модель в nif формат. Дальнейшую настройку произведем в NifSkope. Настроить надо BSX флаги, некоторые параметры, отвечающие за физические взаимодействия, материал модели, а так же включить вертексное освещение в геометрии модели.



Кое что о параметрах.

Layer – на физику не влияет, отвечает за цвет сетки в Oblivion Construction Set. Нужно ли его менять в моделях для Skyrim?
Center – центр тяжести модели. Сюда заносим результаты расчетов центра тяжести модификатора MassFX Rigid Body разделенные на 70. Однако есть некоторые нюансы. Например, для чайника я пренебрег смещениями по осям x и y, поскольку первое вызвано длиной носика, а второе несимметричностью многогранника. Смещение же по оси z я уменьшил, сместив центр тяжести вниз, чтобы чайник при падении вставал преимущественно на дно. Чем ниже центр тяжести – там больше такая вероятность. При нулевом значении он из любого положения будет вставать на дно, по принципу неваляшки.
Mass – масса модели. Нулевое значение делает модель неподвижной в игре.
Max Linear Velocity и Max Angular Velocity – максимальные линейная и угловая скорости соответственно. Поставил значения близкие к ванильным.
Motion System – система движения. В большинстве ванильных моделей с поддержкой физики используется MO_SYS_SPHERE_INERTIA или MO_SYS_SPHERE, однако с этими системами чайник неестественно долго раскачивается, мне больше понравился MO_SYS_BOX_STABILIZED. В видеороликах можно увидеть разницу.
Inertia – инерция движения модели. Информации нет, в большинстве моделей ненулевые значения присвоены только атрибутам m11, m22, m33. Чем меньше значение – тем быстрее будут колебания и раскачивания модели.
Radius – радиус действия системы движения. По моим наблюдениям значение должно составлять 1/400 – 1/800 часть от минимального габарита модели.
Остальные параметры как на скриншотах.

Ну и собственно результат. В первом ролике использована система движения MO_SYS_SPHERE_INERTIA, во втором - MO_SYS_BOX_STABILIZED.




Продолжение следует.

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

Спойлер - Полезные ссылки:

Оффлайн РЕДМЕНЪ

  • *
  • Сообщений: 17668
  • Красный мракобесЪ
[Скайрим] Добавляем моделям коллизии
« Ответ #1 : 13 Января 2015, 18:29 »
0
Полезный туториал, спасибо большое!
А такой вопрос: для тех, кто не владеет 3ds Max и NifUtilsSuite - есть действенные способы добавления коллизий в нифскопе (подразумевается Скайрим)?
Пробовал как-то добавить коллизию вот по этому тутору, за пару-тройку попыток ничего не получилось; т.е. вроде как в нифскопе коллизию вижу, а в игре прохожу сквозь. Запросто м.б., что что-то пропустил.
За NifUtilsSuite не брался, м.б. он и прост в работе, но бывают случаи тотального незнания англ. языка, что затрудняет процесс.
УЛЫБНИСЬ МИРУ И МИР УЛЫБНЁТСЯ ТЕБЕ!
Награды Маяк - за неоценимую помощь в создании Бухты 2.0 Мужественному и неотразимому Господину Бухты-2016 Друг императора - монетка на удачу! За то, что успевает, проделывает, умудряется и непонятный (ПП 2014 года) За участие в Битве сонетов За победу на новогоднем конкурсе скриншотов "Зимний пейзаж" Нетрезвому Драугру, правившему бал на Фестивале ведьм 13.10.13 Цветущий Кактус - лучшему критику Первого поэтического конкурса Бухты Синяя Роза - за победу на Первом поэтическом конкурсе Бухты За обширный и значительный вклад в развитие сайта и форума (ВП 2012 года) За обширный и значительный вклад в развитие сайта и форума (ПП 2012 года) Друг Скайрима - монетка на удачу! Победитель конкурса модмейкеров №1 по теме "Расы" Почётный житель Бухты (ВП 2011) Золотой Пергамент - за замечательные рассказы (ВП 2011 года)

Оффлайн akba

  • *
  • Сообщений: 315
[Скайрим] Добавляем моделям коллизии
« Ответ #2 : 13 Января 2015, 23:45 »
0
У меня вот вопрос, как добавить в ниф-файл (например одежду) анимацию частиц по вектору, или векторам. Я видел такое, реально работает, но как добавить?

Оффлайн akba

  • *
  • Сообщений: 315
[Скайрим] Добавляем моделям коллизии
« Ответ #3 : 10 Августа 2022, 17:47 »
0
У меня вот вопрос, как добавить в ниф-файл (например одежду) анимацию частиц по вектору, или векторам. Я видел такое, реально работает, но как добавить?
за семь лет никто не ответил...)))

Зайду еще через 7 лет...

Оффлайн el-sid

  • *
  • Сообщений: 1367
  • Пол: Мужской
  • Мира и Любви! Труда и Благополучия!Всем нам.
[Скайрим] Добавляем моделям коллизии
« Ответ #4 : 11 Августа 2022, 13:42 »
0
Как говаривал один старый , старый еврей: "Спасибо за доверие"     ;D

Веселый философ с tesgm.ru
"Жизнь--игра, помни об этом, когда играешь..."(из книги:  "Начинающему геймеру")
-"Счастье, это когда ты занимаешься любимым делом, а тебе за это, еще и платят..." М. Твен
Награды Почётный житель Бухты (ПП 2014 года)