Разделение ландшафта Quadtree - я не понимаю


12

Большинство газет, которые я читал, основывают свою местность в той или иной форме на квадродереве. Смотрите это на странице 38 :

http://www.slideshare.net/repii/terrain-rendering-in-frostbite-using-procedural-shader-splatting-presentation?from=ss_embed

Разве первый пункт не противоречит двум нижним? Как вы можете иметь фиксированную сетку вершин 33x33 на лист, но говорить об адаптивном делении в четырехугольном дереве? Терминология сбивает с толку, и я был бы признателен за любую ясность в этом!


Вот мои предположения:
перестановка патчей каждый раз, когда изменения в quadtree будут хитом, не так ли?

http://www.dukecg.net/QuadtreeTerrain.png

  1. Quadtree начинается с границ местности.
  2. Перейдите вниз к месту наблюдения.
  3. Ограниченная версия (не более 1 уровня разницы между соседями)
  4. Отверстие
  5. Поместите участок местности в каждый получившийся лист, где масштаб отличается, но разрешение всегда 33x33.

Ответы:


7

Нет, не совсем. Если вы планируете использовать квадродерево для уровня детализации ландшафта, все хранимые вами узлы обычно будут иметь одинаковую структуру данных.

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

После того, как дерево построено, вы можете выполнить его отбраковку, спустившись по дереву и отбросив узлы, которые не пересекаются.

Следует иметь в виду, что вам, скорее всего, придется устранять трещины, возникающие, когда больший узел рисует рядом с меньшим узлом. Один простой способ - просто настроить (свернуть) любые неразделенные вершины между сетками.

Что касается вас, другой вопрос о заменяемом дереве, да. Если вы не хотите вдаваться в данные, управляющие деревом, я предлагаю просто создать стек и очистить его, когда представление движется достаточно.


Проблема с видимыми швами на плитках разного размера объясняется на слайде 39-40 презентации. Очевидно, они удаляют Т-образные переходы, используя одну из 9 возможных сеток на перекрестках (см. Слайд 40).
Bummzack

отказ от ответственности: IDNRTFA ;-)
bitcruncher

3

«Единицей» местности являются блоки 33х33. Если вы рядом, это то, что вы увидите. Если вы находитесь дальше, эти блоки объединяются в более низкие блоки LOD.

Причина, по которой они используют фиксированные чанки на самом низком уровне (лист), заключается в том, что современное оборудование намного быстрее со статической геометрией. Такие системы, как ROAM, в которых выполняется большая работа по сокращению количества полигонов, приводят к значительным потерям производительности.


Таким образом, конечный лист - это не каждый возможный конечный лист (при наименьшем размере сетки), это конечный лист для этой итерации, основанный на расстоянии, поэтому некоторые могут быть 16x16, а удаленные могут быть 256x256 (или что-то еще)? Разве это не означает, что каждый раз, когда изменяется квадродерево, патчи должны быть снова размещены и масштабированы?
Джордж Р
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.