Марширующие тетраэдры - Marching tetrahedra

Куб, разделенный на шесть тетраэдров, с одним заштрихованным тетраэдром.

Марширующие тетраэдры алгоритм в области компьютерная графика оказывать неявные поверхности. Это проясняет небольшую проблему двусмысленности маршевые кубики алгоритм с некоторыми конфигурациями куба. Первоначально он был представлен в 1991 году.[1]

В то время как оригинальный алгоритм маршевых кубов был защищен патент на программное обеспечение, марширующие тетраэдры предложили альтернативный алгоритм, не требующий патентной лицензии. Прошло более 20 лет с даты подачи заявки на патент (5 июня 1985 г.), и теперь алгоритм маршевых кубов можно использовать свободно. Необязательно, небольшие улучшения шагающих тетраэдров могут быть использованы для исправления вышеупомянутой неоднозначности в некоторых конфигурациях.

В маршевые тетраэдры, каждый куб разбит на шесть неправильных тетраэдры разрезав куб пополам три раза, разрезав по диагонали каждую из трех пар противоположных граней. Таким образом, все тетраэдры имеют одну из главных диагоналей куба. Вместо двенадцати ребер куба теперь у нас девятнадцать ребер: исходные двенадцать, шесть диагоналей граней и главная диагональ. Как и в маршевые кубики, пересечения этих ребер с изоповерхность аппроксимируются путем линейной интерполяции значений в точках сетки.

Смежные кубы имеют общие ребра на соединительной грани, включая одну и ту же диагональ. Это важное свойство для предотвращения трещин на визуализированной поверхности, поскольку интерполяция двух различных диагоналей грани обычно дает немного разные точки пересечения. Дополнительным преимуществом является то, что до пяти вычисленных точек пересечения можно повторно использовать при обработке соседнего куба. Сюда входят вычисленные нормали к поверхности и другие графические атрибуты в точках пересечения.

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

Сравнение с походными кубиками

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

Количество конфигураций, определяющих размер обычно используемых таблицы поиска, намного меньше, так как в каждом тетраэдре участвуют только четыре, а не восемь отдельных вершин. Вместо одного куба нужно обработать шесть тетраэдров. Процесс однозначный, поэтому дополнительная обработка неоднозначности не требуется.

Обратной стороной является то, что мозаика куба с тетраэдрами требует выбора ориентации тетраэдров, что может создавать искусственные «выпуклости» на изоповерхности из-за интерполяции по диагоналям граней.[2]

Ячейка с алмазной решеткой - альтернативный метод нарезки куба

Кубические ячейки, которые необходимо объединить, также можно разделить на 5 тетраэдров.[3], с помощью (Алмазный кубический ) решетка как основа. Кубы сопряжены с каждой стороны с другим, имеющим противоположное расположение тетраэдра вокруг центроида куба. Чередующиеся вершины имеют разное количество пересекающихся тетраэдров, в результате чего сетка может немного отличаться в зависимости от положения. При таком разрезе предоставляются дополнительные плоскости симметрии; наличие тетраэдра вокруг центроида куба также создает очень открытые пространства вокруг точек, находящихся за пределами поверхности.

Визуализация алмазная кубическая

Алмазный кубический имеет множество визуализаций. Вместо пустых ячеек каждая ячейка должна быть заполнена чередующимися внутренними тетраэдрами. Для каждого тетраэдра, вписанного в куб, используя вершины куба и ребра, пересекающие грани куба, тетраэдр займет 4 точки; остальные 4 точки образуют углы перевернутого тетраэдра; кубические ячейки выложены плиткой так, что положение ячейки (x + y + z + ...) нечетное, используйте единицу, иначе используйте инвертированную; в противном случае близкие ячейки использовали бы другую диагональ для вычисления пересечения.

Иллюстрация перевернутых ячеек внутренней алмазной кристаллической решетки

Расчет цвета по системе пространственной текстуры[4] можно сделать, используя текущую позицию фрагмента для выбора из повторяющейся текстуры на основе пар Texel_ (графика) координаты (x, y), (y, z) и (x, z) и масштабирование этих значений по абсолютному значению каждого соответствующего компонента нормали z, x и y соответственно. Удаление текстур можно применять как Texture_splatting путем проецирования положения текущего фрагмента в направлении нормали декали на плоскость текстуры, заданную исходной точкой и нормалью, а затем с помощью вектора направления «вверх» или «вправо» для вычисления координаты текстуры.

Этот метод был бы более близок по сравнению с двойное контурирование который указан в Изоповерхность, как потенциальный метод. Тетраэдры DCL включают дополнительные вычисления для диагоналей на гранях куба, в то время как двойное контурирование не выполняется. Этот метод также не применяется, когда две ближние точки «внутри» поверхности находятся на комбинированном расстоянии <1 от поверхности, когда они должны генерировать две точки на краю вместо 1; соответствующая модификация Двойной контур коллектора [5].


Смотрите также

использованная литература

  1. ^ Акио Дои, Акио Койде. «Эффективный метод триангуляции однозначных поверхностей с использованием тетраэдрических ячеек». Информационные транзакции и системы IEICE, Том E74-D № 1, 1991 г.
  2. ^ Чарльз Д. Хансен; Крис Р. Джонсон (2004). Справочник по визуализации. Академическая пресса. С. 9–11. ISBN  978-0-12-387582-2.
  3. ^ d3x0r (14 апреля 2020 г.). "Проект Github - Марширующие алмазные решетчатые тетраэдры".
  4. ^ d3x0r (22 апреля 2020 г.). "Проект Github - Мульти-текстурирование Isosurface".
  5. ^ Lin X (30 декабря 2015 г.). Двойной контур коллектора.

внешние ссылки