Я делаю программу, которая использует различные передовые графические методы. На данный момент две модели Wavefront obj импортированы и отображаются на экране. Я пытаюсь реализовать обнаружение столкновения треугольника и треугольника грубой силой между этими двумя объектами, но меня беспокоит, когда выполнить эту операцию. У меня не будет анимации и движения в этой программе, все, что я хочу сделать, — это когда я перевожу (glTranslate) один объект так, чтобы он сталкивался с другим, чтобы раскрасить сталкивающиеся треугольники.
Должна ли моя функция обнаружения столкновений работать с вершинами исходной модели или мне нужно каким-то образом получать текущие координаты?
Вероятно, лучше отделить движение (физику, если хотите) от рисунка. Вы можете использовать функцию ожидания или функцию таймера, чтобы перемещать волновые фронты и проверять наличие столкновений и просто отмечать треугольники как столкнувшиеся (или все, что вы хотите указать, что они столкнулись), а затем принудительно перерисовывать экран, и ваш код рисования должен просто позаботиться очистки экрана и перерисовки всех вершин и раскраски их соответствующим образом в зависимости от того, помечены они или нет.
Обнаружение столкновений, скорее всего, будет работать с вершинами вашей модели, но вам нужно отслеживать, где в «пространстве» ваш объект должен выполнять математику соответствующим образом.
было бы лучше разделить эти два модуля: рендеринг и физика / столкновение.
таким образом, один объект имеет два представления: одно для рендеринга (текстуры, геометрия моделей, материалы и т. д.), а другое для физики (ограничивающая рамка, положение в пространстве слов и т. д.)