Вот моя проблема. Я создаю игру, и мне интересно, как делать столкновения. У меня есть несколько случаев, чтобы проанализировать и найти лучшее решение для.
Я скажу это заранее, я не использую какую-либо стороннюю физическую библиотеку, но я собираюсь сделать это дома. (поскольку это образовательный проект, у меня нет расписания и я хочу учиться)
У меня есть 2 типа мешей, для которых я должен делать столкновения:
1) Статические сетки (которые перемещаются по экрану, но не имеют ЛЮБОЙ анимации)
2) Сетчатые / очищенные от костей сетки (анимированные)
На самом деле у меня есть это решение (довольно хаки: |)
Прежде всего у меня есть тест на некоторый ограничивающий объем, который охватывает всю сетку (капсула в моем случае), после:
1) Для статических сеток я делю их вручную на блоки (на моделирующем устройстве), и для каждого из этих блоков я использую тест сферы / AABB. (работает нормально, но немного мешает разрезать каждую сетку: P) (я попробовал автоматическую систему для разделения сетки по плоскостям, но это дает плохие результаты: ()
2) Для банкомата с анимированной сеткой я делю сетку во время выполнения на x блоков (где x - количество костей). Каждый блок содержит вершину, для которой эта кость является основным влияющим фактором. (Иногда работает, иногда дает действительно плохие результаты.: |)
Обратите внимание, что деление сетки выполняется во время загрузки, а не каждый раз (в противном случае это будет работать как слайд-шоу: D)
А вот и вопрос:
Какую наиболее разумную идею использовать для этих двух случаев?
Любой материал для меня, чтобы изучить эти методы? (с некоторым исходным кодом и объяснениями было бы еще лучше (язык не важен, когда я понимаю алгоритм, реализация проста))
Можете ли вы аргументировать, почему это решение лучше, чем другие?
Я много слышал о kd-tree, octree и т. Д. Хотя я понимаю их структуру, я скучаю по их полезности в сценарии обнаружения столкновений.
Большое спасибо за ответы !!!
РЕДАКТИРОВАТЬ: Попытка найти пример K-Dop с некоторыми объяснениями в сети. Все еще ничего не нашел. Есть какие-нибудь подсказки?
Меня интересует, КАК K-Dop может быть эффективно протестирован с другими типами ограничивающих томов и т. Д., Но документация в сети, кажется, сильно отсутствует. (