От Безье к NURBS

Изучением принципов описания сложных трехмерных объектов занялись еще в 50-х годах прошлого века. Необходимость усовершенствования процесса и инструментов моделирования была вызвана потребностью создания более сложных форм, чего достичь с помощью линеек, циркулей и лекал было невозможно. Кроме того, математические модели требовались и для станков с ЧПУ

В конце 50-х сразу две французские компании параллельно предложили способы математического описания поверхностей. Это были автомобильные предприятия. Пьер Безье и Поль де Кастельжо разработали процедуру описания поверхностей, созданных из кривых, которые можно контролировать в промежуточных точках (рис. 1).

Рис. 1. Citroen и образующие форму кривые Рис. 1. Citroen и образующие форму кривые

Несмотря на то что Поль де Кастельжо разработал свой метод на пару лет раньше (в 1959 году), кривые и основанные на них поверхности получили название в честь Пьера Безье, поскольку его исследование было опубликовано в 1962 году, а информация о Поле де Кастельжо появилась только в 70-х.

Кривые Безье — это усовершенствованные Эрмитовы кривые. Если Эрмитову кривую нельзя контролировать в промежуточных точках, а задается только ее поведение в начале и конце, то поведение кривой Безье можно контролировать на всех участках с помощью промежуточных точек.

Степень кривой определяет количество контрольных точек. Две контрольные точки означают, что кривая имеет первую степень и непрерывна на одном участке, пять контрольных точек свидетельствуют о четвертой степени и четырех непрерывных участках.

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

Рис. 2. График кривизны кривой Рис. 2. График кривизны кривой

Однако кривые Безье имеют ряд ограничений. В частности, их расчет усложняется с ростом количества контрольных точек, что существенно затрудняет применение таких кривых. Именно поэтому развитие математического аппарата для описания кривых и поверхностей не остановилось на работах Безье.

В качестве альтернативы кривым Безье пришли сплайны — сложные кривые, состоящие из простых сегментов, гладко сопряженных друг с другом. Как разновидность сплайнов в компьютерном моделировании закрепились NURBS, описанные в 1975 году Кеноном Версприлом.

Ключевое отличие NURBS от кривых Безье — возможность создания точки вставки (Knot), разбивающей сложную кривую на составные. Это позволяет гладко соединить две кривые Безье в одну NURBS-кривую.

При использовании таких кривых в качестве каркасов создаются поверхности. В зависимости от сложности, поверхность может иметь либо просто граничащие кривые (в простом случае), либо некоторое число промежуточных кривых (рис. 3), которые позволяют управлять поверхностью на всех участках.

Рис. 3. NURBS-поверхность Рис. 3. NURBS-поверхность

Типы непрерывностей

Современные системы поверхностного моделирования позволяют не только создавать и контролировать сложные поверхности, но и гладко соединять их между собой таким образом, чтобы человеческий глаз не смог отличить, где заканчивается одна и начинается другая поверхность. Большинство САПР позволяет соединять кривые и поверхности с непрерывностью по расположению (G0), касательной (G1) и кривизне (G2). И только Autodesk Alias создает еще более гладкие соединения по G3 и G4.

У таких соединений также есть математическое описание.

G0 соединяет профильные кривые поверхности с непрерывностью, основанной только на расположении, то есть соединение происходит стык в стык. В этом случае образуется видимое ребро и явное преломление блика на трехмерном объекте (рис. 4).

Рис. 4. Блик на модели с G0&непрерывностью Рис. 4. Блик на модели с G0&непрерывностью

G1 соединяет профильные кривые поверхности с непрерывностью по касанию к граничным поверхностям. При такой непрерывности совпадают не только конечные точки кривых или поверхностей, но и касательные к этим точкам. Хотя этот тип соединения и не допускает получения видимых острых ребер, однако кривые и поверхности не соединяются идеально гладко, что видно по «скачущему» блику (рис. 5).

Рис. 5. Блик на модели с G1-непрерывностью Рис. 5. Блик на модели с G1-непрерывностью

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

Рис. 6. Блик на модели с G2-непрерывностью Рис. 6. Блик на модели с G2-непрерывностью

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

Более подробно узнать об истории NURBS и роли, которую они играют в современных САПР, можно, прочитав статью Дмитрия Ушакова: isicad.ru. А чтобы лучше понять математику кривых и сопряжений, откройте прямо сейчас Autodesk Alias Surface или Automotive и пройдите следующий урок.

Создание и контроль кривых в Autodesk Alias

Любая кривая в Alias состоит из управляющих (Control Vertices) и узловых (Edit Point) точек. Управляющие точки (CV) контролируют «вытягивание» кривой от прямой линии между узловыми точками (EP). CV — основной инструмент управления формой кривой (рис. 7).

Рис. 7. Контрольные точки - CV Рис. 7. Контрольные точки — CV

В Alias нет непосредственного контроля количества точек NURBS-кривой, а задается степень кривой (Degree) и параметр Span — количество ее сегментов (рис. 8).

Рис. 8. Параметры кривых в Autodesk Alias Рис. 8. Параметры кривых в Autodesk Alias

Задав третью степень кривой, вы сможете построить из четырех CV кривую, состоящую из одного сегмента. Дальнейшее добавление CV к существующей кривой будет присоединять по одному новому сегменту и, соответственно, параметр Span будет увеличиваться, а Degree останется прежним. На стыке сегментов образуется EP — узловая точка (рис. 9).

Рис. 9. Узловые точки - EP Рис. 9. Узловые точки — EP

При построении по умолчанию первая CV отображается в виде квадрата, вторая точка кривой, задающая направление построения, обозначена буквой U, все последующие точки — в виде X.

В Alias можно создавать кривые, расставляя либо управляющие, либо узловые точки. Чтобы определить разницу между этими двумя способами построения, попробуйте создать в программе CV- и EP-кривые, привязавшись к узлам сетки.

Начните с CV-кривой как наиболее часто использующейся по типу построения. Дважды щелкнув левой клавишей мыши на иконке кривой с подписью cv crv (рис. 10), выберите параметр Curve Degree — 3 (рис. 11). Таким образом вы сможете расставить в рабочем окне 4 управляющие точки, создав кривую третьей степени, непрерывную на трех участках. Чтобы расставить управляющие точки в узлах сетки, удерживайте на клавиатуре клавишу ALT. Последовательно расставьте в проекционном виде (горячие клавиши — F5-F7) четыре управляющие точки в узлах сетки, как указано на рис. 12.

Рис. 10. Иконка инструмента CV Curve Рис. 10. Иконка инструмента CV Curve
Рис. 11. Настройки инструмента CV Curve Рис. 11. Настройки инструмента CV Curve
Рис. 12. Расположение CV в узлах сетки Рис. 12. Расположение CV в узлах сетки

Чтобы создать EP-кривую, нажмите и удерживайте левую клавишу мыши на иконке с инструментом CV-кривая и после появления всей группы инструментов выберите иконку с подписью ep crv (рис. 13). Затем назначьте параметр Curve Degree — 3, как и при создании CV-кривой. Привяжитесь к таким же узлам сетки, что и в примере с CV-кривой (рис. 14).

Рис. 13. Иконка инструмента EP Curve Рис. 13. Иконка инструмента EP Curve
Рис. 14. Расположение EP в узлах сетки Рис. 14. Расположение EP в узлах сетки

Разница налицо: кривые сильно отличаются друг от друга, поскольку при построении в узлах сетки расставлялись CV-точки, с помощью которых можно управлять кривой, или EP-точки, принадлежащие кривой.

Теперь необходимо разобраться с типами соединения кривых и поверхностей.

Сопряжение кривых по G0-G2 в Autodesk Alias. Контроль качества

Создайте произвольную CV-кривую третьей степени, а затем состыкуйте с ней еще одну CV-кривую. Чтобы соединить конечные точки кривых, при создании второй кривой нажмите на клавиатуре клавиши CTRL+SHIFT, укажите левой клавишей мыши на любом участке первой кривой начальную точку строящейся кривой и, не отпуская нажатых клавиш, «прокатите» ее до конечной точки построенной. Вторая кривая привяжется начальной точкой к конечной точке первой кривой. После этого достройте три управляющие точки, расставив их на плоскости так, как показано на рис. 15.

Рис. 15. Две соединенные CV-кривые Рис. 15. Две соединенные CV-кривые

Сейчас кривые соединены по G0. Чтобы посмотреть, как выглядит график кривизны, выберите инструмент Curve curvature (рис. 16) и щелкните левой клавишей мыши на каждой кривой.

Рис. 16. Иконка инструмента Curve curvature Рис. 16. Иконка инструмента Curve curvature

График кривизны (рис. 17) показывает, что соединение произошло стык в стык, совпадают только узловые точки на концах кривых, а касательные к этим точкам и их радиусы не совпадают.

Рис. 17. Непрерывность класса G0 Рис. 17. Непрерывность класса G0

Чтобы создать соединение по G1, выберите инструмент Align (рис. 18), дважды щелкнув левой клавишей мыши на соответствующей иконке.

Рис. 18. Иконка инструмента Align Рис. 18. Иконка инструмента Align

В настройках инструмента выберите тип непрерывности G1 Tangent (рис. 19) и щелкните левой клавишей мыши сначала на второй кривой, а затем — на первой.

Рис. 19. Непрерывность класса G1 и настройки инструмента Align Рис. 19. Непрерывность класса G1 и настройки инструмента Align

Вторая кривая изменится и соединится с первой с непрерывностью по касательной, а первая кривая останется неизменной. График кривизны показывает, что касательные точек совпадают, поскольку совпали нормали к этим касательным.

Не выходя из настроек инструмента Align, выберите тип непрерывности G2 Curvature (рис. 20). Вторая кривая вновь изменится и образует соединение по кривизне. Теперь совпадают не только нормали к граничащим точкам, но и их радиусы.

Рис. 20. Непрерывность класса G2 Рис. 20. Непрерывность класса G2

Урок окончен.

Полученные знания помогут вам быстрее перейти к освоению принципов моделирования в продуктах линейки Autodesk Alias, не тратя время на изучение основ систем поверхностного моделирования.

Алексей Готовцев
Consistent Software Distribution
Тел.: (495) 380−0791
E-mail: alexey.gotovtsev@csd.ru