Oct-деревья довольно простые, особенно выровненные по оси, как те, что в шахте
Это в основном просто трехмерное расширение квад-дерева. Возможно, вам сначала будет легче узнать о Quad-деревьях.
Для краткого обзора четырехугольного дерева; в основном вы начинаете с квадрата. А теперь представьте, что на этом квадрате разместите гораздо меньший квадрат. Если вы хотите построить четырехугольное дерево, представляющее его, сначала разделите исходный квадрат на 4 квадрата одинакового размера.
Затем вы проверяете каждый квадрант и, если меньший квадрат находится в этом квадранте, вы разделяете этот квадрант на 4 квадрата меньшего размера. Затем вы проверяете эти 4 квадранта, выбираете квадрант и делите его. В конечном итоге ваш меньший квадрат будет полностью содержаться в одном или нескольких квадрантах внутри квадрантов внутри квадрантов (и т. Д.). Вы теперь построили свое четырехугольное дерево.
Теперь, если вы представите, что ищете конкретный квадрат внутри большего квадрата, вы можете быстро увидеть бонус квад-дерева. Вместо того, чтобы искать каждый возможный квадрат в дереве квадрантов (эквивалентно поиску каждого пикселя в текстуре), вы можете проверить первые 4 квадранта, чтобы увидеть, содержат ли они его. Если вы это сделаете, вы можете проверить его 4 суб квадранта и так далее, пока не найдете самый маленький квадрант, полностью содержащий ваш квадрат (или пиксель). Таким образом, вы в конечном итоге делаете гораздо меньше тестов, чтобы найти свой объект.
Теперь октавное дерево - это в основном то же самое, но вместо того, чтобы кодировать квадраты в квадратах, вы теперь кодируете кубы в кубах. Каждый куб можно разделить на 8 меньших октантов (и, следовательно, имя октанового дерева).
Окт-деревья имеют то преимущество, что, зная, в каком октанте вы начинаете, вы можете легко направлять лучи через октавное дерево, чтобы найти столкновения (поскольку октант либо полон, либо частично полон, либо он пуст). Если октант пуст, вы проходите через него и затем проверяете октант на другой стороне. Если он частично заполнен, вы проверяете его субоктанты и так далее до тех пор, пока не найдете либо полный октант (т. Е. Вы попали в твердый куб и рендерите его), либо не пройдете через октант полностью и, следовательно, нет куба для рендеринга. , Вот как работает Minecraft (я все равно догадываюсь;)). Это также хороший способ быстрого рендеринга воксельных данных, которые все больше людей рассматривают в качестве возможного будущего механизма рендеринга.
Надеюсь, это поможет! :)