Когда выполнять обнаружение 3D-столкновений в OpenGL?

Я делаю программу, которая использует различные передовые методы графики. На данный момент две модели объекта Wavefront импортированы и отображаются на экране. Я пытаюсь реализовать обнаружение столкновения треугольник-треугольник грубой силы между этими двумя объектами, но меня беспокоит, когда выполнять эту операцию. У меня не будет анимации и движения в этой программе, все, что я хочу сделать, это когда я переведу (glTranslate) один объект так, чтобы он столкнулся с другим, чтобы раскрасить сталкивающиеся треугольники.

Должна ли моя функция обнаружения столкновений работать с моими исходными вершинами модели или мне нужно каким-то образом получить текущие координаты?


person sample_nickname    schedule 14.01.2013    source источник


Ответы (2)


Вероятно, лучше всего отделить движение (физику, если хотите) от рисунка. Вы можете использовать функцию ожидания или функцию таймера, чтобы переместить волновые фронты и проверить наличие столкновений, и просто пометить треугольники как столкнувшиеся (или все, что вы хотите указать, что они столкнулись), а затем принудительно перерисовать экран, и ваш код рисования должен просто позаботиться очистки экрана, перерисовки всех вершин и их соответствующей окраски в зависимости от того, отмечены ли они как столкнувшиеся или нет.

Обнаружение столкновений, скорее всего, будет работать с вершинами вашей модели, но вам нужно отслеживать, где в «пространстве» ваш объект должен выполнять вычисления надлежащим образом.

person Jesus Ramos    schedule 14.01.2013

лучше всего разделить эти два модуля: рендеринг и физика / столкновение.

таким образом, один объект имеет два представления: одно для рендеринга (текстуры, геометрия модели, материалы и т. д.) и одно для физики (ограничивающая рамка, положение в пространстве слов и т. д.)

  • физика не обязательно должна быть настолько совершенной, и обычно требуется лишь некоторое приближение к сетке. Итак, для домашнего объекта мы будем использовать только ограничивающую рамку или ограничивающую сферу для проверки столкновения.
  • другое дело - иерархия коллизий: от низкого разрешения до высокого. Сначала тестируйте только ограничивающие сферы (дешевый тест), затем постепенно переходите от треугольника к тесту столкновения треугольника (довольно дорого)
person fen    schedule 15.01.2013