Остановить движение камеры у стены (или препятствия)

Я только немного освоил GLUT, уже настроил подвижную камеру, подсветку & сделал class содержащий некоторые 3D-формы.

Но теперь я хочу, чтобы камера не могла проходить через такие объекты. Есть ли какой-либо тип OpenGL или же glut команда, с помощью которой я могу проверить, есть ли препятствие в определенной точке или в фактическом положении камеры?

2

Решение

OpenGL — это API-интерфейс растеризатора, он не проверяет и не обрабатывает конфликты для вас. Распространенными способами обнаружения столкновений являются ограничивающие рамки или ограничивающие сферы. Вы можете рассматривать положение камеры как точку и проверять, находится ли она внутри ограничивающего объема препятствия. Чтобы получить радиус ограничивающей сферы, вы должны пройти через каждую вершину в модели и сохранить расстояние до ее центра. Вам нужно сделать этот цикл только один раз, а не каждый кадр.

3

Другие решения

OpenGL не является графом сцены, что означает, что он не имеет какого-либо внутреннего представления сцены или мира. OpenGL — это API рисования, он просто рисует точки, линии и треугольники в кадровом буфере, по одному, а затем забывает о них.

Следовательно, OpenGL не сделает обнаружение столкновений за вас. Это является Можно реализовать систему обнаружения столкновений с использованием OpenGL, но это то, что делает ваша программа, а не OpenGL.

2

По вопросам рекламы [email protected]