Я должен написать, что можно охарактеризовать как полную 3D-игру с нуля в этом семестре. До сих пор я программировал только 2D игры в свободное время, переход не кажется сложным, игра проста. Единственная проблема, которую я имею, - обнаружение столкновения. Единственное, что я мог найти, это AABB, ограничивающие сферы или рекомендации различных физических движков. Я должен запрограммировать подводную лодку, которая будет свободно перемещаться внутри пещерной системы, AFAIK. Я не могу использовать физические библиотеки, поэтому ни одно из вышеперечисленного не решает мою проблему.
До сих пор я использовал SAT для обнаружения столкновений. Существуют ли похожие, отличные алгоритмы, но созданные для 3D-столкновений? Я не говорю о октреях или других оптимизациях, я говорю о прямом обнаружении столкновений одного набора 3D-полигонов с другим набором 3D-полигонов. Я думал об использовании SAT дважды, проецируя сетку сверху и сбоку, но потом кажется, что даже трудно разделить трехмерное пространство на выпуклые формы. Кроме того, это кажется слишком сложным вычислением даже с октреями.
Как это делают профессионалы? Может ли кто-нибудь пролить свет?
источник
Ответы:
GJK работает на выпуклых формах, я мог бы также использовать SAT. Я нашел информацию, которую я уже хотел. Вот некоторые примеры:
Подводя итог, я буду делать проверки столкновения сферы или эллипсоида на множественные треугольники, которые образуют сетку столкновений. Похоже, это то, как это делается, и это та информация, о которой я просил, если кто-то не скажет мне иначе.
источник
Эй, я написал о GJK в 3D здесь. SAT медленнее, чем GJK http://in2gpu.com/2014/05/18/gjk-algorithm-3d/
источник
Ну, если это не что-то очень сложное и современное, вы могли бы начать с реализации алгоритма обнаружения столкновений Гилберта . Его можно сделать достаточно быстрым и быстрым, при условии, что геометрия вашего столкновения не настолько детализирована (и это не обязательно!). Вот так даже некоторые тренажеры добиваются цели. Что-нибудь более сложное, вероятно, потребует больше усилий.
источник