2. Примеры тестирования
методов в C3D
2.3.
Пример построения топологически сложной поверхности на S-фрейме в открытом
формате
2.4. Прямое определение
NURBS-поверхности на каркасе B-кривых
2.6. Редактирование B-поверхности
2.7. Анализ качества построения
4. Планы дальнейшего
ближайшего развития приложения FairSurfModeler
5. Планы дальнейшего
перспективного развития приложения FairSurfModeler
Приложение А. Файлы с
тестовыми моделями
Приложение FairSurfModeler определения,
построения и редактирования B-сплайновой поверхности произвольных степеней
Каркасно-кинематическое представление B-сплайновой
поверхности (B-поверхности) позволяет свести построение поверхности к
последовательному построению каркаса образующих B-сплайновых кривых (B-кривых)
на каркасе ломаных и затем каркаса направляющих B-кривых на каркасе
ломаных-столбцов каркаса S-полигонов образующих B-кривых [Муфтеев 2010] .
Если
вы умеете строить и редактировать плавные B-кривые, значит, вы умеете строить и
редактировать B-сплайновую поверхность. Нет необходимости разработки методов
построения поверхности. Используются только методы построения плавных кривых.
В
данном приложении FairSurfModeler реализуется следующая схема определения и/или
построения B-поверхности.
Основным
носителем поверхности является геометрический объект вида Nurbs поверхности
(см. класс surf_spline_surface.h).
NURBS-поверхность
степеней (1 x 1) представляет сеть точек.
NURBS-поверхность
степеней (1 x m) представляет каркас образующих B-кривых степени m.
NURBS-поверхность
степеней (n x 1) представляет каркас направляющих B-кривых степени n.
NURBS-поверхность
степеней (n x m) представляет собственно B-поверхность с управляющими B-кривыми
по U степени m и управляющими B-кривыми по V степени n.
Прямое определение B-поверхности
Прямое
определение B-поверхности реализуется на каркасе ломаных. Ломаные объединяются
в сеть точек, которая затем интерпретируется как управляющий фрейм (S-фрейм)
NURBS-поверхности степеней (n x m).
Прямое
определение B-поверхности реализуется также на наборе отдельных B-кривых,
согласованных по степени, формату и количеству сегментов. S-полигоны B-кривых
степени m объединяются в управляющий фрейм NURBS-поверхности степеней (n x m).
Построение B-поверхности
Исходным
геометрическими объектами для построения являются NURBS-поверхности степеней (1
x 1) или (n x 1). Команда построения плавных B-кривых строит управляющие
B-кривые степени m на строках S-фрейма и формирует NURBS-поверхность
степеней (1 x m) или (n x m).
Затем
NURBS-поверхности степеней (1 x m) транспонируются в NURBS-поверхность степеней
(m x 1) и повторяется команда построения плавных B-кривых степени n на строках
S-фрейма.
Меню приложения FairSurfModeler
Рис.
1.1. Список команд определения / построения B-поверхности.
1 - on
Pllnes
Команда определяет B-поверхность на каркасе
ломаных.
2 - on
B-Curves
Команда определяет B-поверхность на каркасе
B-кривых.
3 -
Params
В опции специфицируются параметры определения
или построения B-поверхности.
4 -
Transpon
Команда транспонирует B-поверхность.
5 -
Create Surf
Команда строит плавные B-кривые по строкам
S-фрейма B-поверхности.
6 -
Curve from Surf
Опция выделяет управляющую B-кривую из
B-поверхности.
7 -
Curve into Surf
Опция вставляет отдельную B-кривую в
B-поверхность, как управляющую B-кривую.
8 -
Samples
Отрабатывает примеры определения
B-поверхности на сети точек.
9 –
Exit
Выход из меню приложения.
Список опций для построения поверхности (3 –
Params)
Для
определения B-кривых по строкам S-фрейма NURBS-поверхности необходимо специфицировать
следующие опции:
Рис. 1.2. Опции построения.
1 - Closed,
2 - Degree,
3 - Init Format,
4 - Fairing,
5 - Subdivide,
6 - TypeCreate,
7 - TypeApprox,
8 - Inflections,
9 – Exit
1 - Closed
Данная опция определяет топологию кривой вида
замкнутости (рис. 3).
Рис.
1.3. Поле задания признака замкнутости.
2 –
Degree
Опция определяет степень B-кривой
(рис. 4)
Рис. 1.4. Поле задания степени B-кривой.
3 -
Init Format
Опция задает формат представления S-полигона
B-кривой (рис. 5) при прямом задании B-кривой.
Рис. 1.5.
Поле задания исходного формата при определении управляющей B-кривой.
1 – открытый формат (float);
2 – закрытый формат (clamped).
4 –
Fairing
Опция определяет степень сглаживания,
улучшения (fairing) B-кривой (рис. 1.6).
Рис.
1.6. Окно задания опции сглаживания
(Fairing).
0
– не сглаживать. Управляющая B-кривая не улучшается.
1
– сглаживать. B-кривая строится на V-кривой высокого качества.
3
– сглаживать и гармонизировать распределение точек. B-кривая строится на точках
V-кривой высокого качества с благоприятным распределением точек.
5 –
Subdivide
В опции задается степень уплотнения
(subdivision) кривой (рис. 7 )
Рис.
1.7. Поле опции уплотнения кривой.
0
– не уплотнять. Кривая не уплотняется. Количество точек кривой совпадает с
точками исходной ломаной;
1
– однократно. Количество сегментов кривой в два раза больше сегментов исходной
ломаной.
2
– двукратно. Количество сегментов кривой в 4 раза больше сегментов исходной ломаной.
6 –
TypeCreate
Опция задает способ построения B-кривой (рис.
8).
Рис.
1.8. Ввод опции способа построения управляющей B-кривой.
1
– построение B-кривой на опорной ломаной;
2
– построения B-кривой на касательной ломаной.
7 –
TypeApprox
Опция определяет способ аппроксимации (рис. 9).
Рис. 1.9.
Ввод опции способа аппроксимации
1 – изогеометрическое построение. Форма
кривой строго подобна форме исходной ломаной. Узлы сплайна не совпадают с
вершинами исходной ломаной;
2 – по узлам. Узлы сплайна совпадают с
вершинами исходной ломаной. Строгое подобие может не обеспечиваться.
8 –
Inflections
Опция задает способ построения участка
перегиба B-кривой при изогеометрическом построении (рис. 1.10).
Рис. 1.10. Опция определения S-полигона на
участке перегиба.
0 – касательная в точке перегиба V-кривой
определяет направление звена S-поигона;
1 – S-полигон определяется для обеспечения
равенства направлений касательных в точке перегиба V-кривой и B-кривой.
Откройте
файл 'Torus5Pllns.c3d’ (рис. 1). Ломаные набора получены вращением исходной
ломаной вокруг оси OZ. Точки исходной ломаной принадлежат окружности радиуса
100. Центр окружности находится на расстоянии 400 от начала координат. То есть
точки набора ломаных принадлежат тору с малым радиусом 100 и большим радиусом
400.
Рис.
2.1.1. Набор ломаных.
Выполните команду Create Surface Create Fair B-Surface.
В основном меню (см. рис. 1.1) укажите пункт
‘1 – on Pllnes’
На запрос ввода кривых последовательно укажите
ломаные (рис. 2), начиная с ломаной, указанной стрелкой, против часовой стрелки
.
Рис. 2.1.2. Ввод ломаных.
После указания всех ломаных нажмите ESC.
Программа выведет сообщение (рис. 2.1.3).
Рис.
2.1.3. Завершение вода.
Нажмите ENTER.
Программа выведет запрос на ввод параметров по строкам (рис. 4).
Рис. 2.1.4.
Запрос
ввода параметров по строкам.
На запрос ввода параметров по U в меню ввода
параметров (см. рис. 1.2) установите
- в пункте 1 – Closed установите значение 0.
- в пункте 2 – Degree установите 4
- в пункте 3
- Init Format установите 2
Остальные параметры примите по умолчанию.
Выйдите из меню кнопкой Exit.
Программа выведет запрос на ввод параметров
для столбцов S-фрейма (рис. 5).
Рис. 2.1.5. Запрос на ввод параметров по столбцам
S-фрейма.
На запрос ввода параметров по V в
меню ввода параметров установите такие же параметры.
Программа сформирует NURBS поверхность по
параметрам определения (рис. 6).
Рис. 2.1.6. Прямое определение NURBS-поверхности степеней (4 х 4) в закрытом формате на сети точек.
Дважды щелкните по поверхности (рис. 7). Убедитесь, что s-фрейм NURBS-поверхности
совпадает с вершинами исходных ломаных.
Рис.
2.1.7. S-фрейм в открытом формате (Float).
Выполните
все действия из примера 1. Различие будет в опциях определения параметров. На запрос ввода
параметров по U в меню ввода параметров (см. рис. 1.2) установите
- в пункте 1 – Closed установите значение 1
- в пункте 2 – Degree установите 8
- в пункте 3
- Init Format установите 1
Остальные параметры по умолчанию.
На запрос ввода параметров по V в меню ввода
параметров установите такие же параметры.
Программа определит NURBS-поверхность степеней
(8 x 8) Замкнутую по U и замкнутую по V (рис. 1).
Рис. 2.2.1. Прямое определение замкнутой NURBS-поверхности
степеней (8 х 8) в открытом формате на сети точек.
Дважды щелкните по поверхности (рис. 2). S-фрейм NURBS-поверхности в закрытом
формате не совпадает не совпадает с вершинами ломаных. Программа определения
сплайна (MbSplineSurface) использует
закрытый формат для представления B-поверхности
в графическом пространстве C3D.
Рис.
2.2.2. S-фрейм в закрытом формате (Clamped).
Пример
демонстрирует возможность конcтруирования топологически сложных поверхностей,
составленных из отcеков B-поверхностей [Муфтеев и др. 20XX].
Выполните в основном меню (см. рис. 1.1)
пункт '8 - Samples' (см. рис. 1.2)
Рис. 1. Пункт выполнения образцов определения
NURBS-поверхности.
Выберите образец 'Bottle of Klein' (рис. 2).
Рис.
2.3.2. Прямое построение на S-фрейме в открытом
формате
Перенесите
объект в формате IGES в КОМПАС 3D.
Выполните анализ качества командой “Зебра” (рис. 3)
Рис.
2.3.3. Анализ качества поверхности.
Определим
B-поверхность на каркасе B-кривых. Откройте файл BCurves18.c3d (рис.1)
Рис. 2.4.1.
Каркас B-кривых.
На запрос ввода параметров по V установите
следующие параметры
Closed = 1,
Degree = 8.
Приложение определит NURBS
поверхность степеней (8 x 8) (рис. 2).
Рис. 2.4.2. Прямое определение
B-поверхности на каркасе B-кривых.
Кривые замкнуты по U, поверхность замкнута и по U и по V.
Построение
плавной B-поверхности выполняется на NURBS-поверхностях степеней (1 x 1) или (n
x 1) путем построения плавных B-кривых на строках исходного S-фрейма.
Пусть
задан набор ломаных (см. рис. 2.1.1).
Определим
на наборе ломаных NURBS поверхность степеней (1 x 1) (рис. 1)
Рис.
2.5.1. NURBS-поврехность степеней (1 x 1).
На
этой поверхности построим плавные управляющие B-кривые степени 8. В меню приложения (cм. Рис. 1.1) в
пункте установки параметров (см. рис. 1.2) задайте следующие параметры
Closed
= 1
Degree = 8
Остальные
параметры примите по умолчанию. Программа построит NURBS поверхность степеней
(1 x 8) (рис. 2).
Рис. 2.5.2. Построение NURBS-поверхности степеней (1 x 8 ).
Отметим, что к этому примитиву можно было придти
прямым определением NURBS поверхности на наборе B-кривых.
Сохраните примитив в файле ‘Torus5Nurbs18.c3d’.
Далее транспонируйте данную поверхность и
перейдите к NURBS поверхности степени (8 x 1).
Предварительно выделите исходную поверхность. В меню приложения (см.
рис. 1.1) выполните опцию 'Transpon' и укажите исходную
поверхность. Затем удалите выделенную
исходную поверхность. В графическом пространстве останется транспонированная
B-поверхность степеней (8 x 1). Сохраните примитив в файле ‘Torus5Nurbs81.c3d'.
Постройте плавные управляющие B-кривые
на строках S-фрейма данной поверхности. Выделите исходную
поверхность. В меню приложения (cм. рис. ) в
пункте установки параметров задайте следующие параметры
Closed
= 1
Degree = 8
Остальные
параметры примите по умолчанию. Выполните пункт 'Create Surf'. Программа построит NURBS поверхность степеней (8 x
8) (рис. 1).
Рис. 2.5.1. NURBS-поверхность степеней (8 x
8).
Удалите
выделенную исходную поверхность. В графическом пространстве останется построенная
плавная B-поверхность степеней (8 x 8) (рис. 2).
Рис. 2.5.2. NURBS-поверхность степеней (8 x 8).
Редактирование
вершин S-фрейма
Рис. 2.6.1. Исходная поверхность с выделенным
S-фреймом.
Отредактируйте S-фрейм (рис. 2).
Рис. 2.6.2. Отредактированная на S-фрейме поверхность.
Редактирование
управляющих B-кривых
По существу, это тоже прямой метод редактирования
S-фрейма B-поверхности. Но в данном методе вы можете контролировать график
кривизны управляющей кривой. При редактировании важно учитывать следующее
свойство определения изопараметрических кривых посредством каркаса управляющих кривых.
Любая изопараметрическая кривая (изопарм)
на поверхности однозначно определяется m + 1 управляющими кривыми. При этом изопарм
определяется как взвешенная сумма m + 1 управляющих кривых. Взвешивание происходит
по значениям тех же базисных функций (B-сплайнов), которые участвуют в определении
точки сегмента сплайна по m + 1 управляющим вершинам.
Из такой интерпретации определения изопарма
выводятся следующие важные принципы построения и редактирования B-поверхности
высокого качества:
1) Если все m+ 1 кривые одинаковые
по форме, то и образующая кривая будет такой же формы;
2) Чтобы образующие кривые плавно переходили
из одной формы в другую, необходимо построить управляющие кривые с плавным
переходом из одной формы S-полигона в другую.
Редактирование выполняется на
строках S-фрейма. Если необходимо редактировать в трансверсальном направлении,
то необходимо транспонировать B-поверхность.
Откройте файл ‘Torus5Nurbs88.c3d’. В
меню приложения выполните опцию 'Curve from Surf' , укажите поверхность. На запрос 'Укажите номер
начальной кривой’ задайте
значение 6 (рис. 2.6.3).
Рис. 2.6.3.
Указывается номер начальной кривой.
На запрос ‘Укажите количество кривых’ pадайте
значение 3 (рис. 4).
Рис. 2.6.4.
Указывается количество кривых.
Программа построит 3 выделенные кривые (рис. 5).
Рис. 2.6.5. Выделенные 3 управляющие кривые.
Выйдите из приложения и отредактируйте их
(рис. 6).
Рис. 2.6.6. Редактирование управляющих кривых.
Вставьте отредактированные управляющие кривые
в поверхность. Войдите в приложение и выполните опцию ‘7 – Curve into Surf ’ (рис. 7).
Рис. 2.6.7. Вставка кривых в поверхность.
Затем последовательно укажите поверхность и
три кривые. Нажмите ESC. Программа вставит S-полигоны кривых в S-фрейм
поверхности. S-полигоны отредактированных кривых изменят S-фрейм B-поверхности
(рис. 8, 9).
Рис. 2.6.8. Отредактиванная
поверхность.
Рис. 2.6.9. Отредактированная поверхность.
Редактирование
поверхности посредством управляющих кривых в трансверсальном направлении
(условно в направлении V)
Откройте исходный примитив (файл ‘Torus5Nurbs88.c3d’).
Выделите его. Транспонируйте исходный примитив. Выполните команду
Create > Surface > Fair Surface
Из меню приложения выполните опцию Transpon (рис. 10)
Рис. 2.6.10. Команда ‘4 – Transpon’.
Удалите выделенный исходный примитив. В
графическом пространстве останется транспонированная NURBS-поверхность (рис. 11)
.
Рис. 2.6.11.
Транспонированная NURBS поверхность.
Выделите поверхность. Выполните из меню приложения опцию ‘6-Curve from Surf ’ (рис. 12).
Рис. 2.6.12. Опция
‘6-Curve from Surf ’.
Выделите 3 управляющие кривые, начиная с
номера 8 (рис. 13).
Рис. 2.6.13. Выделенные кривые.
Выйдите из приложения по опции '9-Exit’. Отредактируйте, выделенные
из поверхности кривые, посредством S-полигонов
кривых (рис. 14).
Рис. 2.6.14. Отредктированные кривые.
Войдите в приложение и вставьте
отредактированные кривые в управляющие кривые поверхности (рис. 15).
Рис. 2.6.15. Вставка управляющих кривых в
поверхность.
Укажите те же параметры, которые были заданы
при выделении. Номер первой кривой 8. И затем последовательно укажите 3 кривые
(рис. 16).
Рис. 2.6.16. Отредактированная поверхность и исходный
примитив.
Удалите выделенный исходный примитив (рис. 17).
Рис. 2.6.17.
Отредактированная поверхность.
Обратите внимание на то, что управляющие
кривые не принадлежат поверхности.
Считаем в КОМПАС файл Torus5Nurbs88.c3d
(рис. 1).
Рис. 2.7.1. B-поверхность перенесена в КОМПАС.
Для переноса в другую CAD-систему сохраним B- поверхность
в формате IGES (файл Torus5Nurbs88.igs). Считаем данный файл в другую CAD-систему
и покрасим в синий цвет (рис. 2).
Рис. 2.7.2. B-поверхность в CAD-системе.
Построим примитив Torus (красного цвета) с теми параметрами, которые
мы использовали при построении каркаса ломаных для построения B-поверхности
(рис. 3).
Рис. 2.7.3.
Совмещение примитива Torus с построенной B-поверхностью.
Визуально практическое совпадение поверхностей
примитива Torus и построенной B-поверхности.
Это простейшая B-сплайновая поверхность (8*8)
степеней на равномерной сетке!
Парадигма "ab initio"
Система предназначена для моделирования кривых
и поверхностей в парадигме "ab
initio" (с чистого листа). Дизайнер задает точки и ломаные непосредственно
в графическом поле и визуально контролирует форму ломаных. То есть определяет
структуру ломаной, которая однозначно определяет структуру моделируемой кривой.
Локально выпуклые участки ломаной определяют локально выпуклые участки кривой,
прямолинейные участки ломаной определяют прямолинейные участки кривой, участки
перегиба ломаной определяют участки перегиба кривой, кручение ломаной
определяет кручение кривой.
Количество точек должно быть достаточным для
задания необходимой формы (структуры) ломаной, но не избыточным.
При использовании опции улучшения (fairing)
используется виртуальная кривая (V-кривая). Образно говоря, виртуальная кривая
подобна физическому сплайну, который использовали при вычерчивании кривых на
плазе.
V-кривая довольно требовательна к структуре
исходной ломаной.
Одним из требований является требование
плавного изменения кручения пространственной ломаной.
Углы между нормалями смежных двузвенников
ломаной не должны превышать 45 градусов.
Реверсивный
инжиниринг
Методы построения плавных кривых и
поверхностей не предназначены для аппроксимации плотной сети точек, снятой с
физического макета с помощью сканера.
Только в том случае, если вы хотите улучшить
геометрию макета, можно использовать методы построения плавных кривых и
поверхностей.
Придерживайтесь следующей схемы
конструирования поверхности на макете. Нарисуйте на макете сеть плавных кривых и снимайте точки пересечения кривых сети.
Воображаемые ломаные визуально должны удовлетворять требованиям построения плавных
кривых.
Если пространственная ломаная плохо структурирована
по качеству кручения, то для более устойчивого построения B-кривой, отключите
флаг улучшения (fairing). Или используйте традиционный метод (не
изогеометрический) построения B-кривых.
Для построения качественной кривой рекомендуется позаботиться о хорошей структуре
ломаной с обеспечением регулярной или
гармоничной формы.
Преимущества
методов построения B-поверхности
1. Изогеометричность определения B-поверхности
на сети точек.
2. Высокое качество
B-поверхности высоких степеней по критериям плавности.
Ограничения методов построения
1. Вершины строк исходной
сети точек не совпадают с узлами образующих B-кривых. Вершины принадлежат образующей B-кривой, за
исключением особых конфигураций строк сети.
Вершины S-полигонов образующих B-кривых не
принадлежат узлам управляющих B-кривых в трансверсальном направлении. Из-за
смещения узловых точек управляющих
B-кривых изопараметрические кривые не
будут точно совпадать с образующими B-кривыми.
2. Возможна нерегулярность формы
ломаных-столбцов на каркасе S-полигонов образующих B-кривых. Поэтому
предварительно необходимо проверить качество ломаных-столбцов и
откорректировать их форму.
Корректировка ломаных-столбцов также может
вызвать большие отклонения B-поверхности
от исходной сети точек.
3. Поэтому для окончательного контроля
качества приближения необходимо использовать опцию контроля фактического
отклонения вершин исходной сети от B-поверхности.
Ограничения
по обмену с CAD-системами
1.
В C3D преобразование B-поверхности, замкнутой по U или V, в IGES не работает.
2.
В КОМПАС преобразование B-поверхности, прочитанной из C3D в формате *.c3d , в IGES
работает.
3.
Импорт в AutoCAD IGES из КОМПАС. Файл корректно не считывается.
1.
Расширить функционал приложения методом
редактирования замкнутых B-поверхностей на S-фрейме в открытом формате.
2.
Расширить функционал приложения методом
редактирования замкнутых управляющих B-кривых B-поверхности посредством
S-полигонов в открытом формате.
3.
Расширить функционал приложения методом
построения B-поверхности на расширенной сети точек, которая задает направления
касательных векторов в граничных точках сети.
4.
Расширить функционал приложения методом
построения B-поверхности на расширенной сети точек, которая задает направления
касательных векторов и значения кривизны в граничных точках сети.
5.
Ввести опцию оценки фактической точности приближения на различных форматах
представления исходных данных.
6.
Провести исследование и разработать формализованные методы корректировки формы ломаных-столбцов каркаса S-полигонов
образующих B-кривых с обеспечением заданного отклонения B-поверхности.
1.
Провести исследование и разработать приложение для моделирования топологически
сложных поверхностей высокого порядка гладкости, составленных из отсеков
B-поверхностей высоких степеней.
1.
Предложена технология моделирования и редактирования B-сплайновых поверхностей
в C3D.
2.
Разработано приложение FairSurfModeler app C3D моделирования и редактирования B-поверхностей произвольных степеней.
3.
Приведены примеры тестирования методов определения, построения
и редактирования B-сплайновых поверхностей.
4.
Показаны преимущества и ограничения метода.
5.
Поставлены задачи дальнейшего развития метода построения B-поверхности.
[Муфтеев
2010] Муфтеев В.Г., Марданов А.Р., Магазов Р.А. Изогеометрическое моделирование
NURBS поверхностей. Прикладная геометрия. Выпуск 12, N 25 (2010), стр. 9 – 45.
- Режим доступа к журн.: http://www.mai.ru. - Загл. с титул. экрана. -
№гос.регистрации 019164.
[Forrest 78] Forrest A.R. A
unified approach to geometric modelling //SIGGRAPH’78. – NewYork:ACM, 1978. –
p.264-270.
[Муфтеев
и др. 20XX]. Метод конструирования поверхности
сложной топологии высокого порядка гладкости.
‘Torus5Pllns.c3d’
– набор ломаных.
‘Torus5BCurves.c3d’ – набор B-кривых степени 8.
‘Torus5Nurbs11.c3d’ – сеть точек в виде NURBS поверхности степеней (1*1).
‘Torus5Nurbs18.c3d’
– каркас B-кривых степени 8 в виде NURBS поверхности степеней (1*8).
‘Torus5Nurbs81.c3d’
– транспонированный каркас B-кривых степени 8 в виде NURBS поверхности степеней
(8*1). Образующие B-кривые перешли в направляющие B-кривые.
‘Torus5Nurbs88.c3d’
– B-поверхность степеней (8*8).
‘Torus5Nurbs88.igs’
– B-поверхность в формате IGES.