G_Solomatin
@G_Solomatin
Программист - любитель

OpenGL и C++. Как лучше отсортировать полигоны?

У меня хобби, пишу движок к игре на С++ и OpenGL. Есть несколько сотен полигонов на сцене. Я научился определять столкновения с полигонами. Смог также отсортировать полигоны по группам, чтобы проверять столкновения сначала с группой, а потом с каждым полигоном. Но это не лучший вариант. Подойдёт ли BSP сортировка, или что-то получше есть? И где можно почитать на русском, может кто знает?

Скриншот игры:

5e30609082e62992412192.jpeg
  • Вопрос задан
  • 255 просмотров
Пригласить эксперта
Ответы на вопрос 2
@MarkusD
все время мелю чепуху :)
Честно говоря, странно видеть в заголовке и тегах вопрос об OpenGL, а в теле вопроса - про коллизии и, возможно, физику.

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

Тебе надо иметь два набора вершин. Один - набор вершин для визуализации объекта. Второй - набор вершин для симуляции его физики, не только коллизий. И таких наборов может быть много. Для симуляции повреждений и деформаций, для скиннинга, для хитбоксов, для постройки маршрутов перемещений, для звуков...
BSP подходят больше для отсечения видимой геометрии. В наши дни этот подход не оправдывает своих затрат, его не используют. Для эффективной симуляции коллизий лучше подходят QTree, OTree или KD-списки.

Почитать начать можно отсюда: Study path for game programmer. Твой раздел: 9. Game Physics and Animation.
Далее, тебе сюда: https://gamedev.ru/code/articles/?physics
Да, геймдев все еще жив, хоть уже и не принадлежит Сереге Ваткину.
Следом лучше пойти на хабр: [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11].
У Фабьена Сангларда есть набор статей о внутреннем устройстве DOOM 3 и Quake 3, там есть материал и про столкновения.

На этом этапе у тебя уже должно сформироваться представление о предметной области симуляции коллизий.
Ответ написан
Комментировать
@Svirex
Могу посоветовать книгу Game Programming in C++: Creating 3D Games: Creati..., глава 10. Основы определения столкновений плюс ссылки на то, что почитать для погружения.

Не на русском, но на русском актуальную информацию будешь собирать по крупицам.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы