Додаємо моделям колізії

Туторіал по створенню моделей зіткнення

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


Колізії складної форми для статичних об'єктів.

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

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

Можна експортувати модель, не забувши відзначити чекбокс 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 прапори, деякі параметри, що відповідають за фізичні взаємодії, матеріал моделі, а так само включити вертексних освітлення в геометрії моделі.

Дещо про параметрах.

Ну і власне результат

У першому ролику використана система руху MO_SYS_SPHERE_INERTIA, у другому - MO_SYS_BOX_STABILIZED.