Изоповерхность
Изоповерхность — это трёхмерный аналог изолинии, то есть поверхность, представляющая точки с постоянным значением (например, давления, температуры, скорости или плотности) в некоторой части пространства. Другими словами, это множество уровня непрерывной функции, областью определения которой является трёхмерное пространство.
Термин «изоповерхность» иногда используется для более общих областей с размерностью большей 3[1].
Приложения
Изоповерхности обычно выводятся с помощью компьютерной графики и используются в качестве методов визуализации в вычислительной гидродинамике, позволяющий инженерам изучать свойства обтекания (газом или жидкостью) объектов, таких как крыло самолёта. Изоповерхность может представлять индивидуальную ударную волну сверхзвукового полёта, или могут быть созданы некоторые изоповерхности, показывающие последовательность значений давления в потоке воздуха, обтекающего крыло. Изоповерхности становится популярным видом визуализации пространственных наборов данных, поскольку могут быть обработаны простой многоугольной моделью и нарисованы на экране очень быстро.
В медицинской визуализации изоповерхности могут быть использованы для представления областей с определённой плотностью в трёхмерной компьютерной томографии, что позволяет визуализацию внутренних органов, костей и других структур.
Многочисленные другие дисциплины, в которых используются трёхмерные данные, часто используют изоповерхности для получения информации в областях фармакологии, химии, геофизики и метеорологии.
Алгоритмы реализации
Алгоритм «Marching Cubes»
Алгоритм «marching cubes» впервые опубликован в 1987 году в сборнике работ конференции SIGGRAPH (авторы — Лоренсен и Клайн[2]). Алгоритм создаёт поверхность по пересечениям рёбер объёмной решётки с поверхностью тела. В точке, где поверхность пересекает ребро, алгоритм создаёт вершину. С использованием таблицы различных треугольников, определяемых различными шаблонами пересечений рёбер, алгоритм воспроизводит поверхность. Этот алгоритм имеет решения для реализации как в CPU, так и в GPU.
Алгоритм «Asymptotic Decider»
Алгоритм «asymptotic decider» разработан как развитие алгоритма «marching cubes», чтобы избавиться от неопределённости в алгоритме.
Алгоритм «Marching Tetrahedra»
Алгоритм «marching tetrahedral» разработан как развитие алгоритма «marching cubes» с целью избавиться от неопределённости в алгоритме и создавать более качественные поверхности.
Алгоритм «Surface Nets»
Алгоритм «Surface Nets» помещает вершину пересечения в середину вокселя, а не на рёбрах, что приводит к более гладкой поверхности.
Двойственное контурирование
Алгоритм двойственного контурирования впервые опубликован в 2002 году в сборнике работ конференции SIGGRAPH (авторы Ю и Лосассо[3]). Алгоритм разработан как расширение одновременно алгоритмов «surface nets» и «marching cubes». Алгоритм сохраняет двойственную вершину внутри вокселя, но не обязательно в центре. Двойственное контурирование максимально использует положение и нормаль, где поверхность пересекает рёбра вокселя, чтобы интерполировать положение двойственной вершины внутри вокселя. Это позволяет создавать ровные или гладкие поверхности, поскольку поверхностная сетка часто выглядит глыбистой или неверно скошенной[4]. Двойственное контурирование часто использует построение поверхностей с помощью октодеревьев для оптимизации числа треугольников в результирующем представлении поверхности.
Примеры
Примерами изоповерхностей являются «метасферы», используемые при трёхмерной визуализации. Более общим способом построения изоповерхности является использование представления функции.
Примечания
- Hamilton–Jacobi equation (6 декабря 2020). Дата обращения: 14 декабря 2020.
- Lorensen, Cline, 1987.
- Tao Ju, Frank Losasso, Scott Schaefer, Joe Warren: Dual Contouring of Hermite Data. Архивировано 18 сентября 2017 года. In: ACM Transactions on Graphics, Volume 21 Issue 3, July 2002
- Smooth Voxel Terrain (Part 2) | 0 FPS
- Scott Schaefer, Tao Ju, Joe Warren. Manifold Dual Contouring .
- Manifold Dual Contouring.
- Lin X. Github Repository - isosurface (23 Oct 2016).
Литература
- William E. Lorensen, Harvey E. Cline. Marching Cubes: A high resolution 3D surface construction algorithm. // Computer Graphics. — 1987. — Т. 21, № 4.
- Charles D. Hansen, Chris R. Johnson. Visualization Handbook. — Academic Press, 2004. — С. 7–11. — ISBN 978-0-12-387582-2.
Ссылки
- Разбиение изоповерхности на многоугольники
- The contourist package for numeric python создаёт триангуляризации изоповерхностей для произвольных трёхмерных функций, которые могут быть отрисованы с помощью HTML5 (как проиллюстрировано на странице jsfiddle)