Разберем, что такое коллизии в играх. Коллизия – это меш, который описывает поверхность основной модели, но не имеющий UV, текстур, вертекс колора и всего остального, которая скрыта от игрока и не участвует в рендеринге.
С помощью такой геометрии модель взаимодействует с окружающим миром и другими коллизиями других объектов в локации на физическом уровне.
Без коллизии, привязанной к модели, игрок просто будет проходить сквозь меш. Она обязательна для тех объектов, с которыми непосредственно взаимодействует игрок. Для оптимизации она создается более упрощенной по сравнению с основной моделью, убираются всевозможные декоративные экструды, фаски, количество ребер на радиальных поверхностях, мелкие детали, несущественные углубления и т.д.
Автоматическая коллизия бывает нескольких видов:
1. Box – габаритный бокс, самый простой тип коллизии, используется для небольших объектов.
2. Capsule – немного сложнее бокса и также не нагружает движок. Часто используется для тушки игрока.
3. Convex – детализированная автоматическая коллизия описывающая основную поверхность модели.
4. Mesh – наиболее детализованный тип коллизии. Полностью повторяет исходную модель. Наиболее тяжелый в просчете. Применяется крайне редко.
Автоматическая коллизия – это прекрасно, она экономит время. Но на таких объектах на локации, как: здания, пропсы, предметы окружения и т.д. коллизии, как правило, моделятся вручную из основного меша путем упрощения. Процесс очень похож на создание лодов. При этом обычно коллизия моделится после самих лодов и для экономии времени можно какие-то детали взять с 01 или 02 лода убрав при этом все атрибуты с объекта (UV, Vertex color и т.д.).
При создании коллизий не учитываются незначительные неровности, совсем тонкие или мелкие элементы, по типу дверных ручек, мелких выступов, болтов, гаек и прочего. Также можно упрощать коллизию на тех деталях объекта, которые находятся на высоте. Например, нет смысла промоделивать на коллизии детали на крыше, если игрок туда физически никогда не сможет попасть. Сам процесс создания достаточно субъективный, с одной стороны вам нужно как можно более детально описать объект, с другой стороны сделать коллизию максимально оптимизированной. Необходимо найти компромисс, а как правило — это будет зависеть от проекта.
Из нюансов стоит отметить, что коллизия не может иметь дырок и должна быть закрытой. Так как в этом случае есть вероятность возникновения ошибок и багов, когда коллизия будет работать неправильно или игрок провалится внутрь здания и не сможет выбраться.
Часто каждая коллизия имеет свой физмат. Физмат – это абстрактный материал, благодаря которому будут корректные звуки попадания пуль, шум от ходьбы, звук удара при попадании по поверхности и т.д. Например, бетонный дом будет иметь свой физмат – concrete. И при попадании пули в этот дом, будет воспроизводиться звук попадания по бетону, то же касается и декалей. При попадании пули поверх места попадания будет прорисована рандомная декаль следа от пули.
Больше интересного в Телеграм канале "Записки 3D-шника" https://t.me/notes3drus
Кроме того, большие объекты могут иметь коллизии, разделенные по физматам. Например, деревянный дом будет разделен на бетонный фундамент, деревянные стены, металлическую крышу и далее, по количеству применяемых материалов в самом этом доме, будь то плитка на полу в ванной или ткань на кровати в спальни.
Также бывают случаи, когда для разных взаимодействий используются разные коллизии. Отдельно физическая коллизия, максимально упрощенный меш и коллизия для расчета стрельбы. Наиболее детализованный вид коллизии, где крайне важен силуэт модели. В разных проектах свои требования к коллизиям, однако назначение у них одно.
Пишите своё мнение в комментариях, задавайте вопросы, подписывайтесь на канал и обязательно поддержите лайком. Это важно для развития канала. Спасибо.