Неравномерный рациональный базисный сплайн ( NURBS ) — это математическая модель, использующая базисные сплайны (B-сплайны), которая обычно используется в компьютерной графике для представления кривых и поверхностей . Она обеспечивает большую гибкость и точность для обработки как аналитических (определяемых общими математическими формулами ), так и смоделированных форм . Это тип моделирования кривых , в отличие от полигонального моделирования или цифровой скульптуры . Кривые NURBS обычно используются в системах автоматизированного проектирования (CAD), производства (CAM) и инжиниринга (CAE). Они являются частью многочисленных отраслевых стандартов, таких как IGES , STEP , ACIS и PHIGS . Инструменты для создания и редактирования поверхностей NURBS можно найти в различных пакетах программного обеспечения для 3D - графики , рендеринга [1] и анимации .
Они могут эффективно обрабатываться компьютерными программами, но при этом допускают простое взаимодействие с человеком. Поверхности NURBS являются функциями двух параметров, отображаемых на поверхность в трехмерном пространстве . Форма поверхности определяется контрольными точками . В компактной форме поверхности NURBS могут представлять простые геометрические формы . Для сложных органических форм больше подходят T-сплайны и поверхности подразделения , поскольку они вдвое сокращают количество контрольных точек по сравнению с поверхностями NURBS.
В целом, редактирование кривых и поверхностей NURBS интуитивно понятно и предсказуемо. [ необходима цитата ] Контрольные точки всегда либо напрямую связаны с кривой или поверхностью, либо действуют так, как если бы они были связаны резинкой. В зависимости от типа пользовательского интерфейса редактирование кривых и поверхностей NURBS может осуществляться через их контрольные точки (аналогично кривым Безье ) или через инструменты более высокого уровня, такие как сплайновое моделирование и иерархическое редактирование .
До появления компьютеров чертежи рисовались вручную на бумаге с помощью различных чертежных инструментов . Линейки использовались для прямых линий, циркуль для окружностей и транспортир для углов. Но многие формы, такие как свободная кривая носа корабля, не могли быть нарисованы с помощью этих инструментов.
Хотя такие кривые можно было нарисовать от руки на чертежной доске, судостроителям часто требовалась версия в натуральную величину, которую нельзя было сделать вручную. Такие большие чертежи делались с помощью гибких полосок дерева, называемых шлицами. Шлицы удерживались на месте в ряде заранее определенных точек свинцовыми «утками», названными так из-за выступа в форме клюва, на который опирались шлицы. Между утками эластичность материала шлица заставляла полоску принимать форму, которая минимизировала энергию изгиба, тем самым создавая максимально гладкую форму, которая соответствовала ограничениям. Форму можно было корректировать, перемещая уток. [2] [3]
В 1946 году математики начали изучать форму сплайна и вывели кусочно -полиномиальную формулу, известную как кривая сплайна или сплайн-функция. И. Й. Шёнберг дал сплайн-функции свое название из-за ее сходства с механическим сплайном, используемым чертежниками. [4]
С внедрением компьютеров в процесс проектирования физические свойства таких сплайнов были исследованы, чтобы их можно было моделировать с математической точностью и воспроизводить там, где это необходимо. Новаторская работа была проделана во Франции инженером Renault Пьером Безье и физиком и математиком Citroën Полем де Кастельжо . Они работали почти параллельно друг другу, но поскольку Безье опубликовал результаты своей работы, кривые Безье были названы в его честь, в то время как имя де Кастельжо ассоциируется только с соответствующими алгоритмами.
NURBS изначально использовались только в фирменных пакетах САПР автомобильных компаний. Позже они стали частью стандартных пакетов компьютерной графики.
Интерактивный рендеринг кривых и поверхностей NURBS в реальном времени впервые стал коммерчески доступным на рабочих станциях Silicon Graphics в 1989 году. В 1993 году CAS Berlin, небольшая стартап-компания, сотрудничающая с Техническим университетом Берлина , разработала первый интерактивный моделлер NURBS для ПК под названием NöRBS. [ требуется ссылка ]
Строящаяся поверхность, например, корпус моторной яхты, обычно состоит из нескольких поверхностей NURBS, известных как патчи NURBS (или просто патчи ). Эти поверхностные патчи должны быть подогнаны друг к другу таким образом, чтобы границы были невидимы. Это математически выражается понятием геометрической непрерывности .
Существуют инструменты более высокого уровня, которые используют возможности NURBS для создания и установления геометрической непрерывности различных уровней:
Геометрическая непрерывность в основном относится к форме результирующей поверхности; поскольку поверхности NURBS являются функциями, можно также обсуждать производные поверхности по параметрам. Это известно как параметрическая непрерывность . Параметрическая непрерывность заданной степени подразумевает геометрическую непрерывность этой степени.
Параметрическая непрерывность первого и второго уровня (C 0 и C¹) для практических целей идентична позиционной и тангенциальной непрерывности (G 0 и G¹). Параметрическая непрерывность третьего уровня (C²), однако, отличается от непрерывности кривизны тем, что ее параметризация также непрерывна. На практике непрерывность C² легче достичь, если использовать однородные B-сплайны.
Определение непрерывности C n требует, чтобы n- я производная смежных кривых/поверхностей ( ) была равна в точке соединения. [5] Обратите внимание, что (частные) производные кривых и поверхностей являются векторами, имеющими направление и величину; обе они должны быть равны.
Блики и отражения могут выявить идеальное сглаживание, которое в противном случае практически невозможно достичь без поверхностей NURBS, которые имеют по крайней мере непрерывность G². Этот же принцип используется в качестве одного из методов оценки поверхности, при котором трассированное лучом или отображенное на карте отражений изображение поверхности с белыми полосами, отражающимися на нем, покажет даже самые незначительные отклонения на поверхности или наборе поверхностей. Этот метод получен из прототипирования автомобиля, где качество поверхности проверяется путем проверки качества отражений неонового потолка на поверхности автомобиля. Этот метод также известен как «анализ зебры».
Кривая NURBS определяется своим порядком, набором взвешенных контрольных точек и вектором узла. [6] Кривые и поверхности NURBS являются обобщениями как B-сплайнов , так и кривых и поверхностей Безье , причем основное отличие заключается во взвешивании контрольных точек, что делает кривые NURBS рациональными .
( Нерациональные , или простые , B-сплайны являются особым случаем/подмножеством рациональных B-сплайнов, где каждая контрольная точка является обычной неоднородной координатой [без 'w'], а не однородной координатой . [7] Это эквивалентно наличию веса «1» в каждой контрольной точке; рациональные B-сплайны используют 'w' каждой контрольной точки в качестве веса . [8] )
Используя двумерную сетку контрольных точек, можно создавать поверхности NURBS, включая плоские участки и сечения сфер. Они параметризуются двумя переменными (обычно называемыми s и t или u и v ). Это можно расширить до произвольных измерений для создания отображения NURBS .
Кривые и поверхности NURBS полезны по ряду причин:
Здесь NURBS в основном обсуждается в одном измерении (кривые); его можно обобщить до двух (поверхности) или даже большего числа измерений.
Порядок кривой NURBS определяет количество близлежащих контрольных точек, которые влияют на любую заданную точку на кривой. Кривая математически представлена полиномом степени на единицу меньше порядка кривой. Следовательно, кривые второго порядка (представленные линейными полиномами) называются линейными кривыми, кривые третьего порядка называются квадратичными кривыми, а кривые четвертого порядка называются кубическими кривыми. Количество контрольных точек должно быть больше или равно порядку кривой.
На практике чаще всего используются кубические кривые. Иногда полезны кривые пятого и шестого порядков, особенно для получения непрерывных производных более высокого порядка, но кривые более высокого порядка практически никогда не используются, поскольку они приводят к внутренним численным проблемам и, как правило, требуют непропорционально большого времени вычислений.
Контрольные точки определяют форму кривой. [10] Обычно каждая точка кривой вычисляется путем взятия взвешенной суммы ряда контрольных точек. Вес каждой точки изменяется в зависимости от управляющего параметра. Для кривой степени 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 ) позволяют интерактивно редактировать положения узлов, но это значительно менее интуитивно, чем редактирование контрольных точек.
Базисные функции B-сплайна, используемые при построении кривых NURBS, обычно обозначаются как , в котором соответствует -й контрольной точке, а соответствует степени базисной функции. [11] Зависимость от параметров часто опускается, поэтому мы можем записать . Определение этих базисных функций рекурсивно в . Функции степени 0 являются кусочно- постоянными функциями . Они равны единице на соответствующем промежутке узла и нулю во всех остальных местах. Фактически, является линейной интерполяцией и . Последние две функции не равны нулю для промежутков узла, перекрываясь для промежутков узла. Функция вычисляется как
линейно возрастает от нуля до единицы на интервале, где не равно нулю, в то время как падает от единицы до нуля на интервале, где не равно нулю. Как упоминалось ранее, является треугольной функцией, отличной от нуля на двух промежутках узла, возрастающей от нуля до единицы на первом и падающей до нуля на втором промежутке узла. Базисные функции более высокого порядка не равны нулю на соответствующем большем количестве промежутков узла и имеют соответственно более высокую степень. Если является параметром, а является th-м узлом, мы можем записать функции и как и Функции и положительны, когда соответствующие базисные функции более низкого порядка не равны нулю. По индукции по n следует, что базисные функции неотрицательны для всех значений и . Это делает вычисление базисных функций численно устойчивым.
Опять же по индукции можно доказать, что сумма базисных функций для конкретного значения параметра равна единице. Это известно как свойство разбиения единицы базисных функций.
На рисунках показаны линейные и квадратичные базисные функции для узлов {..., 0, 1, 2, 3, 4, 4.1, 5.1, 6.1, 7.1, ...}
Один узел значительно короче других. На этом узле пик в квадратичной базисной функции более отчетлив, достигая почти единицы. Наоборот, смежные базисные функции падают до нуля быстрее. В геометрической интерпретации это означает, что кривая приближается к соответствующей контрольной точке вплотную. В случае двойного узла длина узла становится нулевой, а пик достигает единицы точно. Базисная функция больше не дифференцируема в этой точке. Кривая будет иметь острый угол, если соседние контрольные точки не коллинеарны.
Используя определения базисных функций из предыдущего абзаца, кривая NURBS принимает следующий вид: [11]
В этом случае — число контрольных точек , а — соответствующие веса. Знаменатель — нормализующий множитель, который равен единице, если все веса равны единице. Это можно увидеть из свойства разбиения единицы базисных функций. Обычно это записывают как , в котором функции известны как рациональные базисные функции .
Поверхность NURBS получается как тензорное произведение двух кривых NURBS, при этом используются два независимых параметра и (с индексами и соответственно): [11] с рациональными базисными функциями.
К объекту NURBS можно применить ряд преобразований. Например, если некоторая кривая определена с использованием определенной степени и N контрольных точек, ту же кривую можно выразить с использованием той же степени и N+1 контрольных точек. В процессе ряд контрольных точек меняют положение, и в вектор узла вставляется узел. Эти манипуляции широко используются во время интерактивного проектирования. При добавлении контрольной точки форма кривой должна оставаться прежней, образуя отправную точку для дальнейших корректировок. Ряд этих операций обсуждаются ниже. [11] [12]
Как следует из термина, вставка узла вставляет узел в вектор узла. Если степень кривой равна , то контрольные точки заменяются новыми. Форма кривой остается прежней.
Узел может быть вставлен несколько раз, вплоть до максимальной кратности узла. Это иногда называют уточнением узла и может быть достигнуто алгоритмом, который более эффективен, чем повторная вставка узла.
Удаление узла — это обратная операция вставки узла. Ее цель — удалить узлы и связанные с ними контрольные точки, чтобы получить более компактное представление. Очевидно, что это не всегда возможно при сохранении точной формы кривой. На практике допуск точности используется для определения возможности удаления узла. Этот процесс используется для очистки после интерактивного сеанса, в котором контрольные точки могли быть добавлены вручную, или после импорта кривой из другого представления, где простой процесс преобразования приводит к избыточным контрольным точкам.
Кривая NURBS определенной степени всегда может быть представлена кривой NURBS более высокой степени. Это часто используется при объединении отдельных кривых NURBS, например, при создании поверхности NURBS, интерполирующей между набором кривых NURBS, или при объединении смежных кривых. В процессе различные кривые должны быть приведены к одинаковой степени, обычно максимальной степени набора кривых. Этот процесс известен как повышение степени .
Самым важным свойством в дифференциальной геометрии является кривизна . Она описывает локальные свойства (ребра, углы и т. д.) и отношения между первой и второй производной, и, таким образом, точную форму кривой. Определив производные, их легко вычислить или аппроксимировать как длину дуги из второй производной . Прямое вычисление кривизны с помощью этих уравнений является большим преимуществом параметризованных кривых по сравнению с их многоугольными представлениями.
Нерациональные сплайны или кривые Безье могут аппроксимировать окружность, но они не могут представлять ее точно. Рациональные сплайны могут представлять любую коническую секцию, включая окружность, точно. Это представление не является единственным, но одна из возможностей представлена ниже:
Порядок равен трем, поскольку окружность является квадратичной кривой, а порядок сплайна на единицу больше степени ее кусочно-полиномиальных сегментов. Вектор узла равен . Окружность состоит из четырех четвертей окружности, связанных вместе двойными узлами. Хотя двойные узлы в кривой NURBS третьего порядка обычно приводят к потере непрерывности в первой производной, контрольные точки расположены таким образом, что первая производная непрерывна. Фактически, кривая бесконечно дифференцируема всюду, как и должно быть, если она точно представляет окружность.
Кривая точно представляет окружность, но она не точно параметризована в длине дуги окружности. Это означает, например, что точка в не лежит в (за исключением начальной, средней и конечной точек каждой четверти окружности, поскольку представление симметрично). Это было бы невозможно, поскольку координата x окружности давала бы точное рациональное полиномиальное выражение для , что невозможно. Окружность делает один полный оборот, когда ее параметр изменяется от 0 до , но это только потому, что вектор узла был произвольно выбран как кратный .