Как вы на самом деле делаете октри (для вокселей)? - PullRequest
1 голос
/ 05 сентября 2011

Я видел код, который создает октри, добавляет и удаляет из них данные, но как на самом деле построить октодерево?Существует ли программное обеспечение для 3D-вокселей, которое будет сохранять в массиве, который затем можно преобразовать в октри?или вы можете сохранить прямо в октри?

Ответы [ 2 ]

0 голосов
/ 16 декабря 2013

Каждый узел в октрее имеет одну точку.Эти узлы разбиты (как вы уже догадались) на восемь дочерних узлов.Эти узлы, в свою очередь, содержат каждую отдельную точку.

Как правило, вы не добавляете все своих вершин к октодереву, если только вы не делаете какое-то безбожное обнаружение столкновений, где каждая отдельная вершина имеет значение ... Не то, чтобы вы не моглитогда сделайте это быстро, но это будет все же медленнее, чем приближение, заданное меньшим числом узлов.(Это верно почти для всего, аппроксимация быстрее).

Опять же, если вы выполняете рендеринг с высоким качеством, октреусы, вероятно, должны иметь столько узлов, сколько у вас точек.

Теперьна ответ:

  1. Создайте корневой узел с ограничительной рамкой, которая будет заключать его из центра.

  2. Вставьте каждую точку.Это должно подразделить октри в соответствующих направлениях.

    1. Когда вы вставляете эти точки, данные будут перемещаться дальше вниз в конечные узлы, которые более близко инкапсулируют вашу модель.
    2. Кроме того, при разделении ограничивающий прямоугольник делится пополам для каждого последующегоузел не работает.
  3. Если вы действительно хотите его сохранить, вы можете сохранить вершины (пронумерованные), а затем попросить программу записать различные соединения между узлами.и вершины на диск, где они смогут быть загружены примерно в то же время, которое требуется для создания октодерева с нуля.

В любом случае, я надеюсь, что ответил на ваш вопрос.

0 голосов
/ 28 февраля 2012

Зависит от вашей реализации -

Если вы используете окт-деревья для разделения пространства, то, как правило, вы бросаете в него кучу V3, и как только у узла будет больше, чем определенное количество точек, вы делите и перераспределяете их. *

Если вы ищете способ хранения вокселей в стиле майнкрафт, то вы будете делить, пока не достигнете 1: 1 с размером вокселя, и сохраните свои данные в конечных узлах.

Откуда поступают данные, зависит от вас - Octrees - это способ хранения, обработки и поиска данных, а не формат файла как таковой.

...