Я начну с ответа на плюсы и минусы обнаружения столкновений на пиксель, а затем рассмотрю математические аспекты.
Обнаружение столкновений на уровне пикселей, также известное как обнаружение столкновений с идеальной точностью пикселей и, возможно, более точно обнаружение столкновений на основе изображений, - это обнаружение столкновений между объектами столкновений, которые представлены как изображения. Этот пространственный метод отличается от более геометрических методов, где для представления объектов столкновения используются многоугольники и другие геометрические фигуры.
Для 2D обычно есть 3 различных варианта:
- Изображение на основе
- Простые геометрические фигуры (ограничивающие оси ограничительные рамки, круги)
- Сложные геометрические фигуры (выпуклые многоугольники, вогнутые многоугольники, эллипсы и т. Д.)
Обнаружение столкновений на основе изображений является точным, простым в использовании и понимании. Что касается игр, использующих изображения для рисования, использование обнаружения столкновений на основе изображений означает, что всякий раз, когда спрайты на экране перекрываются, они также перекрываются в системе обнаружения столкновений. Они также полезны для игр, где требуются деформируемые объекты столкновения, например, для игр с видимой разрушаемой местностью, таких как Worms 2D, так как предварительное вычисление обычно мало. Их главный недостаток в том, что они очень неэффективны по сравнению с другими методами, особенно при вращении и масштабировании объектов столкновения.
Простые геометрические фигуры просты в работе и очень эффективны. Если высокая точность не требуется или объекты столкновения хорошо сочетаются с простыми геометрическими формами (например, если ваши объекты столкновения представляют собой шары, круги идеально подходят, иногда даже лучше, чем изображения). Их главный недостаток - точность. Для высокой точности, когда базовые формы не подходят, вы должны либо объединить простые формы в более сложные формы, либо использовать более общие и сложные формы. В любом случае вы окажетесь в третьем методе.
Сложные геометрические фигуры могут быть несколько точными и относительно эффективными или неэффективными, в зависимости от сложности используемых фигур для представления объекта столкновения. Важным недостатком является простота использования. Когда объекты столкновения не соответствуют имеющимся геометрическим формам, либо точность должна пострадать, либо несколько, возможно, потребуется использовать разные формы для ее представления, что требует времени. Кроме того, некоторые формы сложны и их нелегко создать, если только вы не можете сгенерировать их из изображения автоматически. Одним из важных преимуществ является то, что вращение и масштабирование обычно эффективны и просты, особенно по сравнению с обнаружением столкновений на основе изображений.
Обнаружение столкновений на основе изображений обычно рассматривается как плохое решение, поскольку оно часто неэффективно, особенно при использовании поворота и масштабирования. Однако, поскольку он настолько гибкий, точный и простой в использовании, я решил реализовать библиотеку, которая стремится решить проблему эффективности. В результате получается PoxelColl , который использует автоматически рассчитанные выпуклые оболочки для ускорения обнаружения столкновений на основе изображений. Это обеспечивает простоту использования, гибкость, точность и эффективность, а также поддерживает вращение и масштабирование. Основными недостатками является то, что он не эффективен во всех случаях по сравнению с чисто геометрическими решениями, и он требует предварительного вычисления, то есть он не очень неэффективен для деформируемых объектов столкновения.
Для 3D варианты и преимущества несколько схожи:
- Объем на основе
- Простые геометрические фигуры (ограничивающие оси ограничительные рамки, круги)
- Сложные геометрические фигуры (выпуклые многоугольники, вогнутые многоугольники, эллипсы и т. Д.)
Следует отметить, что ответ Питера Паркера неверен для 3D; пиксели (элементы изображения) в 2D соответствуют вокселям (элементам объема) в 3D.
Некоторые важные различия заключаются в том, что пространственный метод гораздо реже для 3D, чем для 2D. Одна из возможных причин состоит в том, что, поскольку 3D добавляет дополнительное измерение, пространственное решение становится еще менее эффективным, в то время как простые геометрические решения все еще эффективны. А в играх обнаружение столкновений, как правило, является онлайн-операцией, требующей некоторого уровня эффективности, что делает эффективность важной. Поэтому объемы чаще используются в неигровых приложениях, где нет необходимости определять столкновения в Интернете.
Примеры обнаружения столкновений с обнаружением столкновений на основе объема см., Например, Объемное обнаружение столкновений для деформируемых объектов , где использование объемов вместо геометрических форм означает, что они могут обрабатывать деформируемые объекты столкновений произвольно фасонные, закрытые поверхности.
Что касается второго вопроса, математика, связанная с коллизиями на основе изображений, может варьироваться от простой до сложной. В простом случае в основном используются ориентированные по осям ограничительные рамки для изображений, нахождение их пересечения, а затем только проверка изображений в пересечении. Более сложные решения включают библиотеку, о которой я упоминал ранее, где требуется пересечение выпуклых многоугольников. А для трехмерного случая решения варьируются от простых до очень сложных.