Мне интересно, как современная система объединяет эти два вместе? Есть ли там какой-либо рекомендуемый способ?
Это действительно зависит от ситуации, и я не думаю, что существует универсальный способ сделать это.
Иногда использование другой структуры разбиения является хорошей идеей, например простой граф сцены, который разлагает объект на логически значимые объекты, используется для анимации, а для рендеринга используется BVH, который видит только суп треугольника.
Система может иметь различные инструменты; каждая из них использует наиболее удобную структуру, такую как BSP для инструмента проектирования уровня, kd-дерево для расчета световой карты, порталы для реального времени, создаваемые закрытой средой, а затем octrees в открытых пространствах.
Сочетание такой же структуры пространственного разделения для разных вещей, как столкновения и рендеринг, может увеличить производительность и уменьшить память. Однако в современной системе хорошие комбинации часто упускаются из-за того, что система использует различное промежуточное ПО, а некоторые из них не раскрывают свою структуру секционирования и не поддерживают ее.
Чтобы создать хорошую систему, изучение целевого приложения важно, найти хороший компромисс между сложностью, возможностью повторного использования, памятью и производительностью. Прежде всего, абстракция является изначальной, чтобы иметь гибкую и надежную систему.