Введение
Метод представления кривых и поверхностей в компьютерной графике
Неравномерная рациональная B-сплайн (NURBS) – это математическая модель, использующая B-сплайны, которая широко применяется в компьютерной графике для представления кривых и поверхностей. Она обеспечивает высокую гибкость и точность при работе как с аналитическими (определяемыми стандартными математическими формулами), так и с моделями форм. Это метод моделирования кривых, в отличие от полигонального моделирования или цифровой скульптуры. Кривые NURBS часто используются в системах автоматизированного проектирования (CAD), автоматизированного производства (CAM) и инженерных расчетах (CAE). Они входят в состав многочисленных отраслевых стандартов, таких как IGES, STEP, ACIS и PHIGS. Инструменты для создания и редактирования поверхностей NURBS доступны в различных пакетах программного обеспечения для 3D-графики, рендеринга и анимации. Они эффективно обрабатываются компьютерными программами и при этом позволяют легко взаимодействовать с пользователем. Поверхности NURBS являются функциями двух параметров, отображающими поверхность в трехмерном пространстве. Форма поверхности определяется управляющими точками. В сжатом виде поверхности NURBS могут представлять простые геометрические фигуры. Для сложных органических форм более подходят T-сплайны и поверхности подразделения, поскольку они уменьшают количество управляющих точек вдвое по сравнению с поверхностями NURBS. В целом, редактирование кривых и поверхностей NURBS интуитивно понятно и предсказуемо. Управляющие точки всегда либо напрямую связаны с кривой или поверхностью, либо ведут себя так, как будто соединены резиновой лентой. В зависимости от типа пользовательского интерфейса, редактирование кривых и поверхностей NURBS может осуществляться через их управляющие точки (аналогично кривым Безье) или с помощью инструментов более высокого уровня, таких как моделирование сплайнами и иерархическое редактирование.
История
До появления компьютеров чертежи выполнялись вручную на бумаге с использованием различных инструментов. Линейки применялись для прямых линий, циркули – для окружностей, а транспортиры – для углов. Однако многие формы, такие как плавная кривая форштевня корабля, невозможно было построить с помощью этих инструментов. Хотя подобные кривые можно было нарисовать от руки на чертежной доске, судостроителям часто требовалась версия в натуральную величину, которую нельзя было создать вручную. Для таких больших чертежей использовались гибкие деревянные планки, называемые шпалами. Шпалы фиксировались в ряде заранее определенных точек, называемых "утками" (которые изготавливались из свинца и имели длину около 3 дюймов: "клюв" "утки" прижимался к шпале; старые руководства по проектированию яхт предполагали использование этих методов). Между "утками" эластичность материала шпалы заставляла планку принимать форму, минимизирующую энергию изгиба, тем самым создавая максимально гладкую форму, соответствующую заданным ограничениям. Форму можно было изменить, перемещая "уток". В 1946 году математики начали изучать форму шпалы и вывели кусочно-полиномиальную формулу, известную как кривая шпалы или функция шпалы. И. Дж. Шенберг дал этой функции название по аналогии с механической шпалой, используемой чертежниками. С внедрением компьютеров в процесс проектирования были исследованы физические свойства шпал, чтобы их можно было математически точно моделировать и воспроизводить при необходимости. Пионерские работы были проведены во Франции инженером Renault Пьером Безье и физиком и математиком Citroën Полем де Кастельжо. Они работали почти параллельно, но поскольку Безье опубликовал результаты своих исследований, кривые Безье были названы в его честь, а имя де Кастельжо связано лишь с сопутствующими алгоритмами. NURBS изначально использовались только в проприетарных CAD-системах автомобильных компаний. Позже они стали частью стандартных пакетов компьютерной графики. Интерактивная визуализация кривых и поверхностей NURBS в реальном времени впервые стала коммерчески доступна на рабочих станциях Silicon Graphics в 1989 году. В 1993 году CAS Berlin, небольшой стартап, сотрудничающий с Техническим университетом Берлина, разработала первую интерактивную NURBS-модель для ПК под названием NöRBS.
Порядок
Порядок кривой NURBS определяет количество соседних контрольных точек, влияющих на заданную точку на кривой. Кривая математически представляется полиномом степени на единицу меньше порядка кривой. Следовательно, кривые второго порядка (представленные линейными полиномами) называются линейными, кривые третьего порядка – квадратичными, а кривые четвертого порядка – кубическими. Количество контрольных точек должно быть больше или равно порядку кривой. На практике наиболее часто используются кубические кривые. Кривые пятого и шестого порядка иногда оказываются полезными, особенно для получения непрерывных производных более высокого порядка, но кривые более высокого порядка практически не используются из-за внутренних численных проблем и, как правило, требуют непропорционально больших затрат времени на вычисления.
Контрольные пункты
Контрольные точки определяют форму кривой. Как правило, каждая точка кривой вычисляется как взвешенная сумма нескольких контрольных точек. Вес каждой точки изменяется в зависимости от управляющего параметра. Для кривой степени d вес любой контрольной точки отличен от нуля только в d+1 интервалах параметрического пространства. В пределах этих интервалов вес изменяется согласно полиномиальной функции (базисным функциям) степени d. На границах интервалов базисные функции плавно стремятся к нулю, причём плавность определяется степенью полинома. Например, базисная функция степени один представляет собой треугольную функцию. Она возрастает от нуля до единицы, а затем снова убывает до нуля. Пока она возрастает, базисная функция предыдущей контрольной точки убывает. Таким образом, кривая интерполируется между двумя точками, и результирующая кривая является ломаной линией, которая непрерывна, но не дифференцируема на границах интервалов, или узлах. Полиномы более высокой степени имеют соответственно большее число непрерывных производных. Следует отметить, что внутри интервала полиномиальная природа базисных функций и линейность построения обеспечивают полную гладкость кривой, поэтому разрыв возможен только в узлах. Во многих приложениях тот факт, что одна контрольная точка влияет только на те интервалы, в которых она активна, является важным свойством, известным как локальная поддержка. В моделировании это позволяет изменять одну часть поверхности, не изменяя другие её части. Добавление большего количества контрольных точек позволяет лучше аппроксимировать заданную кривую, хотя только определённый класс кривых может быть представлен точно с использованием конечного числа контрольных точек. Кривые NURBS также имеют скалярный вес для каждой контрольной точки. Это позволяет более точно контролировать форму кривой, не увеличивая чрезмерно количество контрольных точек. В частности, это позволяет точно представить конические сечения, такие как окружности и эллипсы. Термин "рациональный" в NURBS относится к этим весам. Контрольные точки могут иметь любую размерность. Одномерные точки определяют скалярную функцию параметра. Они обычно используются в программах обработки изображений для настройки кривых яркости и цвета. Трёхмерные контрольные точки широко используются в 3D-моделировании, где они соответствуют обычному пониманию слова "точка" – местоположению в трёхмерном пространстве. Многомерные точки могут использоваться для управления набором значений, изменяющихся во времени, например, различными позиционными и угловыми настройками манипулятора робота. Поверхности NURBS – это лишь одно из применений этого подхода. Каждая контрольная "точка" на самом деле является полным вектором контрольных точек, определяющим кривую. Эти кривые имеют общую степень и количество контрольных точек и охватывают одно измерение параметрического пространства. Интерполируя эти контрольные векторы по другому измерению параметрического пространства, получается непрерывный набор кривых, определяющих поверхность.
Вектор узла
Вектор узлов представляет собой последовательность значений параметров, определяющих, где и как контрольные точки влияют на кривую NURBS. Количество узлов всегда равно количеству контрольных точек плюс степень кривой плюс один (т.е. количество контрольных точек плюс порядок кривой). Вектор узлов делит параметрическое пространство на упомянутые ранее интервалы, обычно называемые протяженностями узлов. Каждый раз, когда значение параметра входит в новую протяженность узла, новая контрольная точка становится активной, а старая отбрасывается. Следовательно, значения в векторе узлов должны быть неубывающими, поэтому (0, 0, 1, 2, 3, 3) допустимо, а (0, 0, 2, 1, 3, 3) – нет. Последовательные узлы могут иметь одинаковое значение. Это определяет протяженность узла нулевой длины, что означает, что две контрольные точки активируются одновременно (и, соответственно, две деактивируются). Это влияет на непрерывность результирующей кривой или ее высших производных; например, это позволяет создавать углы в кривой NURBS, которая в противном случае была бы гладкой. Несколько совпадающих узлов иногда называют узлом с определенной кратностью. Узлы с кратностью два или три известны как двойные или тройные узлы. Кратность узла ограничена степенью кривой, поскольку более высокая кратность разделила бы кривую на несвязанные части и оставила бы контрольные точки неиспользованными. Для NURBS первой степени каждый узел связан с контрольной точкой. Вектор узлов обычно начинается с узла, кратность которого равна порядку. Это логично, поскольку он активирует контрольные точки, влияющие на первую протяженность узла. Аналогично, вектор узлов обычно заканчивается узлом той же кратности. Кривые с такими векторами узлов начинаются и заканчиваются в контрольной точке. Значения узлов управляют отображением между входным параметром и соответствующим значением NURBS. Например, если NURBS описывает траекторию в пространстве во времени, узлы управляют временем, в течение которого функция проходит мимо контрольных точек. Однако для представления форм важны только отношения между разностями значений узлов; в этом случае векторы узлов (0, 0, 1, 2, 3, 3) и (0, 0, 2, 4, 6, 6) создают одну и ту же кривую. Положение значений узлов влияет на отображение параметрического пространства в пространство кривой. Рендеринг кривой NURBS обычно выполняется путем последовательного прохода по диапазону параметров с фиксированным шагом. Изменяя длину протяженностей узлов, можно использовать больше точек выборки в областях с высокой кривизной. Другое применение – в ситуациях, когда значение параметра имеет физический смысл, например, если параметр – время, а кривая описывает движение манипулятора робота. Длина протяженности узла тогда определяет скорость и ускорение, которые необходимо правильно настроить, чтобы предотвратить повреждение манипулятора или его окружения. Эта гибкость в отображении и является сутью термина "неоднородный" в NURBS. Узлы необходимы только для внутренних вычислений и обычно не полезны пользователям программного обеспечения для моделирования. Поэтому многие приложения для моделирования не делают узлы редактируемыми или даже видимыми. Обычно можно установить разумные векторы узлов, оценивая изменения в контрольных точках. Более новые версии программного обеспечения NURBS (например, Autodesk Maya и Rhinoceros 3D) позволяют интерактивно редактировать положение узлов, но это значительно менее интуитивно, чем редактирование контрольных точек.
Вставка узла
Как следует из названия, вставка узла добавляет узел в вектор узлов. Если степень кривой равна *p*, то *n* контрольных точек заменяются *n+p+1* новыми точками. Форма кривой при этом не изменяется. Узел можно вставлять несколько раз, вплоть до достижения максимальной кратности узла. Этот процесс иногда называют уточнением узлов, и его можно реализовать с помощью алгоритма, который эффективнее многократной вставки узлов.
Удаление узла
Удаление узлов — это обратная операция вставке узлов. Его цель — удалить узлы и связанные с ними контрольные точки для получения более компактного представления. Очевидно, что это не всегда возможно без потери точной формы кривой. На практике для определения возможности удаления узла используется заданная погрешность. Этот процесс применяется для очистки после интерактивной работы, в ходе которой контрольные точки могли быть добавлены вручную, или после импорта кривой из другого формата, где прямое преобразование приводит к появлению избыточных контрольных точек.
a curve from a different representation, where a straightforward conversion process leads to redundant control points.
Высота градуса
Кривая NURBS заданной степени всегда может быть представлена кривой NURBS более высокой степени. Это часто используется при объединении отдельных кривых NURBS, например, при создании поверхности NURBS, интерполирующей набор кривых NURBS, или при объединении соседних кривых. В этом процессе различные кривые должны быть приведены к одной и той же степени, как правило, к максимальной степени из набора кривых. Этот процесс известен как повышение степени.
e. g., when creating a NURBS surface interpolating between a set of NURBS curves or when unifying adjacent curves. In the process, the different curves should be brought to the same degree, usually the maximum degree of the set of curves. The process is known as degree elevation.
Кривота
Наиболее важным свойством в дифференциальной геометрии является кривизна. Она описывает локальные свойства (грани, углы и т. д.) и связи между первой и второй производными, а следовательно, и точную форму кривой. Зная производные, кривизну легко вычислить или аппроксимировать как длину дуги, используя вторую производную. Прямое вычисление кривизны с помощью этих уравнений – существенное преимущество параметризованных кривых перед их полигональными представлениями.