9. Примеры моделирования поверхностей высокого качества

9.1. Построение поверхности на простой 3D Сети

9.2. Построение поверхности на сети с касательными строками

9.3. Построение поверхности на сети с “касательными клетками”

9.4. Построение поверхности на опорной замкнутой сети

9.5. Построение поверхности на расширенной сети

9.6. Построение поверхности на v-фрейме (каркасе b-сплайновых кривых)

9.7. Задание и редактирование b-сплайновой поверхности  s-фреймом

 

 

9. Примеры моделирования поверхностей высокого качества

 

9.1. Построение поверхности на простой 3D Сети

 

Для демонстрации особенностей различных ГО для построения поверхности в качестве исходной сети используется простейшая 3D Сеть, данная в чертеже UV_3DMesh.dxf  в папке примеров Examples.

Откроем UV_3DMesh.dxf  в nanoCAD.

 

Рисунок 9.1.1. Простая 3D Сеть из файла UV_3DMesh.dxf

 

Перенесем 3D Сеть в Web FairCurveModeler на страницу Surface3D.

Выполним команду V_SPoly и скопируем таблицу координат точек сети из протокола в буфер памяти. На странице Surface3D вставим текст вставим в текстовое поле 'Instructions and Messages:'. Нажмем кнопку [Base 3D Mesh from Table]

Установим опции восстановления NURBS поверхности степеней 8,8, шаги интерполяции Step U:[0.1], Step V:[0.1]. Построим b-сплайновую поверхность (рисунок 9.1.2).

Рисунок 9.1.2. Поверхность, построенная на опорной сети.

 

Скачаем DXF-модель сети интерполированных точек (кнопка [Interpolated Surf to DXF]). Откроем  файл в nanoCAD (рисунок 9.1.3).

 

Рисунок 9.1.3. B-сплайновая поверхность, построенная на базовой 3D Сети, в nanoCAD

 

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

 

 

9.2. Построение поверхности на сети с касательными строками

 

 

 

Перенесем Tangent_U_3DMesh_on_Simple_Surf.dxf ту же 3D Сеть в Web FairCurveModeler на страницу Surface3D (рисунок 9.2.1).

 

Рисунок 9.2.1. Сеть для примера построения поверхности.

 

Выполним команду V_SPoly и скопируем таблицу координат точек сети из протокола в буфер памяти. На странице Surface3D вставим текст вставим в текстовое поле 'Instructions and Messages:'. Нажмем кнопку [Tangent U 3D Mesh from Table]

Установим опции восстановления NURBS поверхности степеней 8,8, шаги интерполяции Step U:[0.1], Step V:[0.1]. Построим b-сплайновую поверхность (рисунок 9.2.2).

Рисунок 9.2.2. B-сплайновая поверхность, касательная к строкам 3D Mesh.

 

Скачаем DXF-модель сети интерполированных точек (кнопка [Interpolated Surf to DXF]). Откроем  файл в nanoCAD (рисунок 9.2.3).

 

Рисунок 9.2.3. Сеть, касательная к поверхности ломаными-строками.

 

Как видим, поверхность проходит касательно к ломаным-строкам исходной 3D Сети.

 

 

9.3. Построение поверхности на сети с касательными клетками”

 

Для демонстрации метода используем сеть UV_3DMesh.dxf (см. рисунок 9.1.1).

 

Перенесем 3D Сеть в Web FairCurveModeler на страницу Surface3D.

Выполним команду V_SPoly и скопируем таблицу координат точек сети из протокола в буфер памяти. На странице Surface3D вставим текст вставим в текстовое поле 'Instructions and Messages:'. Нажмем кнопку [Tangent UV 3D Mesh from Table]

Установим опции восстановления NURBS поверхности степеней 8,8, шаги интерполяции Step U:[0.1], Step V:[0.1]. Построим b-сплайновую поверхность (рисунок 9.3.1).

Рисунок 9.3.1. B-сплайновая поверхность, “касательная к клеткам сети”.

Скачаем DXF-модель сети интерполированных точек (кнопка [Interpolated Surf to DXF]). Откроем  файл в nanoCAD.

 

Рисунок 9.3.2. Поверхность, перенесенная в nanoCAD.

 

Как видим, поверхность проходит “касательно к клеткам” исходной 3D Сети.

Более точно “касательность поверхности к клеткам сети” означает следующее:

1) строятся образующие b-сплайновые кривые касательные к ломаным-строкам исходной сети;

2) строятся направляющие кривые b-сплайновой поверхности, касательные к направляющим ломаным сети на каркасе s-полигонов образующих b-сплайновых кривых.

 

То есть формально поверхность не касается косой плоскости отдельной клетки исходной сети, но практически очень близка к этому.

 

 

 

 

 

9.4. Построение поверхности на опорной замкнутой сети 

 

Откроем в nanoCAD пример Torus_Closed.dxf

Исходная 3D Сеть принадлежит торовой поверхности. Обратите внимание на то, как неравномерно расположены точки (рисунок 9.4.1).

 

Рисунок 9.4.1. Исходная опорная сеть.

 

Перенесем 3D Сеть в Web FairCurveModeler на страницу Surface3D.

Выполним команду V_SPoly и скопируем таблицу координат точек сети из протокола в буфер памяти. На странице Surface3D вставим текст вставим в текстовое поле 'Instructions and Messages:'. Нажмем кнопку [Tangent UV 3D Mesh from Table](рисунок 9.4.2).

Рисунок 9.4.2. Сеть в web FairCurveModeler.

 

Установим опции замыкания строк и столбцов сети,  опции восстановления NURBS поверхности степеней 8,8, шаги интерполяции Step U:[0.1], Step V:[0.1]. Построим b-сплайновую поверхность (рисунок 9.4.3).

Рисунок 9.4.3. Замыкание сети.

 

Построим поверхность на замкнутой сети (рисунок 9.4.4).

Рисунок 9.4.4. Замкнутая поверхность.

 

Скачаем DXF-модель сети интерполированных точек (кнопка [Interpolated Surf to DXF]). Откроем  файл в nanoCAD (рисунок 9.4.5).

 

Рисунок 9.4.5. Замкнутая поверхность в nanoCAD.

 

Пример демонстрирует возможность геометрически точной аппроксимации квадратичной поверхности тора посредством  NURBzS поверхности.

 

 

9.5. Построение поверхности на расширенной сети

 

Откроем в nanoCAD пример Torus_Extended.dxf.

Исходная расширенная 3D Сеть принадлежит торовой поверхности (рисунок  9.5.1). Граничные строки сети определяют концевые точки касательных векторов в граничных точках участка тора. Обратите внимание на то, как неравномерно расположены точки.

Рисунок 9.5.1.  Расширенная сеть торовой поверхности с фиксированными касательными в концевых линиях участка тора.

 

Перенесем 3D Сеть в Web FairCurveModeler на страницу Surface3D.

Выполним команду V_SPoly и скопируем таблицу координат точек сети из протокола в буфер памяти. На странице Surface3D вставим текст в текстовое поле 'Instructions and Messages:'. Нажмем кнопку [Base UV 3D Mesh from Table]. Установим опции

Extended net u:

(*)on

( )off

Построим NURBzS поверхность ([Prepare Surf] -> [Create]) (рисунок  9.5.2).

Рисунок 9.5.2. NURBS поверхность, построенная на расширенной сети.

 

Скачаем DXF-модель сети интерполированных точек (кнопка [Interpolated Surf to DXF]). Откроем  файл в nanoCAD (рисунок 9.5.3).

 

Рисунок 9.5.3. NURBS поверхность, построенная на расширенной сети, в nanoCAD.

 

 

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

NURBzS поверхность нельзя редактировать с помощью управляющего фрейма без нарушения плавности поверхности.

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

Для перехода к b-сплайновой поверхности степеней (8,8) установим опции

Surf Approximation:

(  )by NURBzS

(*)by NURBS

Degree U:  [8  ] Degree V: [8  ]

Конвертируем исходный геометрический определитель последовательно в каркас s-полигонов образующих сплайновых кривых  и затем в s-фрейм b-сплайновой поверхности ([V 3D Mesh] [Create]-> [S 3D Mesh][Create]) (рисунок  9.5.4)

 

Рисунок  9.5.4. Переход к определителю ‘S 3D Mesh’.

 

Перенесите определитель b-сплайновой поверхности в nanoCAD с помощью процедуры пререноса, описанной в п.6.4. После переноса выполните команду V_SMshNrb (рисунок 9.5.5) .

Рисунок  9.5.5. B-сплайновая поверхность степеней 8,8 в графическом пространстве nanoCAD.

 

Используя широкий набор средств редактирования 3D примитивов в гарфической среде в nanoCAD отредактируйте s-фрейм поверхности. Например, можно сделать вздутие тора в средней части (рисунок 9.5.6).

Рисунок 9.5.6. Отредактированный s-фрейм b-сплайновой поверхности.

 

Затем можно перенести отредактированный определитель поверхности в web приложение (рисунок 9.5.7).

Рисунок  9.5.7. Отредактированная поверхность в web –приложении.

 

9.6. Построение поверхности на v-фрейме (каркасе b-сплайновых кривых)

 

Для демнострации метода используем сеть V_3D_Meah_on_Simple.dxf (рисунок 9.6.1).

 

Рисунок 9.6.1. Сеть на каркасе s-полигонов.

 

Перенесем сеть в web FairCurveModeler. Выполним команду V_SPoly и скопируем таблицу координат точек сети из протокола в буфер памяти. На странице Surface3D вставим текст вставим в текстовое поле 'Instructions and Messages:'. Нажмем кнопку [V 3D Mesh from Table] (рисунок 9.6.2).

Рисунок 9.6.2. V-сеть.

 

Установим опции восстановления NURBS поверхности степеней 8,8, шаги интерполяции Step U:[0.1], Step V:[0.1]. Построим b-сплайновую поверхность (рисунок 9.6.3).

Рисунок 9.6.3. B-сплайновая поверхность, построенная на каркасе s-полигонов.

 

Скачаем DXF-модель сети интерполированных точек (кнопка [Interpolated Surf to DXF]). Откроем  файл в nanoCAD (рисунок 9.2.4).

Рисунок 9.6.4. B-сплайновая поверхность в nanoCAD.

 

V-сеть используется как промежуточный ГО b-сплайновой поверхности. Представление ГО в виде v-сети позволяет проконтролировать форму направляющих ломаных v-сети на предмет соответствия ограничениям и отредактировать их форму.

 

 

 

 

 

9.7. Задание и редактирование b-сплайновой поверхности  s-фреймом

 

Можно задавать b-сплайновую поверхность произвольных степеней m, n (0 < m,n < 11).

Можно редактировать b-сплайновую поверхность, построенную в web FairCurveModeler или заданную непосредственно s-фреймом (S 3D Сетью), непосредственно в графической среде nanoCAD. Редактирование ведется на s-фрейме b-сплайновой поверхности отображением сети изопараметрических линий (изопармов) поверхности произвольной плотности. Правила редактирования s-фрейма для получения конфигурации изопараметричесих кривых регламентированной формы даются в методике авторов (см. статью "Геометрически устойчивое моделирование NURBS кривых и поверхностей произвольных степеней").

Определение b-сплайновых поверхностей на равномерной сетке с одинаковыми степенями m,m дает возможность конструирования топологически сложных поверхностей, составленных из s-фреймов отсеков по определенным правилам объединения, предложенным R.A.Forrest'ом [Forrest  ] и обобщенным в работе авторов [Муфтеев 86].  Составная топологически сложная поверхность сохраняет высокий порядок гладкости в любой точке интегральной поверхности.

Предлагаемый пример Klein55.dxf показывает частный случай построения топологически сложной поверхности вида бутылки Клейна. Пример демонстирует правила объединения отсеков b-сплайновой поверхности степеней 5,5 в открытом формате для получения составной поверхности высокого порядка гладкости (в данном примере односторонней поверхности вида бутылки Клейна).

Считайте подготовленный пример S 3D Сети Klein55.dxf (рисунок 9.7.1).

Рисунок 9.7.1. Сеть в открытом формате.

 

Загрузите приложение nanoCurveModeler. Выполните команду

Команда: V_SMSHNRB

На запрос

Select object (3D-mesh/):

Укажите 3D Сеть.

Введите параметры b-сплайновой поверхности

Enter Option of Topology U (Closed = 1 / Unclosed = 0)  <0>:

Enter Option of Topology V (Closed = 1 / Unclosed = 0)  <0>:

Enter a Degree U <8>: 5

Enter a Degree V <8>: 5

Enter Option of Format U (Float = 1 / Clamped = 0)  <0>: 1

Enter Option of Format V (Float = 1 / Clamped = 0)  <0>: 1

Specify step  ( 0 < Step < 1) <0.5>:

Specify step  ( 0 < Step < 1) <0.5>:

 

По заданным параметрам приложение интерпретирует поверхность в виде сети изопараметрических кривых (изопармов) (рисунок 9.7.2)

Рисунок 9.7.2. Сеть изопармов поверхности.

 

Можно исследовать качество произвольного изопарма. Скопируйте какой-нибудь изопарм.

Выполните команду V_Test_Crv (рисунок 9.7.3).

Рисунок 9.7.3. Анализ изопараметрической кривой.

 

Перенесите ГО S 3D Mesh в web-приложение.

Выполните команду

Команда: V_SPOLY

Select object (3D-polyline / 3D-mesh):

Выберите 3D Сеть. Выделите в протоколе фрагмент между ... Printing of polygons ...  и ...3D Polyline Printed

... Printing of polygons ...

((40.0 0.0 30.0 1)(55.0 -16.0 25.0 1)(70.0 0. ...

...

(60.0 10.0 85.0 1)(58.0 0.0 92.0 1))

...3D Polyline Printed

 

и сохраните в буфере памяти.

Перейдите в web-приложение Web FairCurveModeler на страницу Surface3D. Очистите текстовое поле 'Instructions and Messages:' и вставьте текст из буфера памяти. Нажмите кнопку [S 3D Mesh from table].

Настройте опции для интерпретации 3D Сети как s-фрейма незамкнутой b-сплайновой поверхности степеней 5,5 с открытым типом s-фрейма и нажмите последовательно [Prepare Surf] и [Create] (рисунок 9.7.4).

Рисунок 9.7.4. Перенос NURBS модели поверхности в Web приложение.

 

Для вывода построенной поверхности в виде плотной 3D Сети интерполированных точек выполните следующие действия. Настройте плотность сети опциями

Step U:[0.1], Step V:[0.1].

Нажмите последовательно [Prepare Surf] и [Create].

Кликните [Interpolated Surf to DXF] и сохраните файл dxf_int.dxf.

Откройте сохраненный файл в nanoCAD (рисунок 9.7.5).

Рисунок  9.7.5. Интерполированная сеть точек поверхности.

 

Данный метод позволяет напрямую моделировать b-сплайновую поверхность.

Применение s-фрейма в открытом формате позволяет устойчиво формировать и редактировать граничные участки поверхности.

Открытый формат s-фрейма также используется для объединения отсеков b-сплайновых поверхностей в одну топологически сложную поверхность одинакового порядка гладкости в любой своей точке. Данный пример демонстрирует данную методику для частного случая – формирования топологически сложной поверхности в виде односторонней поверхности.