Я работаю над инструментом, для которого требуется 3D-движок на основе вокселей. Под этим я подразумеваю, что это будет включать добавление и удаление кубов из сетки. Чтобы управлять этими кубами, мне нужна структура данных, позволяющая быстро вставлять и удалять данные. Проблема, которую я видел с k-d деревьями и октодеревьями, заключается в том, что кажется, что их часто нужно воссоздавать (или, по крайней мере, перебалансировать) из-за этих операций.
Прежде чем я вскочил, я хотел узнать мнение о том, как лучше всего это сделать.
Еще немного деталей:
- x,y,z позиция находится в целочисленном пространстве
- должен быть достаточно эффективным для приложения в реальном времени
- нет жесткого ограничения на количество используемых кубов. По всей вероятности, число чаще всего будет несущественно низким (‹100), однако я хотел бы, чтобы инструмент обрабатывал как можно больше кубов.
Я думаю, что главный вопрос заключается в том, как лучше всего управлять тем, что по сути является трехмерными точечными данными, таким образом, чтобы они могли обрабатывать частые вставки и удаления?
(Нет, я не делаю Майнкрафт)