Важно сначала рассмотреть типы файлов мешей, которые вам придется поддерживать.
В действительности существует 3 вида объектов.
1. Откройте естественную местность. Это очень хорошо сочетается с квадродеревом, так как октри приносит сложность, которая не нужна. Нет особых причин вводить третье измерение, если оно не даст вам большого прироста производительности.
2. Открытая местность со множеством высоких объектов. Это очень хорошо вписывается в октри, так как октре позволяет удалить объекты на вертикальной оси из рендеринга, и в такой сцене много таких. Я, честно говоря, не могу назвать ни одной, которая вписывается в это с моей головы.
3. Закрытые пространства или модели персонажей / статические сетки. Это очень хорошо вписывается в деревья BSP. Дерево BSP позволяет объектам, находящимся полностью на экране, или закрытым пространствам отображать столько полигонов, сколько необходимо.
Я бы порекомендовал добавить 1 и 3, предполагая, что 1 - это даже тип модели, который вам необходимо поддерживать. № 3 очень стандартен для шутеров от первого лица или моделей персонажей, и добавление поддержки для этого может дать вам лучший результат. Общая идея состоит в том, чтобы удалить как можно больше геометрии из рендера, таким образом, квад-дерево для 95% игровых миров игроков на открытом ландшафте идеально. У октрея есть использование, но меньше, чем вы думаете.
Каждый из этих алгоритмов относительно легко написать. Например я написал октри за 3 часа много лет назад. Обычно они обрабатываются во время загрузки, куски геометрии добавляются к каждому квадрату (если квад / октре) или к дереву (если BSP), и затем рендеринг следует их примеру. Через быстрый поиск в Google есть много отличных статей, которые я оставлю для вашего исследования. Заметим, что дерево BSP также способно распознавать столкновения и является идеальным кандидатом для моделей персонажей и статических сеток. Таким образом, это алгоритм, на который я бы порекомендовал потратить ваше время, чтобы убедиться, что он достаточно гибок для многократного использования.