Полигональная сетка: различия между версиями

[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
м r2.7.1) (робот изменил: ar:شبكة مضلعية
м clean up, replaced: В отличии → В отличие (2), typos fixed: еще → ещё (2), ее → её (3), в нем → в нём, объем → объём (2) с помощью AWB
Строка 1:
[[Файл:Dolphin triangle mesh.png|thumb|250px|Пример полигональной сетки, изображающей дельфина.]]
'''Полигональная сетка''' ({{lang-en|polygon mesh}}) или [[неструктурированная сетка]] это совокупность вершин, ребер и граней которые определяют форму [[Многогранник|многогранного]] объекта в [[Трёхмерная графика|трехмерной компьютерной графике]] и объемном моделировании. Гранями обычно являются [[треугольник]]и, [[четырехугольник]]и или другие простые [[Выпуклый многоугольник|выпуклые многоугольники]] (полигоны), так как это упрощает рендеринг, но так же может состоять из наиболее общих вогнутых многоугольников, или многоугольников с дырками.
Учение о полигональных сетках это большой подраздел компьютерной графики и геометрического моделирования. Разные представления полигональных сеток используются для разных целей и приложений. Множество операций проводимых над сетками могут включать Булевую алгебру, сглаживание, упрощение и многие другие. Сетевые представления, такие как "потоковые" и "прогрессивные" сетки, используются для передачи полигональных сеток по сети. Объемные сетки отличаются от полигональных тем, что они явно представляют и поверхность и объемобъём структуры, тогда как полигональные сетки явно представляют лишь поверхность (объемобъём неявный). Так как полигональные сетки широко используются в компьютерной графике, также существуют алгоритмы трассировки лучей, [[Обнаружение столкновений|обнаружения столкновений]] и динамики твердых тел для полигональных сеток.
 
== Элементы моделирования сетки ==
Строка 20:
 
* Список граней: описание граней происходит с помощью указателей в список вершин.
* "Крылатое" представление: в немнём каждая точка ребра указывает на две вершины, две грани и четыре (по часовой стрелке и против часовой) ребра, которые еееё касаются. Крылатое представление позволяет обойти поверхность за постоянное время, но у него бо́льшие требования по памяти хранения.
* Полуреберные сетки: способ похож на "крылатое" представление, за исключением того, что используется информация обхода лишь половины грани.
* {{термин?|Четырехреберные сетки}}, которые хранят ребра, полуребра и вершины без какого-либо указания полигонов. Полигоны прямо не выражены в представлении, и могут быть найдены обходом структуры. Требования по памяти аналогичны полуреберным сеткам.
* Таблица углов, которые хранят вершины в предопределенной таблице, такой что обход таблицы неявно задает полигоны. В сущности, это "[[веер треугольников]]", используемый в аппаратном рендеринге. Представление более компактное и более производительное для нахождения полигонов, но операции по их изменению медленны. Более того, таблицы углов не представляют сетки полностью. Для представления большинства сеток нужно несколько таблиц углов (вееров треугольников).
Строка 36:
'''Вершинное представление''' описывает объект как множество вершин, соединенных с другими вершинами. Это простейшее представление, но оно не широко используемое, так как информация о гранях и ребрах не выражена явно. Поэтому нужно обойти все данные чтобы сгенерировать список граней для рендеринга. Кроме того, не легко выполняются операции на ребрах и гранях.
 
Однако, сетки ВП извлекают выгоду из малого использования памяти и эффективной трансформации. Рисунок 2 показывает пример параллелепипеда изображенный с использованием ВП сетки. Каждая вершина индексирует еееё соседние вершины. Заметьте, что последние две вершины, 8 и 9 сверху и снизу параллелепипеда, имеют четыре связанных вершины, а не пять. Главная система должна справляться с произвольным числом вершин связанных с любой данной вершиной.
 
Для более детального описания сеток ВП см. Smith (2006)(англ.).<ref name="Smith (2006)" />
Строка 46:
Сетка с использованием '''списка граней''' представляет объект как множество граней и множество вершин. Это самое широко используемое представление, будучи входными данными типично принимаемыми современным графическим оборудованием.
 
Список граней лучше для моделирования, чем вершинное представление тем, что он позволяет явный поиск вершин грани, и граней окружающих вершину. Рисунок 3 показывает пример параллелепипеда в виде сетки с использованием списка граней. Вершина v5 подсвечена, чтобы показать грани, которые еееё окружают. Заметьте, что в этом примере у каждой грани обязательно 3 вершины. Однако это не означает что у каждой вершины одно и то же количество окружающих граней.
 
Для рендеринга грань обычно посылается в графический процессор как множество индексов вершин, и вершины посылаются как позиция/цвет/структуры нормалей (на рисунке дана лишь позиция). Поэтому изменения формы, но не геометрии, могут быть динамически обновлены просто переслав данные вершины без обновления связаности граней.
 
Моделирование требует легкого обхода всех структур. С сеткой использующей список граней очень легко найти вершины грани. Также, список вершин содержит список всех граней связанных с каждой вершиной. В отличииотличие от вершинного представления, и грани и вершины явно представлены, так что нахождение соседних граней и вершин постоянено по времени. Однако, ребра не заданы явно, так что поиск все ещеещё нужен, чтобы найти все грани, окружающие заданную грань. Другие динамические операции, такие как разрыв или объединение грани, также сложны со списком граней.
 
=== "Крылатое" представление ===
Строка 145:
== Другие представления ==
 
''Потоковые сетки'' хранят грани упорядочено, но независимо, так чтобы сетку можно было пересылать по частям. Порядок граней может быть пространственным, спектральным, или базированным на других свойствах сетки. Потоковые сетки позволяют рендерить очень большие сетки даже тогда, когда они ещеещё загружаются.
 
''Прогрессивные сетки'' передают данные о вершинам и гранях с повышающимся уровнем детализации. В отличииотличие от ''потоковых сеток'', прогрессивные сетки дают общую форму целого объекта, но на низком уровне детализации. Дополнительные данные, новые ребра и грани, прогрессивно увеличивают детализацию сетки.
 
''Нормальные сетки'' передают постепенные изменения сетке как множество смещений нормалей от базовой сетки. С помощью этой техники, ряд текстур отображает желаемые нарастающие изменения. Нормальные сетки компактны, так как для выражения смещения нужно лишь одно скалярное значение. Однако, техника требует ряд сложных трансформаций чтобы создать текстуры сдвига.