OpenGL 3D обнаружение столкновений - PullRequest
2 голосов
/ 15 ноября 2010

Я сделал быстрый поиск для обнаружения столкновений для OpenGl, однако большинство вещей возвращаются с 2D-примерами, использующими CGRectIntersectsRect. Использую ли я CGRectIntersectsRect для 3D обнаружения? Я делаю простую трехмерную игру-лабиринт, и я просто хочу, чтобы люди, проходящие сквозь стены, представляющие собой квадраты (сделанные из треугольников), в отличие от импортированных объектов (да, я новичок в этом).

Спасибо, Саймон

Ответы [ 3 ]

5 голосов
/ 15 ноября 2010

Вы будете бороться.

Подумайте только об использовании Unity3D , который позволит вам получить доступ к nVidia physX , который является типом трехмерного физического решения, которое вам нужно.

И наоборот, начать с нуля с этим! http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.4.5881&rep=rep1&type=pdf

И наоборот, станьте экспертом в что-то вроде этого http://www.ode.org/, которое вы затем можете использовать с OpenGL, http://www.ogre3d.org/about/features, и т. Д.

Вот важное уточнение относительно комментариев к «изображениям»:

Изображения совершенно не связаны с обнаружением столкновений. OpenGL не имеет абсолютно никакого отношения к обнаружению столкновений или физике любого рода. Изображения абсолютно не связаны с обнаружением столкновений. Нулевой связи между OpenGL и коллизиями нет. Абсолютно ничего.

2 голосов
/ 15 ноября 2010

OpenGL - это чистая библиотека визуализации, которая не позволяет обнаруживать столкновения.Вам придется свернуть свою собственную или использовать стороннюю библиотеку обнаружения столкновений.

Функция CGRectIntersectsRect выглядит так, как будто она поступила из библиотеки Cocos и выполняет двумерное обнаружение столкновений между прямоугольниками.Если реальный игровой процесс в вашей игре ограничен 2D, эта функция может быть вам нужна, но если игрок перемещается в трех измерениях, этого будет недостаточно.

0 голосов
/ 15 ноября 2010
  1. OpenGL не выполняет обнаружение столкновений, по крайней мере, намеренно. Вы можете использовать некоторые функции для обнаружения столкновений спрайтов, но я не уверен, применимо ли это к последней версии OpenGL ES на iPhone.

  2. CGRectIntersectsRect происходит от Core Graphics, это простая проверка конверта, которую вы можете сделать, чтобы избежать более точной и дорогой проверки, когда она явно не нужна. Работает только в 2D.

  3. Столкновения в 3D сложно. Может быть, вы могли бы начать с проецирования аватара на пол и проверить получившийся многоугольник (или даже прямоугольник) на предмет столкновения с линиями стены? Звучит проще.

...