Введение в коллайдеры Mesh
Сеточные коллайдеры соответствуют форме Сетка точно, для крайне точного моделирования столкновений.
Коллайдер Mesh строит свою геометрию столкновения так, чтобы она соответствовала назначенной сетке, включая ее форму, положение и масштаб. Преимущество этого в том, что вы можете сделать форму коллайдера точно такой же, как и форма видимой сетки для GameObject, что создает более точные и реалистичные столкновения.
Точность коллайдера Mesh сопровождается более высокими накладными расходами на обработку, чем примитивные коллайдеры (например, Сфера, Коробка, и Капсула По этой причине наилучшей практикой является использование коллайдеров Mesh только для коллайдеров, которые не требуют большого количества вычислительной мощности, или для столкновений, где примитивные коллайдеры или мощный процессор не подходят. комплексный коллайдер обошлись бы дороже. Хороший подход — использовать Mesh Collider для статической геометрии сцены, а составные коллайдеры — для движущихся GameObject.
Преимущества и ограничения коллайдеров Mesh
В большинстве случаев коллайдеры Mesh предлагают аналогичное решение коллайдерыПри рассмотрении преимуществ и ограничений коллайдеров Mesh, вы обычно сравниваете их с коллайдерами Compound. Коллайдеры Mesh отличаются от коллайдеров Compound тем, что коллайдеры Mesh имеют более сложную конструкцию, а коллайдеры Compound имеют более сложную конструкцию.
Основными преимуществами коллайдеров Mesh являются:
- Сеточные коллайдеры являются чрезвычайно точными, поскольку они идеально соответствуют форме предмета.
- Коллайдеры с сеткой требуют меньше времени на разработку вручную, чем сложные коллайдеры, потому что Unity управляет их формой автоматически на основе формы сетки.
- В некоторых случаях коллайдеры Mesh могут быть менее вычислительно требовательными, чем сложные коллайдеры. Это часто бывает для очень сложных форм, для приближения которых требуется большое количество сложных коллайдеров. Один коллайдер Mesh может быть более эффективным, чем несколько примитивных коллайдеров.
Однако коллайдеры Mesh также имеют некоторые значительные ограничения:
- Коллайдеры сетки не могут обеспечить точное столкновение между вогнутыми фигурами. Для подробностей см. Коллайдеры сетки вогнутой и выпуклой, ниже.
- В некоторых случаях сложные коллайдеры могут быть менее вычислительно требовательными, чем коллайдеры Mesh. Это часто бывает в случае простых форм, для приближения которых требуется всего несколько коллайдеров, или для форм, которые не должны быть слишком точными. Например, коллайдер Mesh может генерировать сотни многоугольников, чтобы точно соответствовать сложной форме, но приближение с примитивными коллайдерами может потребовать гораздо меньше.
- Коллайдеры мешей не являются хорошим вариантом для мешей, которые меняют форму во время выполнения. Для подробностей см. Сетки, которые меняют форму во время выполненияниже.
Решение всегда уникально для вашего проекта, поэтому вам следует протестировать каждую конфигурацию и использовать Physics Profiler, чтобы понять эффективность настройки вашего коллайдера.
Вогнутые и выпуклые коллайдеры Mesh
Коллайдеры с сеткой ведут себя по-разному в зависимости от того, помечены ли они как вогнутые или выпуклые. По умолчанию PhysX считает коллайдеры с сеткой вогнутыми.
В математике «вогнутый» и «выпуклый» — это термины, используемые для описания форм:
В выпуклой форме есть только линии, которые изгибаются наружу (например, шар). Любой сегмент линии, соединяющий две точки на ее границе, остается полностью внутри формы. Вогнутая форма имеет по крайней мере одну «пещеру» или отверстие, где граница изгибается внутрь (например, банан). Сегменты линии, соединяющие две точки на ее границе, иногда могут пересекать пространство за пределами формы.
У вогнутых коллайдеров есть ограничения: вогнутые Mesh Collider могут быть только статическими (то есть без физического тела) или кинематическими (с кинематическим физическим телом). См. Типы Collider Коллайдеры с вогнутой сеткой могут столкнуться только с коллайдерами с выпуклой сеткой. Если два вогнутых коллайдера соприкасаются, столкновение не происходит.
Если у вас есть два коллайдера вогнутой сетки, которые должны столкнуться, вы можете сделать одно из следующих действий, в зависимости от того, насколько точным должно быть столкновение:
Если вам не нужны точные столкновения в вогнутых частях фигуры, пометьте один из коллайдеров Mesh как выпуклый в Inspector (возможность ВыпуклоеЭто создает новую выпуклую форму коллайдера, называемую «корпусом», которая похожа на назначенную вогнутую сетку, но с любыми вогнутыми линиями, заполненными, чтобы сделать их выпуклыми.
Если вам нужны точные столкновения, чтобы произойти в вогнутых частях формы, используйте комплексный коллайдер из выпуклых коллайдеров.
Меши, изменяющие форму во время выполнения
Сетка, которую вы назначили коллайдеру Mesh, в идеале не должна менять форму во время выполнения.
Каждый раз, когда Mesh изменяет форму, движок физики должен перерассчитывать геометрию коллайдера Mesh, что вызывает значительную нагрузку на производительность. По этой причине не следует изменять геометрию Mesh, используемую коллайдером Mesh. Если Mesh требуется столкнуться и изменить форму во время выполнения, обычно лучше аппроксимировать форму Mesh с помощью примитивные коллайдеры или коллайдеры.
Направленная сетчатая облицовка
Лицо в столкновении меши являются односторонними. Это означает, что GameObjects может пройти через них с одного направления, но столкнуться с ними с другого.
Подробную информацию о базовых алгоритмах и структурах данных, используемых коллайдерами Mesh, см. в документе Nvidia PhysX документация по Геометрия.