DEVLOG #2 // ЗАТЕКСТУРЬЕ

Слышали фразу "Провалился за текстуры" ? Конечно слышали, я сам ею пользовался, а потом понял что провалился не за текстуры а за коллизию.

DEVLOG #2 // ЗАТЕКСТУРЬЕ

На выходных занимался коллизией объектов. Вообще если вы пользуетесь UE4/5 там есть 2 способа назначить коллизию. Самый распространенный и простой это включить в свойствах меша Complex Collision. В таком случаи движок берет сетку модели и делает из неё коллизию. Дешево и сердито. Но есть подводные камни. Как показал мой опыт, она не всегда корректно отрабатывает столкновения с другими объектами.

Например, у меня есть пол который сделан при помощи Complex Collision и предмет у которого есть физика и который так же имеет Complex Collision, при выкидывании предмета из инвентаря (допустим фонарик) тот просто пролетал сквозь пол. Неприятная ситуация.

Фиксится это использованием Simple Collision. Более простая коллизия объекта которая автоматически генерируется при импорте в движок. Главный минус простой коллизии в том что она не может быть вогнутой. То есть импортируя допустим дверной проем, движок просто накидывает куб на всю модель.

Пример. Движок накинул коллизию на всю модель
Пример. Движок накинул коллизию на всю модель

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

Но настраивать такую коллизию в движке очень долго и не всегда удобно. Самый простой способ это сделать кастомную простую коллизию прямо в 3D редакторе.

Допустим у нас есть 2 модели. Сама дверь SM_DOOR_BASE и дверной проем SM_DOOR_FRAME. Для них и будем делать "свою простую коллизию".

это дврь
это дврь

Логика Unreal Engine проста. Всё что имеет префикс UCX считывается как коллизия.

Если сама дверь это по факту куб который повторяет силуэт двери, то кубу присваиваем имя

UCX_SM_DOOR_BASE_01

Коллизия двери. Куб повторяет силуэт двери.
Коллизия двери. Куб повторяет силуэт двери.

тут всё просто.

Вот с проемом чуть сложнее. Помним что Simple Collision не может быть вогнута, это значит что одним кубом с экструдами тут не обойтись. Нужно сделать 3 куба которые повторят силуэт дверного проема.

Все 3 куба подписываем как

UCX_SM_DOOR_FRAME_01

UCX_SM_DOOR_FRAME_02

UCX_SM_DOOR_FRAME_03

Коллизия дверного проема. 3 куба. 1 сверху, 2 по бокам.
Коллизия дверного проема. 3 куба. 1 сверху, 2 по бокам.

Далее выделяем всё и экспоотируем в FBX.

При импотре убираем галочку с Generate Missing Collision.

DEVLOG #2 // ЗАТЕКСТУРЬЕ

Наслаждаемся кайфовой Simple Collision, которая четко отрабатывает столкновения с предметами и что самое главное потребляем меньше ресурсов. Так как при использовании Complex Collission движок обрабатывает модель дважды. Если дверь имеет 500 треугольников то при Complex Collission эта же дверь теперь будет иметь 1000 треугольников, что не критично если это одна модель на всю сцену, но если таких дверей допустим 100 то х100 к полигонажу сцены.

При Simple Collission та же дверь имеет 12 трисов. То есть 512 трисов на модель. ОПТИМИЗАЦИЯ!

Так вот, я все выходные сидел и делал коллизии объектов.

Спасибо за внимание.

PS. Примеры коллизий для технических коридоров

Видео урок где всё подробно рассказано

3
4 комментария