isicad.ru :: портал САПР, PLM и ERP :: версия для печати

Статьи

23 декабря 2011

NURBS и САПР: 30 лет вместе

Дмитрий УшаковДмитрий Ушаков

В уходящем году инженерная отрасль отметила знаменательный юбилей – тридцать лет промышленного использования неоднородных рациональных B-сплайнов (сокращенно NURBS – от англ. Non-Uniform Rational B-Spline) для моделирования трехмерных кривых и поверхностей. В августе 1981 г. американский авиастроительный концерн Boeing предложил сделать NURBS частью промышленного стандарта IGES. И хотя это решение формально было утверждено только пару лет спустя, отрасль САПР среагировала на предложение моментально: в том же году о поддержке NURBS объявили обе ведущие компании, производящие инженерное ПО – SDRC и Computervision. Сейчас, 30 лет спустя, отыскать САПР без поддержки NURBS практически невозможно. В чем причина этого феномена? Почему изобретение NURBS революционизировало отрасль? Ниже мы попытаемся ответить на эти вопросы, а заодно вспомним всех исследователей, внесших вклад в развитие и становление NURBS.

Скульптурные поверхности

Хорошо известно, что научные исследования в области трехмерного геометрического моделирования начались вовсе не в рамках CAD (проектирования с помощью компьютера), а со стороны CAM (производства с помощью компьютера). Изобретение в начале 1950-х гг. станка с ЧПУ (числовым программным управлением) в MIT (Массачусетском технологическом институте, США) породило потребность в цифровой модели детали, необходимой для создания управляющей программы для станка. Изучением принципов моделирования трехмерных объектов занялись различные исследовательские группы, а основными заказчиками этих исследований стали крупнейшие предприятия аэрокосмической и автомобильной отраслей промышленности.

Citroen DS

Рис. 1. Citroёn DS

Посмотрите на фотографию модели Citroёn DS (годы выпуска 1955-1975), ставшей автомобильной иконой на все времена. Точное изготовление таких сложных «скульптурных» поверхностей требует использования продвинутого математического аппарата, и совершенно не случайно одно из первых исследований в этой области было проведено французским математиком Полем де Кастельжо (Paul de Casteljau), работавшим на Citroёn. Он предложил способ построения гладкой поверхности по набору контрольных точек, задающих ее геометрические свойства. Результаты его работы были опубликованы только в 1974 г., но само исследование было проведено еще в 1959 г., что дает основания именно его считать автором кривых и поверхностей, получивших имя совсем другого француза – Пьера Безье (Pierre Bézier). Впрочем, прежде чем рассказать о нем, напомним о самой проблематике «скульптурных» инженерных поверхностей.

Как можно конструктивно (не в виде абстрактного алгебраического уравнения, а путем геометрических построений) задать гладкую поверхность, обладающую требуемой эстетической формой? Простейшим способом задания является указание четырех точек в трехмерном пространстве, которые формируют так называемый билинейный лоскут (bilinear patch):

Билинейный лоскут

Рис. 2. Билинейный лоскут

Билинейный лоскут является разновидностью линейчатой поверхности (ruled surface), которая целиком состоит из отрезков, соединяющих две кривых:

Линейчатая поверхность

Рис. 3. Линейчатая поверхность

Стивен Кунс (Steven Coons), профессор MIT, обобщил такой способ задания на поверхности с двойной кривизной, получившие его имя (Coons patch):

Лоскут Кунса

Рис. 4. Лоскут Кунса

Опубликованный им в 1967 г. препринт “Surfaces for Computer-Aided Design in Space Form” [Coons 1967] получил широкую известность как «Малая красная книга». Предложенный им аппарат граничных кривых и функций сопряжения дал основу для всех дальнейших исследований в этой области. Именно Кунс первым из исследователей предложил использовать рациональные полиномы для моделирования конических сечений. Выдающийся вклад Кунса в развитие отрасли САПР подчеркивается еще и тем, что он являлся научным руководителем Айвэна Сазерлэнда (Ivan Sutherland), создателя знаменитой системы Sketchpad, ставшей прообразом нынешних САПР.

Кривые Безье

Лоскут Кунса позволял контролировать форму поверхности на ее границах, но не между ними. Необходимость контролировать форму внутри хорошо понимал Пьер Безье, разрабатывавший в начале 1960-х гг. систему UNISURF для проектирования поверхностей автомобилей Renault.
Пьер Безье

Рис. 5. Пьер Безье

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

Семейство Эрмитовых кривых

Рис. 6. Семейство Эрмитовых кривых

Безье не нравилось то, что, задавая Эрмитову кривую, мы указываем только ее поведение в концевых точках, но не можем влиять явным образом на форму кривой между этими точками (в частности, кривая может удалиться сколь угодно далеко от отрезка, соединяющего ее концевые точки). Поэтому он придумал конструктивно задаваемую кривую (позднее получившую его имя), форму которой можно контролировать в промежуточных, так называемых контрольных, точках. Кривая Безье (Bézier curve) всегда выходит из первой контрольной точки, касаясь первого отрезка ломанной, соединяющей все контрольные точки, и заканчивается в последней контрольной точке, касаясь последнего отрезка. При этом любая точка кривой всегда остается внутри выпуклого замыкания множества контрольных точек:

Кривая Безье

Рис. 7. Кривая Безье с четырьмя контрольными точками

Безье опубликовал работу по своим кривым в 1962 г., но когда двенадцать лет спустя компания Citroёn рассекретила свои исследования, выяснилось, что эти кривые были известны де Кастельжо как минимум за три года до Безье. Де Кастельжо описывал их конструктивно, и соответствующий алгоритм получил название в его честь.

Позднее Форрест установил связь между кривыми Безье и полиномами в форме Бернштейна (который были известны математикам еще с начала XX в.) Он показал, что функция, задающая кривую Безье, может быть представлена в виде линейной комбинации базисных полиномов Бернштейна. Это позволило исследовать свойства кривых Безье, опираясь на свойства данных полиномов.

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

Поверхность Безье

Рис. 8. Поверхность Безье

Сплайны

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

Способ борьбы с алгебраической степенью сложной кривой известен математикам давно – достаточно построить кривую, состоящую из гладко сопряженных сегментов, каждый из которых имеет ограниченную алгебраическую степень. Такие кривые называются сплайнами, а в математический обиход их ввел американский математик румынского происхождения Исаак Шёнберг [Schoenberg 1946]. Его теоретические работы практическим образом (в контексте САПР) переосмыслил Карл де Бур, американский математик немецкого происхождения. Его работа “On calculating with B-Splines”, равно как и вышедшая в том же году (1972) статья Кокса “The numerical evaluation of B-Splines” установили связь между геометрической формой составной кривой и алгебраическим способом ее задания.

B-сплайны являются обобщением кривых и поверхностей Безье: они позволяют аналогичным образом задавать форму кривой с помощью контрольных точек, но алгебраическая степень B-сплайна от числа контрольных точек не зависит.

Уравнение B-сплайна имеет вид, аналогичный кривой Безье, но сопрягающие функции не являются многочленами Бернштейна, а определяются рекурсивным образом в зависимости от значения параметра. Область задания параметра B-сплайна разбита на узлы (knots), которые соответствуют точкам сопряжения алгебраических кривых заданной степени.

Изобретение NURBS

Первой работой с упоминанием NURBS стала диссертация Кена Версприла (Ken Versprille), аспиранта Сиракузского университета в Нью-Йорке [Versprille 1975].

Кен Версприл, изобретатель NURBS

Рис. 9. Кен Версприл, изобретатель NURBS

Версприлл получил степень бакалавра математики в Университете Нью-Хэмпшира, затем обучался в магистратуре и аспирантуре Сиракузского университета, где в то время работал профессором Стивен Кунс. Проникшись идеями Кунса, Версприл опубликовал первое описание NURBS и посвятил этой теме свою диссертацию. Вскоре после защиты он был принят на работу в компанию Computervision на должность старшего программиста для разработки функционала трехмерного моделирования в системе CADDS 3. И хотя порученная ему работа (реализация сплайнов) совпадала с интересующей его темой, его босс, будучи сконцентрирован на выполнении проекта в срок, настоял на отказе от NURBS и реализации более простого (с математической точки зрения) аппарата кривых Безье.

Спустя несколько лет Версприлл занял руководящую позицию в Computervision, и компания наконец решила поддержать NURBS. Программист, которому поручили реализацию, пришел к Кену за советом, который не заставил себя ждать: «Измени в таком-то файле такой-то флаг с 0 на 1 и перекомпилируй код!» Оказалось, что Версприлл с самого начала реализовал NURBS, просто не включил соответствующий код в релиз. И после исправления пары ошибок этот код заработал!

В 2005 году CAD Society, некоммерческая ассоциация отрасли САПР, присудила Кену Версприллу награду за неоценимый вклад в технологию САПР в виде NURBS. Премия была вручена на конгрессе COFES, состоявшемся в том же году в Аризоне.

Вклад Boeing

В 1979 г. авиастроительная корпорация Boeing решила начать работы по разработке собственной CAD/CAM системы под названием TIGER [Solid Modeling 2011]. Одна из задач, стоявших перед ее разработчиками, состояла в выборе подходящего представления для 11 требуемых форм кривых, включавших в себя все от отрезков и окружностей до кривых Безье и B-сплайнов. В процессе работы один из исследователей – Юджин Ли (Eugene Lee) – обнаружил, что основная задача (нахождение точки пересечения двух произвольных кривых) может быть сведена к решению задачи нахождения точки пересечения кривых Безье, поскольку любая гладкая кривая в некоторой окрестности может быть аппроксимирована кривой Безье. Это мотивировало исследователей к поиску способа представления всех кривых с использованием одной формы. (О диссертации Версприла они, похоже, ничего не знали.)

Важным локальным открытием стала возможность представления окружностей и других конических сечений с помощью рациональных кривых Безье [Lee 1981]. Другим шагом к открытию стало использование в промышленной практике давно известных из научной литературы неоднородных B-сплайнов. Наконец, исследователи пришли к интеграции двух этих понятий в единую формулу – NURBS. После чего потребовалось немало усилий, чтобы убедить всех остальных разработчиков TIGER начать использовать единое представление для всех типов кривых.

Вскоре после этого компания Boeing предложила включить NURBS в формат IGES, подготовив технический документ с исчерпывающим описанием нового универсального типа геометрических данных. Предложение было с энтузиазмом воспринято – прежде всего, благодаря позиции компании SDRC.

Вклад SDRC

В 1967 г. бывшие профессора машиностроительного факультета Университета Цинциннати (США) создали компанию SDRC (Structural Dynamics Research Corporation). Изначально ориентированная на оказание консалтинговых услуг в области машиностроения, SDRC со временем превратилась в одного из ведущих разработчиков САПР в мире. Начав с области CAE (средств инженерного анализа) компания затем сосредоточилась и на CAD (проектирование), разработав систему I-DEAS, которая позволяла решать широкий спектр задач – от концептуального проектирования посредством каркасного и твердотельного моделирования до черчения, конечно-элементного анализа и составления программ для станков с ЧПУ. В основе САПР I-DEAS лежала подсистема твердотельного моделирования GEOMOD.

Изначально GEOMOD представляла твердые тела в виде многоугольных сеток, аппроксимирующих их оболочку. Осознав важность предложения Boeing по стандартизации NURBS, программисты SDRC с энтузиазмом взялись за реализацию NURBS в GEOMOD. Основным разработчиком алгоритмов был Уэйн Тиллер (Wayne Tiller), впоследствии ставший соавтором знаменитой монографии "The NURBS Book" [Piegl 1997].

Уэйн Тиллер, президент GeomWare, соавтор

Рис. 10. Уэйн Тиллер, президент GeomWare, соавтор "Книги NURBS"

Система I-DEAS прекратила свое существование, после того как в 2001 г. компания EDS поглотила SDRC, а Уэйн Тиллер применил полученный опыт при реализации библиотеки NLib (см. ниже).

Вклад GeomWare, IntegrityWare и Solid Modeling Solutions

Американская компания IntegrityWare с 1996 г. разрабатывает набор библиотек для геометрических вычислений. В 1998 г. она заключила соглашение с компанией Solid Modeling Solutions о разработке ядра твердотельного моделирования SMLib, первая версия которого увидела свет в том же году.

Ядро SMLib устроено в виде «матрешки», где каждый уровень вложенности является отдельной библиотекой функций или классов. Самой вложенной «матрешкой» является библиотека функций NLib (NURBS Library), разработанная партнерской компанией GeomWare. NLib предоставляет исчерпывающий набор функций для конструирования и манипулирования кривыми и поверхностями NURBS. Алгоритмы NLib основаны на классической монографии [Piegl 1997], а один из ее авторов – Уэйн Тиллер является основателем и президентом компании GeomWare. Библиотеку NLib используют более 85 компаний, разрабатывающих инженерное ПО.

На основе NLib реализована объектно-ориентированная библиотека GSNlib (General Surface NURBS Library), предоставляющая набор методов для создания, редактирования, получения информации и пересечения кривых и поверхностей NURBS. Самой компанией IntegrityWare эта библиотека распространялась под именем GSLib и была лицензирована такими компаниями как Robert McNeel & Associates (для разработки Rhino 3D) и Ford Motor Company.

Поверхности подразделения

Поверхности подразделения (subdivision surfaces) представляют собой мозаичные (полигональные) модели, которые итеративно строятся по базовой сетке (base mesh), с каждой итерацией приближаясь к форме моделируемой поверхности. Таким образом, две составные части поверхности подразделения – это базовая сетка и алгоритм ее сглаживания. Исторически теория поверхностей подразделения началась с работы американского художника-дизайнера Чайкина (Chaikin), который предложил способ итеративного построения кривой по контрольным точкам. Аналогично Безье, построение кривой Чайкин начинает с характеристической ломанной, задаваемой набором контрольных точек. На следующем этапе образуется новая последовательность контрольных точек, которая строится по особым правилам на основе первой последовательности. Геометрически это похоже на обрезание углов (corner cutting) начальной ломаной – каждый ее отрезок делится в соотношении 1:2:1 и углы между двумя отрезками обрезаются за счет вставки новых отрезков между укороченными старыми. Процесс продолжается до тех пор, пока кривая не станет достаточно гладкой.

Метод Чайкина

Рис. 11. Метод Чайкина

Вскоре после изобретения Чайкина было доказано, что генерируемая его алгоритмом кривая есть не что иное, как квадратичный однородный B-сплайн.

Метод Чайкина лег в основу целого семейства алгоритмов, предложенных его последователями. Одним из таких алгоритмов стал предложенный Ду (Doo) и Сабиным (Sabin) метод построения квадратичной однородной B-сплайновой поверхности по базовой четырехугольной сетке (каждая грань в такой сетке является выпуклым четырехугольником) [Doo 1978]. Вскоре они смогли распространить свой метод на любые базовые сетки, в которых каждая грань может иметь произвольное число вершин – 3, 4, 5… Полученная поверхность при этом локально (за исключением конечного числа точек) является квадратичным однородным B-сплайном. Метод Ду–Сабина состоит в том, что на очередном шаге каждая грань заменяется гранью меньшего размера с тем же количеством вершин. При этом каждая вершина уменьшенной грани есть среднее арифметическое исходной вершины, центров двух смежных ребер и центра самой грани. В результате получается несвязная сетка, в которой затем каждая новая вершина соединяется со всеми другими вершинами, полученными из одной и той же старой вершины, образуя новые грани. Полученный связный многогранник представляет собой основу для следующего шага алгоритма. Нетрудно видеть, что этот метод, как и метод Чайкина, состоит в обрезании углов:

Метод Ду-Сабина

Рис. 12. Метод Ду-Сабина

Аспиранты университета Юты Кэтмал (Catmull) и Кларк (Clark) смогли расширить метод обрезания углов для построения однородных кубических B-сплайнов (каждый локальный участок поверхности подразделения Кэтмала-Кларка является B-сплайном - за исключением конечного числа точек) [Catmull 1978]. Предложенный ими метод, как и метод Ду–Сабина, может работать на базовых сетках произвольной топологии (получаемая поверхность является локально подобной кубическому B-сплайну). Алгоритм сглаживания состоит в итеративном построении новой сетки по несколько другим правилам. Работу метода иллюстрирует следующий рисунок:

Метод Кэтмала-Кларка

Рис. 13. Метод Кэтмала-Кларка

Поверхности подразделения – удобный способ представления гладких поверхностей компактным образом. Это свойство широко используется для представления различных объектов живой природы, а поэтому хорошо подходит также для описания сложных поверхностей в системах поверхностного моделирования. (Для поддержки негладких сопряжений – острых ребер – используются специальные атрибуты, которые ограничивают область действия алгоритмов подразделения.)

В настоящее время разрабатывается несколько промышленных стандартов обмена геометрическими данными на основе поверхностей подразделения.

Чем же хороши NURBS?

Почему же кривые и поверхности NURBS сыграли столь важную роль в развитии САПР? Прежде всего потому, что они предлагают общую математическую форму для представления как аналитических геометрических объектов, так и кривых и поверхностей свободной формы. Манипуляция контрольными точками и весами NURBS позволяет гибко проектировать большое разнообразие геометрических форм. Расчеты с NURBS выполняются достаточно быстро и являются численно устойчивыми. Кривые и поверхности NURBS имеют ясную геометрическую интерпретацию, которая особенно полезна для дизайнеров, имеющих хорошие знания геометрии. NURBS обладают богатым набором инструментов (вставка/удаление/изменение узла, повышение степени, расщепление), которые могут быть использованы при создании и анализе этих объектов. NURBS являются инвариантом операций масштабирования, вращения, трансляции, обрезания, построения параллельных и перспективных проекций [Piegl 1991].

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

Несмотря на все эти недостатки, NURBS продолжают широко применяться в САПР – ведь ничего лучшего придумано не было. Впрочем...

T-сплайны

T-сплайны - вид поверхности свободной формы, подобной неоднородному рациональному B-сплайну (NURBS). Ключевое отличие T-сплайнов от NURBS состоит в том, что контрольные точки NURBS-поверхности должны образовывать топологическое подобие прямоугольной решетки, в то время как у T-сплайнов допустимы так называемые внутренние T-точки (контрольная точка с тремя, а не четырьмя соседями).

T-сплайн

Рис. 14. Т-сплайн

При моделировании органических поверхностей с помощью T-сплайнов удается сократить число контрольных точек вдвое по сравнению с NURBS (при тех же требованиях к G2-гладкости поверхности).

T-сплайны были изобретены Томасом Седербергом (Thomas Sederberg) [Sederberg 2003]. В той же работе предложено понятие T-NURCCs, являющееся обощением Т-сплайнов и поверхностей подразделения Кэтмала-Кларка и представляющее собой единый математический аппарат для работы с NURBS, Т-сплайнами и поверхностями подразделения. Для промышленного применения этой технологии в 2004 г. была основана компания T-Splines, Inc. (США), разрабатывающая собственные конечно-пользовательские программные продукты и библиотеки для разработчиков.

Вытеснит ли эта запатентованная технология NURBS? Время покажет.

Постскриптум

В тот же день, когда была опубликована эта статья, пришло известие о поглощении технологических активов T-Splines компанией Autodesk. Этот шаг однозначно свидетельствует об отраслевом признании Т-сплайнов. Вскоре эта технология появится в продуктах Autodesk, а значит и другие поставщики не смогут остаться в стороне от нее. Ждем появления Т-сплайнов в STEP?

Литература

Catmull, E., and Clark, J., 1978, Recursively generated B-spline surfaces on arbitrary topological meshes, Computer-Aided Design 10(6):350-355.

Coons S. А., 1967, Surfaces for Computer Aided Design of Space Form, MIT Project MAC, AUC-TR-41. http://publications.csail.mit.edu/lcs/pubs/pdf/MIT-LCS-TR-041.pdf

Cox, M. G., 1972, The Numerical Evaluation of B-Splines, J. Inst. Mathematics and Applications, Vol. 10, pp. 134-149.

De Boor, C., 1972, On Calculation with B-Splines, J. Approximation Theory, Vol. 6, No. 1, pp. 50-62.

Doo, D., 1978, A subdivision algorithm for smoothing down irregularly shaped polyhedrons, Proceedings on Interactive Techniques in Computer Aided Design, pp. 157-165.

Lee, E. T. Y., 1981, A Treatment of Conics in Parametric Rational Bezier Form, Boeing document, Boeing, Seattle, Wash.

Piegl, L., 1991, On NURBS: A Survey, IEEE CG&A, Vol. 11, No. 1, pp. 55-71. http://www.ece.uvic.ca/~bctill/papers/mocap/Piegl_1991.pdf

Piegl, L. A., and Tiller, W., 1997, The NURBS Book, Springer.

Schoenberg, I. J., 1946, Contributions to the problem of approximation of equidistant data by analytic functions, Part A: On the problem of smoothing or graduation, a first class of analytic approximation formulas, Quart. Appl. Math. 4, 45–99.

Sederberg, T.-W., Zheng, J., Bakenov, A., and Nasri, A., 2003, T-Splines and T-NURCCs, ACM Transactions on. Graphics, 22(3), 477-484, http://cagd.cs.byu.edu/~tspline/innovation/papers/tspline.pdf

Solid Modeling Solutions, 2011, NURBS at Boeing. http://www.smlib.com/white%20papers/nurbsatboeing.htm

Versprille, K. J., 1975, Computer-Aided Design Applications of the Rational B-Splines Approxamation Form, doctoral dissertation, Syracuse Univ., Syracuse, N.Y.

Комментариев: 25
id 8389     10 октября 2012, 18:16
 Евгений Ширинян
Дмитрий, Владимир,
Спасибо! Теперь стало понятнее.

Ответить   Цитировать выделенное

id 8849     13 ноября 2012, 15:59
 Евгений Ширинян
Возник вопрос, на который я не нахожу ответа - во всяком случае гугл и "Введение в современные САПР" не прояснили ситуацию.
В NURBS-геометрии нежелательны скругления, которые соединяют 3 ребра в одной вершине.
Это поясняет cadjunkie (Adam) из Engineer vs Designer http://www.youtube.com/watch?v=V1qn3vQEH7o&feature=player_detailpage&list=ULV1qn3vQEH7o#t=106s . Причем это проблема не только Rhino.
Каким же образом решается эта проблема, например, в Solidworks или Autodesk Inventor Fusion, где не представляет труда сделать такие скругления?
Также в другом ролике (ссылки по рукой нет) тот же cadjunkie
выполняет поверхность вращения с небольшим отступом от оси, зашивая это круглое отверстие при помощи Patch. Тем самым он избегает невозможной для NURBS топологии, когда изолинии сходятся в точку.
Интересно, если в SW такие ухищрения не нужны, то чем Rhino-сфера (та же поверхность вращения со швом) отличается от SW-сферы?

Ответить   Цитировать выделенное

id 8853     13 ноября 2012, 17:09
 Дмитрий Ушаков
Ответ Евгений Ширинян

А кто сказал, что SolidWorks зашивает треугольные лоскуты по-другому? По-момеу, там точно также получается вырожденная NURBS-поверхность, в которой несколько контрольных точек сведены в одну.
Идеальным решением такой задачи являются поверхности Безье на треугольнике (которые, впрочем, ни в одном коммерческом ядре трехмерного моделирования не реализованы, насколько мне известно). Или T-сплайны, которые допускают такую топологию.

По опыту одного из прошлых проектов вспоминаю еще такой стандартный прием - разделить треугольную область на три четырехугольных, поставив дополнительную вершину в центре.

Ответить   Цитировать выделенное

id 8863     13 ноября 2012, 21:35
 Владимир Панченко

Цитата из Евгений Ширинян, id 8849:

Каким же образом решается эта проблема, например, в Solidworks или Autodesk Inventor Fusion, где не представляет труда сделать такие скругления?



В ролике речь не просто о скруглении. Там выполняется стуковка граней по G2. А это уже не сфера, которая обычно применяется в MCAD команде "Скругление".
Что касается NURBS и трех вершин, тут как не крути NURBS описывается по UV и если один из параметров схлопнуть в 0, то будет плохо.

Ответить   Цитировать выделенное

id 8867     13 ноября 2012, 22:27
 Евгений Ширинян

Цитата из Владимир Панченко, id 8863:

В ролике речь не просто о скруглении.


Да, там выполняется сочленение по G2 для того, чтобы получить блик без переломов.
Просто у меня был вопрос о том, есть различие между сферой в SW и сферой в Rhino? Сфера в SW тоже имеет артефакты на полюсах?
До сих пор в голове никак не уложится тот факт, что окружность в Rhino и Alias - это какая-то другая окружность, чем в AutoCAD... Математика ясна, но все же...

Ответить   Цитировать выделенное

id 8868     13 ноября 2012, 23:12
 Дмитрий Ушаков
Ответ Евгений Ширинян

В ролике с Rhino на углу кубика сначала строится обыкновенная хорошо параметризованная NURBS-сфера (по команде Fillet). А потом она заменяется на поверхность, построенную по сети из трех кривых. В случае G2-сопряжений ("Curvature") это, конечно, уже не сфера. Но даже если задать в Rhino G1-гладкость ("Tangency"), все равно получается лоскут поверхности (сферы) с вырожденной NURBS-параметризацией.

В этом месте (в случае G1) вполне можно было бы вставить проверку на то, что все кривые из сети являются дугами окружностей с центрами в одной точке - в этом частном случае существует аналитическое решение (сфера), для которого можно сделать четырехугольную параметризацию. Но Rhino, как видно, этот частный случай не обрабатывает, строя вместо него обобщенное решение. А ACIS и Parasolid, вполне возможно, умеют правильно обрабатывать этот частный случай (для G1-сопряжения).

Ответить   Цитировать выделенное


Поля, помеченные * обязательны для заполнения

  Имя *

  e-mail

  web

Вы можете ввести не более 3000 символов, осталось:

Введите
первые 3 символа:

 *

Обновить



    

Комментарии:
26 декабря 2011, 0:22
 a_schelyaev
Дмитрий, спасибо большое за статью.
Очень не хватает ликбеза с историческими деталями по теме геометрии.
Особенно интересно, что у нас делалось в стране за железным занавесом, где чуть ли не в каждом КБ что-то свое лепили или использовали цельнотянутое, вместе с ЕС (а-ля IBM).

Ответить   Цитировать

26 декабря 2011, 9:51
 Дмитрий Ушаков
Забавное совпадение: публикация статьи пришлась на следующий день после объявления о сделке по поглощению технологических активов T-Splines корпорацией Autodesk. Надо будет поздравить Мэтта!

Ответить   Цитировать

26 декабря 2011, 23:04
 Павел Ишмулкин
Большое СПАСИБО, Дмитрий за статью!
... И как это можно поддерживать высокий уровень в ПМ и в математическом аппарате кривых и поверхностей свободной формы =)))
... Мне не очень нравится термин "скульптурные" поверхности. Все-таки этот термин применим, больше к объектам, произведенным руками. В крайнем случае, к поверхностям полученным с помощью Raindrop Geomagic.
Ведь поверхности свободной формы - ТОЧНО ОПИСЫВАЮТСЯ ПРАВИЛАМИ ПОСТРОЕНИЯ! Иногда не получается закатать сложное скругление математически строго. А вот любой модельщик эту задачу решит, обычным прикосновением пальца?
Р.S.
Хоть раз в жизни, увидеть практическую реализацию NURBS или Bezier на самой простой плоской кривой, но только заданной параметрически?
...Хотя, очень мельком, в 1991 году мне в ЦАГИ показывали, как они описывают кривую Bezier.

Ответить   Цитировать

27 декабря 2011, 21:08
 Евгений Ширинян
Большое спасибо за статью!
"Сейчас, 30 лет спустя, отыскать САПР без поддержки NURBS практически невозможно" - с этим, к сожалению, не соглашусь... часто используемый мной SketchUp (о его популярности не поспоришь) не поддерживает даже арок при экспорте и импорте. И это ужас. Архикад действует получше, но даже при таком нововведении как Shell, все равно имитирует поверхности - при экспорте трехмерной модели те же ужасные полигоны.

Ответить   Цитировать

29 декабря 2011, 14:12
 Дмитрий Ушаков
Цитата из a_schelyaev, id 2656:
Особенно интересно, что у нас делалось в стране за железным занавесом

К сожалению, мне не попадалось публикаций на эту тему за исключением интервью одного из пионеров САПР в СССР Вячеслава Егоровича Климова журналу CAD/CAM/CAE Observer. В этом интервью он рассказал, что "В начале 1970-х годов... я... попал на стажировку в Мюнхенский технический университет. Там воочию увидел... CADDS-2 фирмы Computervision. Меня это очень удивило, потому как в нашей стране в то время не было никаких попыток заниматься машиностроительными САПРами и необходимыми для этого проблемами геометрического моделирования." Вернувшись в СССР, В.Е. Климов организовал в МЭИ лабораторию САПР и машинной графики, которая занималась разработкой системы твердотельного моделирования "Симак", построенной на принципах CSG. Но, как он сам признал в том же интервью, "основы для создания реальных САПР в СССР до 1991 года не было именно из-за того, что отсутствовало необходимое "железо"... "Симак"... могла выполнять задачи на уровне эскизного проектирования... До реальных САПР было еще далеко..."

Ссылка на интервью В.Е. Климова:

Ответить   Цитировать

29 декабря 2011, 14:29
 Дмитрий Ушаков
Цитата из Евгений Ширинян, id 2664:
часто используемый мной SketchUp (о его популярности не поспоришь) не поддерживает даже арок при экспорте и импорте

С популярностью SketchUp действительно не поспоришь, но можно поспорить с тем, справедливо ли называть САПРом этут систему трехмерного моделирования на основе полигонального движка. Но вообще-то пользователи SketchUp не обделены кривыми Безье, B-сплайнами, поверхностями подразделения - все это доступно в виде плагинов.

Ответить   Цитировать

29 декабря 2011, 15:50
 a_schelyaev
Цитата из Дмитрий Ушаков, id 2666:

К сожалению, мне не попадалось публикаций на эту тему за исключением интервью одного из пионеров САПР в СССР Вячеслава Егоровича Климова журналу CAD/CAM/CAE Observer


Ну интересно в том числе и по основам компьютерной графики.

Если по CAD, то большая волна была после получения на VAX системы ... забыл название... потом ее переделали в ГРАПЛ БПИО. На ее основе, в частности (насколько я в курсе), НИЦ АСК (Злыгарев, ДАвыдов) лепили систему Кредо.

Ответить   Цитировать

29 декабря 2011, 16:19
 Дмитрий Ушаков
Ответ a_schelyaev

С компьютерной графикой как раз все в порядке - имена Георгия Вороного (1868-1908) и Бориса Делоне (1890-1980) навсегда увековечены в научной терминологии и упоминаются в каждом (в т.ч. англоязычном) учебнике по машинной графике.

Ответить   Цитировать

3 января 2012, 14:01
 Владимир Малюх
Цитата из a_schelyaev, id 2656:

Очень не хватает ликбеза с историческими деталями по теме геометрии.


Саш, вас история САПР в подробностях http://www.cadhistory.net/
На английском, но уже много чего из этой книжки мы переводили частями.

Ответить   Цитировать

4 января 2012, 2:55
 Владимир Захаров
Меньше всего хочется лить воду на мельницу борьбы с космополитизмом, но истина дороже   Не полемики ради, но исторической справедливости для, см. ссылку ниже. Вряд ли идейные последователи супругов Розенберг передали нашему американскому резиденту в 1986-м году секрет изготовления CAD-системы, правда? Просто отечественная "cadhistory" пока не написана. Тот, кто делает историю своими руками, не отвлекается на подобные пустяки.

Ответить   Цитировать

4 января 2012, 9:43
 Дмитрий Ушаков
Владимир, как я понимаю, речь идет о САПР "КАСКАД", разработанной в Коломенском КБ машиностроения. Расскажите, что это была за система - какие принципы геометрического моделирования были положены в ее основу?
Я пролистал подшивки "САПР и графики", а также вашего корпоративного "Стремления", но нашел немного: система была разработана для СМ, затем портирована на Labtam. Но что это была за система - чертежная или с возможностями трехмерного моделирования?

Ответить   Цитировать

10 января 2012, 12:49
 Панченко Владимир
Не уверен что приведенный выше диплом был за "КАСКАД", возможно было что-то еще более раннее. Молод был, не застал  
А сам "КАСКАД" застал, как пользователь.
Система была чертежная. Сейчас бы сказали - 2D, не параметрическая.
Были ли там команды построения NURBS и Безье, не помню.
Запомнилось другое.
"КАСКАД" был очень дружествен пользователю-конструктору. В нем свободно работали люди, которые не могли в обед даже игрушки запускать  
А еще была супер-команда "Деформация". При отсутствии параметризации, позволяла выполнять редактирование построенной геометрии с отслеживанием размеров, связей. Практически "прямое" моделирование   Схватил и потащил.

Ответить   Цитировать

11 января 2012, 12:35
 Турта В.Г.
Цитата из a_schelyaev, id 2671:
Если по CAD, то большая волна была после получения на VAX системы ... забыл название...


Bravo вроде называлась.
Если уж говорить об истории в САПР, то говорить надо о том, что сделано было впервые. Что то не помню, какое то достижение отечественное в сапростроении, которое было бы отмечено международным сообществом инженеров. Или было очевидно этапным на пути развития САПР. А вот реализованная в 1987г. на НПО "ЭНЕРГИЯ" экспертная система технолога "ЭКСПЕРТ-Т" на СМ 1420, была первой в мире!
В ней были формализованы знания технолога по обработке различных КТЭ.
Но сам подход создания системы на основе КТЭ, был реализован еще раньше
японцами в стойках станков.

Ответить   Цитировать

11 января 2012, 13:39
 Андрей Штейнбрехер
Цитата из Турта В.Г., id 2694:
экспертная система технолога "ЭКСПЕРТ-Т" на СМ 1420, была первой в мире!

Мне кажется, надо дать определение - что такое "мир".
Цитата из Турта В.Г., id 2694:
Но сам подход создания системы на основе КТЭ, был реализован еще раньше
японцами в стойках станков.

А также, что такое "впервые".

Ответить   Цитировать

18 января 2012, 16:23
 Алексей Готовцев
Дмитрий, браво.

С Вашей помощью NURBS обрастают теоретической базой, чего ооочень не хватает для первого шага в изучении поверхностного моделирования. Уж больно это сложная вещь для новичков.

Цитата из Евгений Ширинян, id 2664:

"Сейчас, 30 лет спустя, отыскать САПР без поддержки NURBS практически невозможно" - с этим, к сожалению, не соглашусь...


К сожалению, поддержка NURBS по большей части маркетингово-условная (если можно так выразиться ) и говорить о высоком качестве сложных поверхностей в большинстве САПР не приходится.

Ответить   Цитировать

9 февраля 2012, 18:48
 Олег
Цитата из Алексей Готовцев, id 2761:

К сожалению, поддержка NURBS по большей части маркетингово-условная (если можно так выразиться ) и говорить о высоком качестве сложных поверхностей в большинстве САПР не приходится.


Просто NURBS хорошо разработана и описана.
Более сложные поверхности можно строить на основе идеи МКЭ- собирая поверхности из аналогов конечных элементов. Есть разработки в этой области (коллеги по науке занималсь), но все упирается в людей и финансирование.

Ответить   Цитировать

10 октября 2012, 16:31
 Евгений Ширинян
Дмитрий,
Можно ли в двух словах описать практическое применение веса у контрольных точек кривой? Для чего их используют? Например, практическую разницу между G1 и G2 я понимаю, а что происходит с весом?
Спасибо

Ответить   Цитировать

10 октября 2012, 17:42
 Дмитрий Ушаков
Веса и дроби в уравнении (и буква R - от Rational - в названии) NURBS появились потому, что только с помощью рациональных кривых можно описать дугу окружности и другие конические сечения.

Геометрическая же интерпретация веса контрольной точки проста: увеличивая вес, мы притягиваем кривую к контрольной точке. В предельном случае (при бесконечно большом весовом коэффициенте) кривая пройдет через контрольную точку. Обратный случай (нулевой вес) ведет к тому, что контрольная точка перестает оказывать влияние на форму кривой.

А вообще почитайте статью по ссылке ниже - там все это подробно описано:

Ответить   Цитировать

10 октября 2012, 17:49
 Владимир Малюх
Ответ Евгений Ширинян


Совсем "на пальцах" и на русском:

http://www.computerbooks.ru/books/Graphics/Book-Digital-Graphics/Glava%2012/Index12.htm

Ответить   Цитировать

10 октября 2012, 18:16
 Евгений Ширинян
Дмитрий, Владимир,
Спасибо! Теперь стало понятнее.

Ответить   Цитировать

13 ноября 2012, 15:59
 Евгений Ширинян
Возник вопрос, на который я не нахожу ответа - во всяком случае гугл и "Введение в современные САПР" не прояснили ситуацию.
В NURBS-геометрии нежелательны скругления, которые соединяют 3 ребра в одной вершине.
Это поясняет cadjunkie (Adam) из Engineer vs Designer http://www.youtube.com/watch?v=V1qn3vQEH7o&feature=player_detailpage&list=ULV1qn3vQEH7o#t=106s . Причем это проблема не только Rhino.
Каким же образом решается эта проблема, например, в Solidworks или Autodesk Inventor Fusion, где не представляет труда сделать такие скругления?
Также в другом ролике (ссылки по рукой нет) тот же cadjunkie
выполняет поверхность вращения с небольшим отступом от оси, зашивая это круглое отверстие при помощи Patch. Тем самым он избегает невозможной для NURBS топологии, когда изолинии сходятся в точку.
Интересно, если в SW такие ухищрения не нужны, то чем Rhino-сфера (та же поверхность вращения со швом) отличается от SW-сферы?

Ответить   Цитировать

13 ноября 2012, 17:09
 Дмитрий Ушаков
Ответ Евгений Ширинян

А кто сказал, что SolidWorks зашивает треугольные лоскуты по-другому? По-момеу, там точно также получается вырожденная NURBS-поверхность, в которой несколько контрольных точек сведены в одну.
Идеальным решением такой задачи являются поверхности Безье на треугольнике (которые, впрочем, ни в одном коммерческом ядре трехмерного моделирования не реализованы, насколько мне известно). Или T-сплайны, которые допускают такую топологию.

По опыту одного из прошлых проектов вспоминаю еще такой стандартный прием - разделить треугольную область на три четырехугольных, поставив дополнительную вершину в центре.

Ответить   Цитировать

13 ноября 2012, 21:35
 Владимир Панченко
Цитата из Евгений Ширинян, id 8849:

Каким же образом решается эта проблема, например, в Solidworks или Autodesk Inventor Fusion, где не представляет труда сделать такие скругления?


В ролике речь не просто о скруглении. Там выполняется стуковка граней по G2. А это уже не сфера, которая обычно применяется в MCAD команде "Скругление".
Что касается NURBS и трех вершин, тут как не крути NURBS описывается по UV и если один из параметров схлопнуть в 0, то будет плохо.

Ответить   Цитировать

13 ноября 2012, 22:27
 Евгений Ширинян
Цитата из Владимир Панченко, id 8863:

В ролике речь не просто о скруглении.

Да, там выполняется сочленение по G2 для того, чтобы получить блик без переломов.
Просто у меня был вопрос о том, есть различие между сферой в SW и сферой в Rhino? Сфера в SW тоже имеет артефакты на полюсах?
До сих пор в голове никак не уложится тот факт, что окружность в Rhino и Alias - это какая-то другая окружность, чем в AutoCAD... Математика ясна, но все же...

Ответить   Цитировать

13 ноября 2012, 23:12
 Дмитрий Ушаков
Ответ Евгений Ширинян

В ролике с Rhino на углу кубика сначала строится обыкновенная хорошо параметризованная NURBS-сфера (по команде Fillet). А потом она заменяется на поверхность, построенную по сети из трех кривых. В случае G2-сопряжений ("Curvature") это, конечно, уже не сфера. Но даже если задать в Rhino G1-гладкость ("Tangency"), все равно получается лоскут поверхности (сферы) с вырожденной NURBS-параметризацией.

В этом месте (в случае G1) вполне можно было бы вставить проверку на то, что все кривые из сети являются дугами окружностей с центрами в одной точке - в этом частном случае существует аналитическое решение (сфера), для которого можно сделать четырехугольную параметризацию. Но Rhino, как видно, этот частный случай не обрабатывает, строя вместо него обобщенное решение. А ACIS и Parasolid, вполне возможно, умеют правильно обрабатывать этот частный случай (для G1-сопряжения).

Ответить   Цитировать

Все права защищены. © 2004-2024 Группа компаний «ЛЕДАС»

Перепечатка материалов сайта допускается с согласия редакции, ссылка на isicad.ru обязательна.
Вы можете обратиться к нам по адресу info@isicad.ru.