Интеграционные шины. Функциональные возможности DATAREON ESB

Инструмент 21.10.2019
Инструмент

В-сплайны используют для построения рациональных кривых линий в форме (2.7.5). Формула для вычисления радиус-вектора рациональной параметрической кривой на основе -сплайнов построенной по вершинам , обладающим весами имеет вид

(2.9.1)

Радиус-вектор кривой равен частному от деления некоторого вектора на вес кривой в данной точке. Каждый из -сплайнов -порядка построен на последовательности из узлов Значения узлов должны образовывать неубывающую последовательность, а в остальном на них не накладывается никаких ограничений. Кривые линии, построенные на множестве не равноотстоящих узлов, называются неоднородными. Параметрическое расстояние между соседними узлами у неоднородных кривых меняется при переходе от узла к узлу. Кривая (2.9.1) в общем случае является неоднородной и рациональной. Кривая (2.9.1) носит имя NURBS кривой, составленное из первых букв ее названия - Non-Uniform, Rational В-Spline (неоднородный рациональный фундаментальный сплайн).

Когда все вершины NURBS кривой имеют равные веса, то формула (2.9.1) для вычисления радиус-вектора кривой на основе -сплайнов примет вид

Эта кривая также может быть использована в моделировании, так как она обладает определенным порядком гладкости, достаточно легко вычисляется и легко управляется своими вершинами.

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

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

Вычисление радиус-вектора кривой.

Для вычисления радиус-вектора NURBS кривой используется следующая схема. По значению параметра t из условия определяется номер отличного от нуля В-сплайна первого порядка и вычисляется его значение, исходя из определения:

последовательно вычисляются все отличные от нуля при данном параметре t В-сплайны до m-го порядка Включительно:

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

и подставляются в формулу (2.9.1), которая примет вид

(2.9.4)

Одновременно с вычислением -сплайнов может проводиться вычисление их производных. Формулы (2.9.2) и (2.9.3) можно считать определением -сплайна. -сплайны являются локальными функциями (имеют малый носитель).

Свойства кривой.

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

(2.9.5)

Это равенство получим, переставив операции интегрирования и вычисления разделенной разности. Проинтегрируем усеченную степенную функцию (2.8.17) в указанных пределах

Вычислим разделенную разность полученной функции на последовательности узлов -сплайна. Второе слагаемое правой части на области равно нулю, а первое слагаемое равно полиному степени разделенная разность m-го порядка которого в соответствии со свойством (2.8.12) равна коэффициенту при , т. е. равна что доказывает равенство (2.9.5).

Из (2.9.5) следуют равенства:

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

Производные радиус-вектора кривой.

Используя определение В-сплайна и тот факт, что первая производная усеченной степенной функции по параметру t равна

вычислим первую производную В-сплайна, переставляя дифференцирование и вычисление разделенных разностей

Продифференцируем числитель выражения (2.9.1) с учетом (2.9.6) и получим

где - индексы отличных от нуля В-сплайнов порядка при заданном параметре . В равенстве (2.9.7) использовались свойства Действительно, для заданной последовательности узлов и при любом параметре t, принадлежащем области определения кривой, среди В-сплайнов m-го порядка отличны от нуля только В-сплайнов (пусть их индексы равны ), а среди В-сплайнов порядка отличны от нуля В-сплайнов (их индексы, соответственно, равны . Мы видим, что первая производная сплайн-функции m-го порядка представляет собой аналогичную сплайн-функцию, порядок и число вершин которой на единицу меньше.

Вершины вычисляются по формуле

Продолжая дифференцирование, можно найти производную требуемого порядка для числителя выражения (2.9.1):

Для производных знаменателя (2.9.1) получим выражение, аналогичное

Радиус-вектор NURBS кривой (2.9.1) вычисляется как частное от деления двух функций параметра кривой f, поэтому при вычислении производной NURBS кривой правую часть (2.9.1) следует рассматривать как сложную функцию. Первая производная радиус-вектора NURBS кривой равна

Аналогично вычисляются производные NURBS кривой более высокого порядка

Производные второго и третьего порядка определены равенствами (2.7.10), (2.7.11). Можно заметить, что радиус-вектор точки и ее вес или в формулах NURBS кривой выступают как единое целое.

Алгоритм Де Бура.

Преобразуем числитель выражения (2.9.1), используя формулу (2.8.32.1), следующим образом:

(2.9.11)

где - индексы отличных от нуля В-сплайнов порядка при заданном параметре . В преобразовании (2.9.11), как и при выводе равенства (2.9.7), использовались свойства при заданном параметре t. Мы свели сумму m слагаемых к сумме слагаемых и понизили на единицу порядок В-сплайнов в этой сумме. Величины вычисляются по формуле

Продолжим упрощение числителя выражения (2.9.1) аналогичным образом и получим

(2.9.12)

Для знаменателя выражения (2.9.1) получим аналогичное выражение

(2.9.13)

Мы пришли к выводу, что положение точки NURBS кривой (2.9.1) для заданного параметра может быть определено по формуле

с помощью рекуррентных соотношений

(2.9.15)

которые начинаются со значений . Эти соотношения являются обобщением алгоритма Де Кастелье и называются алгоритмом Де Бура. Алгоритм вычисления радиус-вектора точки NURBS кривой для параметра иллюстрирует рис. 2.9.1:

Рис. 2.9.1. Алгоритм Де Бура

Вставка узлов. У заданной NURBS кривой порядка можно увеличить число характеристических точек, сохранив неизменной ее форму и параметрическую длину. Для этого применяется вставка дополнительных узлов. Вставим дополнительный узел t в последовательность узлов Пусть значение t расположено между значениями узлов и т.е. удовлетворяет неравенствам . Используя алгоритм Де Бура, можно показать, что кривая не изменится, если величины заменить на величины (см. рис. 2.9.1).

Таким образом, вместе с вставкой узла мы должны заменить характеристические точки на вершины с радиус-векторами и весами Новых вершин на одну больше, чем старых, поэтому номера узлов и вершин начиная с нужно увеличить на единицу.

Узел t может быть вставлен многократно (максимальная кратность равна . Если узел t вставляется к раз, то величины нужно заменить на величины (см. рис. 2.9.1).

По их значениям можно определить новые вершины и их веса. Новых вершин будет на к больше, чем старых, поэтому номера узлов и вершин начиная с нужно увеличить на к.

Примеры.

Для незамкнутой NURBS кривой мы будем использовать следующие значения узлов. Пусть первые m узлов имеют значения, равные нулю: следующие узлов принимают целочисленные

Рис. 2.9.2. Набор В-сплайнов порядка для незамкнутой NURBS кривой значения от 1 до оставшиеся узлов принимают значение Для замкнутой NURBS кривой мы будем использовать равноотстоящие значения

Рис. 2.9.3. Набор B-сплайнов 4-го порядка для замкнутой NURBS кривой узлов: Параметр NURBS кривой изменяется в пределах: что для незамкнутой кривой есть - а для замкнутой кривой есть . Параметризация с равноотстоящими

Сплайны с равномерной параметризацией Шёнберг назвал кардинальными.

На рис. 2.9.2 показан полный набор В-сплайнов 4-го порядка (кубических) для 9 вершин, построенных на расширенном множестве узлов

Рис. 2.9.4. NURBS кривые и их характеристические ломаные линии

Параметр t сплайна (2.9.1), построенного на данном множестве узлов, принимает значения на отрезке .

Рис. 2.9.5. Влияние порядка на форму NURBS кривой

Для замкнутой NURBS кривой используется последовательность равноотстоящих узлов:

Рис. 2.9.6. Влияние веса точки на форму NURBS кривой

На рис. 2.9.3 показан полный набор В-сплайнов 4-го порядка для 6 вершин, построенных на расширенном множестве узлов -3, -2, -1, О, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10.

Все В-сплайны для замкнутой кривой похожи друг на друга. Параметр t сплайна (2.9.1), построенного на данном множестве узлов, принимает значения на отрезке .

На рис. 2.9.4 показаны незамкнутый и замкнутый сплайны и их характеристические ломаные, построенные по описанным выше последовательностям узлов. У незамкнутой кривой крайние точки совпадают. Как и кривая Безье, NURBS кривая не проходит через свои вершины за исключением крайних точек для незамкнутой кривой.

На рис. 2.9.5 по одним и тем же восьми вершинам построены NURBS кривые 2-го, 4-го, 6-го и 8-го порядка. На рисунке мы наблюдаем, что чем выше порядок кривой, тем она более гладкая. NURBS кривая второго порядка совпадает со своей характеристической ломаной линией.

На рис. 2.9.6 показано влияние веса вершины на форму кривой 6-го порядка. Чем больше вес вершины, тем ближе к ней проходит NURBS кривая. В общем случае вес вершины может быть нулевым и даже отрицательным.

NURBS представление ломаной линии.

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

Мы видим, что представляют собой кусочно-линейные функции, принимающие значения В-сплайны (2.9.16) для шести вершин показаны на рис. 2.9.7.

Рис. 2.9.7. В-сплайны второго порядка

Замкнутую ломаную линию как частный случай NURBS кривой (2.9.1) можно построить на последовательности узлов Область изменения параметра NURBS кривой в этом случае равна

NURBS представление отрезка прямой.

Отрезок прямой может быть представлен в виде NURBS кривой (2.9.1)

по двум вершинам на последовательности узлов и на базе В-сплайнов второго порядка

Кривая Безье как частный случай NURBS кривой.

Нормированные В-сплайны определения 4 (см. §2.8) в частном случае последовательности узлов совпадают с базисными функциями Бернштейна NURBS кривая (2.9.1), записанная в виде

(2.9.17)

совпадает с рациональной кривой Безье (2.7.2). Это происходит, когда число вершин на единицу больше порядка В-сплайна Область изменения параметра NURBS кривой в этом случае равна

Равенство В-сплайнов определения (2.8.21.4), построенных на последовательности узлов и коэффициентов Бернштейна можно доказать следующим образом.

Рис. 2.9.8. Функции Бернштейна - частный случай В-сплайнов

Вспомним, что коэффициенты Бернштейна связаны рекуррентным соотношением

Мы получим все коэффициенты Бернштейна, начав вычисления с В-сплайны связаны рекуррентным соотношением

где только а остальные В-сплайны нулевого порядка равны нулю.

Из приведенных формул видно, что коэффициенты Бернштейна и В-сплайны вычисляются совершенно одинаково, что доказывает их равенство. Из сказанного следует, что нормированные В-сплайны определения 1 в частном случае последовательности узлов совпадают с базисными функциями Бернштейна Этим доказывается, что кривые Безье являются частным случаем NURBS кривой. В-сплайны порядка на последовательности узлов показаны на рис. 2.9.8.

NURBS представление кривой второго порядка.

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

Урок №6 часть 7

Использование лофтинга для моделирования трехмерных объектв в 3d studio max.

Цель работы : Изучение основных приемов моделирования 3d объектов в программе 3d studio max с помощью лофтинга.

Порядок выполнения 3d studio max.

Построение седьмой трехмерной сцены

Использование лофтинга 2D -профиля стены по заданному пути. Идея метода в том, что создается два сплайна: один – сплайн-путь, очерчивающий периметр здания, а второй – сплайн-сечение, очерчивающий сечение стены. Создание объекта «многоэтажное здание» (рис. 1 ) Перезагрузите 3d studio max и начните новый файл сцены.

Создайте на виде Тор сплайн - путь, проходящий по периметру здания.

Рядом создайте сплайн типа Rectangle , после чего с помощью модификатора Edit Spline добавьте недостающие вершины, чтобы он выглядел как на рисунке.

Выделите сплайн-путь, выполните команду из главного меню Create –> Compound –> Loft . Нажмите кнопку Get Shape и щелкните по сечению стены. Получится стена.

Выделите полученную модель стены. Можно оптимизировать фигуру. Для этого в свитке Skin Parameters у тела лофта поставьте флажок Optimize Shapes .

Примените к стене модификатор Edit Mesh , включите уровень подобъектов Element . Находясь на этом уровне, можно быстро выделять составные части объекта: стены, стекло, раму. Это возможно благодаря тому, что мы нарисовали сечение, состоящее из отдельной замкнутой плоской фигуры.

Сделаем наше здание многоэтажным. Выделите стенку и создайте линейный массив.

Добавьте зданию вертикальные колонны. Создайте Cylinder высотой со здание.

Расставьте колонны. Чтобы сделать крышу, скопируйте сплайн-путь и выдавите его модификатором Extrude .

Урок 7.5. Nurbs поверхность смещения (blend).

Урок №7 часть 5

Использование NURBS моделирования для создания трехмерных объектов в 3d studio max.

Цель работы : знакомство c принципами NURBS моделирования в программе 3d studio max .

Порядок выполнения Данная работа заключается в последовательной реализации нижеследующего интерактивного диалога с системой 3d studio max.

NURBS поверхность смещения (BLEND)

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

Флажки типа Flip меняют точки сочленения двух поверхностей. Пример NURBS поверхности смешения приведен на рис. 1 .

Рисунок 1. Поверхность смещения.

Для создания данной поверхности необходимо:

– нажать кнопку Blend (Смешение);

– выбрать край первой поверхности. По мере движения вдоль поверхности, края, которые могут быть соединены, будут окрашиваться в синий цвет.

– выбрать край другой поверхности.

Построение третьей трехмерной сцены

Создание объекта «Голова человека»

1. Перезагрузите 3d studio max и начните новый файл сцены.

2. Создайте первый сплайн - для этого выберите NURBS -> Point Curve (рис. 2 ). Постарайтесь максимально точно восстановить положение всех вершин, как показано на рисунке.

Рисунок 2. NURBS -> Point Curve.

Первый сплайн (рис. 3 ):

Рисунок 3. Первый сплайн лица.

После того, как сплайн замкнут, его можно отредактировать более точно на уровне вершин. Теперь склонируйте этот сплайн, и отодвиньте его по оси Y на несколько миллиметров. Это необходимо чтобы в дальнейшем лофтинг начинался постепенно.

3. Снова склонируйте сплайн, после чего с помощью операции масштабирования сделайте его чуть меньше первых двух. Разница должна быть очень маленькой, как показано на рис. 4 .

Рисунок 4. 3й сплайн должен быть чуть меньше первых двух.

4. Методом клонирования создайте 4й и 5й сплайн. Вершины сплайнов установите как показано на рис. 5 . Будьте очень точны с установкой положения вершин - то на сколько они соответствуют рисунку зависит качество модели которая будет получена в конце работы.

Для увеличения участка носа и гуд наведите мышь на область белого прямоугольника (рис. 5 ):

Рисунок 5. 4й и 5й сплайн.

5. Терерь задайте положение сплайнов по оси Y как показано на рис. 6 .

Рисунок 6. Задание положения сплайнов по оси Y.

6. Таки же, с помощью метода клонирования создайте 6 сплайн и расположите вершины как показано на рис. 7 .

Рисунок 7. Создание 6го сплайна.

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

Рисунок 8. Создание следующего сплайна.

8. Последний сплайн, завершающий щеку. Установите вершины сплайна как показано на рисунке. Теперь перейдем к редактирования положения сплайнов по оси Y . Установите сплайны как показано на рис. 9 .

Рисунок 9. Последний сплайн, завершающий щеку.

Рисунок 10. Расстановка сплайнов по оси Y.

9. Создайте завершающие форму головы сплайны (так же методом клонирования предыдущего) Как показано на рис. 11 .

Рисунок 11. Создание завершающих сплайнов.

10. Установите сплайны как показано на рис. 12 , после чего с помощью кнопки Attach свитка General вкладки Modify объедините все сплайны. Объединенные сплайны вы можете увидеть на рис. 12 справа.

Рисунок 12. Объединенные сплайны.

Рисунок 13. Кнопка Attach для объединения сплайнов.

11. Теперь с помощью U-лофтинга создадим поверхность для нашего объекта. Перейдите на вкладку Create Surface (Создать поверхность), нажмите кнопку U-Loft (Поперечный лофтинг), выберите последнюю кривую, затем выберите следующую и т. д. Дойдя до последней кривой, нажмите клавишу , отожмите кнопку U-Loft (Продольный лофтинг) (рис. 14 ).

Рисунок 14. U-Loft (Продольный лофтинг).

Рисунок 15. Создание "полушарий".

Созданное "полушарие" (рис. 16 ):

Рисунок 16. Созданное "полушарие".

Для того чтобы создать вторую половину головы, Перейдите на уровень Surface (Поверхности) , выделите поверхность, склонируйте ее после того отодвиньте немного влево. Далее необходимо обратить нормали с помощью опции, как показано на рис. 17 . Далее примените модификатор Mirror к новой половинке (рис. 18 ).

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

Элементы NURBS-модели

Любая NURBS-модель представляет собой некий набор NURBS-поверхностей, образованных NURBS-кривыми. Последние, в свою очередь, являются неоднородными рациональными сплайнами Безье (Non-Uniform Rational Bezier Splines, NURBS). Данные кривые описываются математическими формулами - в итоге отпадает необходимость запоминать каждую точку кривой, достаточно знать координаты ее начала и конца и математическую формулу, описывающую кривую. Это позволяет создавать сложные криволинейные поверхности с небольшим числом управляющих вершин (рис. 1) и легко избавляться от грубой огранки объектов, придавая им плавную искривленную форму путем простого увеличения детализации.

Основой NURBS-поверхности являются сплайны, называемые изопараметрическими кривыми (isoparms - изопармы). Данные кривые определяют кривизну поверхности и внешне представляют собой разнообразные линии (как прямые, так и разного рода кривые, а также контуры текстовых символов), форма которых определяется положением управляющих вершин, через которые она проходит (рис. 2). Основными элементами таких кривых являются управляющие вершины и редактируемые точки (рис. 3). Управляющие вершины задают форму кривой и именно их чаще всего создают при формировании кривой - эти вершины обычно немного отстоят от поверхности и их можно перемещать, вращать и т.д. Первая вершина, обозначающая начало кривой отмечается кубиком, конечная вершина (последняя точка, в которой завершается создание кривой) никакой отличающей маркировки не имеет. Кроме того, при помощи маркера в виде маленькой буквы «u» отображается направление кривой (указывается не во всех проекциях), которое важно знать при выполнении ряда операций моделирования. При необходимости можно ограничить перечень отображаемых элементов NURBS-поверхности, если воспользоваться командой Display =>NURBS Components (Отображение=>NURBS-компоненты).

Для работы с NURBS-кривыми и NURBS-поверхностями предназначены командные меню Edit Curves , Edit Nurbs и Surfaces : первая позволяет редактировать кривые, вторая - создавать из кривых NURBS-поверхности, а третья - редактировать и преобразовывать их.

NURBS-примитивы

Самый простой вид NURBS-поверхностей - это NURBS-примитивы, представленные объектами Sphere (Сфера), Cube (Куб), Cylinder (Цилиндр), Cone (Конус), Plane (Плоскость) и Torus (Top ус). Как и другие типы примитивов, NURBS-примитивы обычно используются в качестве основы для формирования более сложных моделей и создаются командой Create =>NURBS Primitives либо выбором нужного примитива на вкладке Surfaces (Поверхности) панели Shelf . Выполнение многих операций редактирования NURBS-примитивов на уровне объектов очень сильно напоминает соответствующие действия в отношении других типов примитивов, хотя списки параметров для NURBS-примитивов более обширны, да и часть параметров отличается. Для примера сравните списки параметров для полигонального и NURBS-торусов (рис. 4): для последнего дополнительно можно установить значения параметров Start Sweep и End Sweep (определяют, все ли возможные фрагменты примитива будут созданы), параметра Degree (позволяет выбрать между линейным и криволинейным отображением фрагментов поверхности) и т.д.

Более существенные отличия наблюдаются при редактировании примитивов на уровне подобъектов, так как деформация полигональных моделей в первую очередь связана с изменением ориентации граней, а изменение формы NURBS-поверхностей основано на интерполяции кривых. Для примера попробуем создать яйцо, вначале взяв за основу NURBS-шар, а затем полигональный шар. Создайте NURBS-шар, не снимая выделения, перейдите в режим редактирования вершин, нажав клавишу F9, выделите в проекции Side все вершины сечений, расположенных в верхней половине объекта, и инструментом Move Tool переместите их вверх (рис. 5), а затем инструментом Scale Tool слегка уменьшите радиус соответствующих сечений (рис. 6). Сократите число выделенных сечений на одно снизу и вновь проведите те же самые операции перемещения и масштабирования. Результатом станет получение объекта, по форме близкого к яйцу (рис. 7). А теперь попробуем добиться того же результата, но уже на базе полигонального шара. Создайте такой шар и переключитесь в режим редактирования вершин, нажав клавишу F9. Выделите все вершины сечений, расположенных в верхней половине объекта, и переместите их вверх (рис. 8), затем масштабируйте сечения (рис. 9). Уменьшите число выделенных сечений на одно снизу и вновь проведите те же самые операции перемещения и масштабирования (рис. 10). Если после этого провести рендеринг (рис. 11), то форма объекта получается недостаточно гладкой, хотя деформации были незначительными. До получения формы яйца также еще далеко - придется дальше кропотливо двигаться, сокращая число сечений и применяя к выделенным подобъектам операции перемещения и масштабирования, а по окончании еще и дополнительно сгладить полученную поверхность. Так что даже на примере столь простого объекта становится очевидным, что применение NURBS-примитивов существенно снижает трудоемкость моделирования гладких поверхностей.

В случае если речь идет о моделировании объекта с четкими гранями, NURBS-примитивы не помогут - тут требуются приемы полигонального моделирования. Вспомним, например, рассмотренный в 3-м уроке способ моделирования плитки шоколада из полигонального куба, когда достаточно было создать куб (правда, с определенными параметрами - рис. 12), выделить в режиме редактирования граней грани верхней поверхности и применить операцию по их выдавливанию (команда Edit Poligons =>Extrude Face - Редактирование полигонов=>Выдавливание граней) - рис. 13.

Если для достижения той же цели взять за основу NURBS-куб с теми же исходными параметрами, то все окажется совсем не так, поскольку граней у него не существует - вместо них вершины и изопараметрические кривые. Любые манипуляции с вершинами приведут к формированию гладкой поверхности (рис. 14), что не подходит для решения задачи. Если перейти к изопармам, к которым может быть применена операция выдавливания со скосом Bevel (Скос), то результат также будет далек от желаемого (рис. 15 и 16), так как выдавливаться будут изопараметрические кривые, а не внутренние фрагменты плоскости, соответствующие граням. Поэтому выбирать тип примитивов (равно как и подход к моделированию) нужно в зависимости от типа поверхности (гладкая или ограненная), которую требуется получить.

Рис. 16. Результат применения операции Bevel к изопармам верхней плоскости куба

NURBS-кривые и NURBS-поверхности

Чаще всего NURBS-поверхности моделируются из NURBS-кривых, которые обычно формируются путем последовательного определения вершин или точек редактирования, хотя есть и другие способы - можно получить кривые из дуг, созданных на основе двух или трех указанных вершин (команда Create =>Arc Tools ), или применить команду Create =>Text , поскольку текст также может создаваться как NURBS-кривая. Независимо от способа создания кривые не визуализируются, так как применяются только для создания и редактирования поверхностей.

Учитывая, что в большинстве случаев кривые получают посредством определения их вершин или редактируемых точек, то именно данный способ мы и рассмотрим подробнее. Он предполагает использование одного из следующих инструментов, вызываемых из меню Create (Создать):

  • CV Curve Tool (Кривая по управляющим вершинам) - устанавливает управляющие вершины кривой точно в тех точках, где был сделан щелчок мышью, точки редактирования создаются автоматически на основании управляющих вершин;
  • EP Curve Tool (Кривая по точкам редактирования) - формирует точки редактирования кривой точно там, где были сделаны щелчки мышью; управляющие вершины создаются автоматически на базе точек редактирования;
  • Pencil Curve Tool (Карандашная кривая) - позволяет рисовать кривую, перетаскивая мышь, данный тип кривой отличается созданием очень большого количества точек редактирования и управляющих вершин, что может приводить к сложностям при редактировании.

Построение кривых с помощью первых двух из названных инструментов осуществляется практически одинаково: нужно последовательно указать точки (управляющие вершины или точки редактирования), при этом установка каждой следующей вершины будет приводить к появлению очередного участка кривой. Завершается создание кривых нажатием клавиши Enter. Карандашные кривые создаются путем перемещения мыши при нажатой левой кнопке (форма кривой будет полностью повторять траекторию движения мыши); отпускание кнопки автоматически означает окончание текущей кривой, и при следующем нажатии будет формироваться уже новая кривая. Довольно часто карандашные кривые содержат слишком много лишних точек, поэтому их приходится упрощать (то есть сокращать количество управляющих вершин), применяя команду Edit Curves =>Rebuild Curve (Редактировать кривые=>Перестроить кривую). Данная команда может быть применена к любым типам NURBS-кривых.

Особенности создаваемых при помощи названных инструментов кривых определяются параметрами Curve Degree и Knot Spacing . Первый параметр задает степень кривизны кривой, второй указывает интервал между узлами и может быть определен только для кривых типов CV Curve Tool или EP Curve Tool . По умолчанию для данных параметров установлены значения, оптимальные для построения большинства кривых, однако при необходимости они могут быть изменены, для чего, выбирая инструмент построения кривой, нужно щелкать на квадратике, находящемся справа от имени инструмента. Независимо от выбора типа инструмента при создании NURBS-кривой следует ограничиваться необходимым минимумом точек (это значит, что если дуга может быть создана тремя точками, значит, именно на трех точках и следует остановиться), в противном случае редактирование моделей может стать затруднительным, а то и невозможным.

Для наглядности попробуем создать кривую инструментом CV Curve Tool (построение кривых другими инструментами осуществляется примерно так же). Перейдите в режим работы с одной из ортогональных проекций (например, с проекцией Front ) и примените команду Create =>CV Curve Tool (Создать=>Кривая по управляющим вершинам). Щелкните в определенной точке для создания первой управляющей вершины, которая отобразится маленьким кубиком, обозначающим начало кривой, укажите местоположение второй управляющей вершины и т.д. - обратите внимание, что сегменты кривой появятся только после указания четвертой вершины (рис. 17). Если очередная вершина поставлена неудачно, то ее можно удалить нажатием клавиши Backspace и продолжить создание кривой. Кроме того, в любой момент можно прервать процесс добавления новых вершин и переключиться в режим редактирования, нажав клавишу Insert (о смене режима работы будет сигнализировать изменения вида манипулятора), в котором любая из вершин может быть перемещена. Переместите вершины примерно так, как показано на рис. 18, а затем вернитесь к процессу создания вершин, вновь нажав Insert, и дополните кривую еще несколькими вершинами (рис. 19), завершите процесс нажатием клавиши Enter. Форму кривой с таким же успехом можно изменить и после завершения ее создания, для чего достаточно выделить ее, переключиться в режим редактирования вершин, нажав клавишу F9, и инструментом Move Tool изменить положение тех вершин, что были поставлены неудачно (рис. 20). Кроме того, можно удалить любой из сегментов кривой, выбрав отвечающую за него управляющую вершину или точку редактирования и нажав клавишу Backspace.

Созданные NURBS-поверхности в зависимости от установок, могут отображаться с разным уровнем сглаживания. Он определяется в меню Display =>NURBS Smoothness (Отображение=> NURBS-сглаживание) только для выделенных объектов. Всего предусмотрено четыре типа сглаживания: Hull , при котором отображается только каркас, Rough , обеспечивающий грубый набросок модели, а также Medium и Fine , отображающие объекты со средним и высоким уровнем детализации. Для трех последних режимов имеются горячие клавиши - 1, 2 и 3 соответственно. Для примера попробуйте сгладить форму созданной выше кривой, применив команду Display =>NURBS Smoothness =>Fine (Отображение=> NURBS-сглаживание=>Высокое) - рис. 21. При необходимости возможна более тонкая настройка уровня сглаживания при помощи команды Display =>NURBS Smoothness =>Custom (Отображение=> NURBS-сглаживание=>Пользовательское) - рис. 22.

Помимо вышеназванных способов коррекции NURBS-кривых имеется еще масса команд для их редактирования, доступных из меню Edit Curves . Основными среди них можно назвать следующие:

  • Add Points Tool - добавление вершин в конец кривой;
  • Reverse Curve Direction - смена направления кривой; на противоположное, что необходимо, когда требуется добавить новые управляющие точки не в конец, а в начало кривой;
  • Insert Knot - добавление указанного числа вершин в середине кривой; количество вставляемых вершин и принцип их добавления регулируются параметрами команды;
  • Curve Editing Tool - включение режима редактирования, позволяющего управлять степенью кривизны сегментов кривой;
  • CV Hardness - заострение сегментов, соответствующих выделенным точкам кривой;
  • Attach Curves - объединение выделенных кривых в одну кривую с формированием связующего их отрезка;
  • Detach Curves - разделение кривой на части в выделенной точке;
  • Open /Close Curves - открытие/закрытие кривой.

Попробуем немного поэкспериментировать с обычной плоскостью и попытаемся так деформировать ее, чтобы после текстурирования она могла быть использована в качестве куска лежащей складками ткани. Создайте обычную NURBS-плоскость и переключитесь в режим редактирования вершин (клавиша F9) - изначально количество ее управляющих вершин невелико и в нашем случае недостаточно (рис. 23). Поэтому вернитесь в режим работы на уровне объекта (клавиша F8) и добавьте еще группу вершин, применив команду Insert Knot (Вставить узлы), - рис. 24. Отрегулируйте положение вершин при помощи инструментов Move Tool и Scale Tool , руководствуясь видом имеющейся текстуры ткани со складками и тем, как планируете разложить эту ткань (рис. 25 и 26). Пока это будут лишь начальные прикидки, так как вид плоскости зависит также от поверхности, на которую ткань будет положена, а данной поверхности у нас еще нет.

Зачем нужно такое сложное название, как NURBS? Мы смотрим на экран и видим просто линии или просто поверхности. Зачем всё так усложнять? Дело в том, что Вам только кажется , что Вы видите точки, линии, поверхности. На самом деле, придвиньте свой нос как можно ближе к экрану. Да-да, прямо сейчас.

Вдруг оказалось, что единственное, что можно увидеть при большом увеличении – только точки, которые светятся разным цветом с различной яркостью! Это видеокарта Вашего компьютера даёт монитору информацию, каким образом отображать какую точку экрана. Видеокарте советы даёт центральный процессор (тот самый Интел инсайд или Атлон форева). А процессору вообще все Ваши точки, кривые и поверхности глубоко параллельны и фиолетовы, то есть по барабану. Главное его дело перекладывать заряд из одной ячейки в другую. Если совсем уж огрублять, то функцию процессора можно сравнить с выключателем. Тумблер вверх – есть свет, тумблер вниз нет света. Есть заряд в ячейке – единица, нет заряда – ноль. Просто этих тумблеров (ячеек) миллионы. И их комбинациями можно закодировать любой символ, цифру, ноту или пиксель. Вся информация, все программы, оперирующие этой информацией, сводится к операциям с числами в двоичной системе (из 0 и 1). То есть всё, что Вы делаете на компьютере – это совершаете вычисления при помощи функций (формул), которые составили мудрые программисты. Рисуете ли Вы, моделируете, пишите музыку или играетесь – всё это лишь иллюзия, на самом деле Вы в МАТРИЦЕ чисел, и плену обмана, созданного Вашим мозгом и глазами, впивающимися в зазеркалье экрана монитора.

Точно также и Rhino показывает Вам простые линии и поверхности, а на самом деле вычисляет формулы, график которой и выглядит в виде Вашей линии или поверхности. Помните, как в школе Вы вычисляли у доски каждую ключевую точку, через которую пройдёт линия графического представления формулы. Это Вы сами, без Рино, показывали учителю, как на самом деле мучались программисты, чтобы Вы потом без каких-либо знаний пяти математик могли думать не о них, а о том, как просто можно моделировать в 3D сложные вещи.

Так вот NURBS – это частный случай кривых Безье. N on-U niform (Н еО днородные) R ational (Р ациональные) B S plines ((Би-С плайны)частный случай кривых Безье). То есть NURBS – это такие формулы, которыми можно выразить кривые и поверхности.

Почему выделяют в названии программы именно NURBS (Читатся «нурбс»)? Потому что это ключевое отличие данного моделлера от других. В других программах трёхмерного моделирования главное действующее лицо – точка, вернее огромное число точек, связанных в полигоны (эдакие маленькие треугольные поверхности из которых складываются большие поверхности).

Если Вы имели когда-либо дело с векторной графикой, то Вам легко будет понять различие между полигональным моделированием и NURBS. Оно такое же, как и разница между векторной и растровой графикой.

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

В растровой же графике, маленькая буква состоит как бы из малюсеньких керамических плиток. Если эту букву (или другое изображение) придётся увеличивать, увеличивается лишь размер плиток. Представьте себе букву размером с дом, выложенную из плит от египетских пирамид. Грубовато смотрится, не так ли?!

Так же дело обстоит и в 3D графике. Тот же 3D Studio Max формирует модели из полигонов, а потом это дело сглаживает (грубо говоря, размазывает по экрану). Это годится лишь для отображения на экране или печати рекламы. Rhinoceros же имеет основное применение для создания точных гладких моделей для воспроизводства их на 3D принтерах или фрезерах. Если для этих целей применять 3D Studio Max, то такую модель, всю будто обрубленную, либо покусанную, придётся сначала вырастить или выточить из дорогущего материала, а потом долго, упорно и не всегда точно опиливать, обтачивать и зашкуривать готовый прототип. Нет, так не годится. Поэтому Рино сразу моделирует не полигонами (хотя и это может (Mesh – полигональные сетки)), а моделирует кривыми NURBS, всегда гладенькими, точными и красивыми, даже если их потом увеличить до размеров дома или корабля.

Сегодня я покажу еще одну технику создания моделей с помощью кривых. Начнем, как обычно, с небольшой теории, сначала рассмотрим NURBS-кривые, потом перейдем к NURBS-поверхностям. Далее попробуем сделать с помощью NURBS-кривых какую-нибудь модель. Ну и в завершающей части наложим на созданные объекты материалы.

Начнем с теории…

Сначала расшифруем аббревиатуру NURBS. NURBS - это Non-Uniform Rational B-Spline или по-русски неоднородные рациональные B-сплайны. NURBS-кривые обладают одной особенностью: они всегда имеют гладкую форму. В 3d max есть два вида NURBS-кривых: P-кривые и CV-кривые.

P-кривые (point curves) - такие кривые задаются вершинами, лежащими непосредственно на самой кривой. По сути они похожи на обычные сплайны.

CV-кривые (control vertices curves) - форма таких кривых задается управляющими вершинами, лежащих на вспомогательной кривой (на рисунке желтого цвета).

Чтобы создать одну их этих кривых, надо на вкладке Create перейти на вкладку Shape, затем в выпадающем списке выбрать NURBS Curves и нажать на одну из кнопок в зависимости от вида кривой:

Если убрать галку рядом с Start New Shape, то вы продолжите создавать выделенную кривую.

В отличии отличие от обычных сплайнов NURBS-кривые можно создавать сразу в нескольких окнах проекции, создавая сразу не плоскую и объемную кривую. Правда надо признать, что, чтобы создать этим способом что-то действительно сложное, надо обладать очень хорошим пространственным мышлением или сделать не одну попытку создания. Гораздо легче, как и в случае с обычными сплайнами, изменять некую созданную наспех заготовку.

NURBS-поверхности формируются из NURBS-кривых и, так же как кривые, могут быть двух типов: P-поверхности (point surfaces) и CV-поверхности (control vertices surfaces). Как не сложно догадаться эти типы отличаются, друг от друга тем же, чем отличаются два вида кривых.

Есть несколько способов создания NURBS-поверхности.

Можно создать прямоугольный кусок NURBS-поверхности на вкладке Create (Create->Geometry->NURBS Surfaces):

Можно преобразовать в NURBS-поверхность созданный каким-то другим способом объект. Для этого надо щелкнуть правой кнопкой мыши по объекту и выбрать в появившемся меню Convert To:->Convert to NURBS.

Ну и наконец, можно создать поверхность путем объединения нескольких NURBS-кривых. Именно этим способом мы и будем пользоваться в практической части урока.

Если вы создадите NURBS-кривую или поверхность, и перейдете на вкладку Modify, то откроется панель с инструментами NURBS:

Если панель не открылась, то ее можно открыть, нажав кнопку NURBS Creation Toolbox:

Эта панелька состоит из разделов для управления вершинами (Points), кривыми (Curves) и поверхностями (Surfaces). Наибольший интерес для нас представляют инструменты управления поверхностями, поэтому рассмотрим некоторые из них.

Create CV Surface, Create Point Surface:

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

Создает плавный переход между двумя поверхностями:

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

Create Mirror Surface:

Отражает поверхность.

Create Extrude Surface:

Выдавливает поверхность из кривой. Например, из такой кривой:

Можно выдавить такую поверхность:

Create Lathe Surface:

Создает поверхность вращения, подобно модификатору Lathe из урока №3

Create Cap Surface:

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

Create U Loft Surface:

Создает поверхность U-лофтинга из набора параллельных сечений, расположенных перпендикулярно продольной оси будущего объекта. Подробнее об этом инструменте будет рассказано в практической части.

Create UV Loft Surface:

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

На основе этих кривых получаем поверхность:

Некоторые остальные инструменты будут рассмотрены в практической части.

В заключение этой теоретической части следует прояснить еще кое-что:

  • NURBS-поверхности всегда имеют гладкую форму. Поэтому наиболее логично их применение для моделирования объектов сглаженной формы, не имеющих острых краев.
  • Реализация NURBS-моделирования в 3d max всегда вызывала много критики, уж больно он «глючный». Но все же иногда объект можно быстрее и качественнее создать именно с помощью NURBS (надеюсь, скоро вы в этом убедитесь), поэтому замалчивать про этот способ моделирования неправильно.

Создание мыльницы

Я потратил безумно много времени, чтобы придумать, какой объект моделировать в этой части. Уже почти отчаялся найти необходимое сочетание простоты создания и максимально возможного количества применяемых инструментов. И вдруг однажды в ванной мой взгляд упал на мыльницу, и я понял, что ничего лучше придумать все равно не получится, поэтому сегодня мы будем моделировать мыльницу:)

И так начнем с создания вспомогательной линии. Желательно создать ее в виде NURBS-кривой (любого типа), чтобы понять как они создаются. Но это не принципиально и можно использовать обычный сплайн, ибо прямого участия в моделировании эта линия принимать все равно не будет. Я же использовал CV-кривую:

Теперь сделайте копию этой кривой и поверните ее на 90 грудсов вокруг оси Z:

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

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

В результате получится овал, который скорее всего у вас будет располагается вот так:

Необходимо поднять этот овал до пересечения с вспомогательными кривыми:

Теперь сделайте копию этого овала и опустите его вниз:

А потом промасштабируйте овал до пересечения c другой вспомогательной кривой:

Сделайте еще несколько копий этого овала и промасштабируйте их указанным способом:

А потом еще несколько, с пересечением внутренней поверхности мыльницы:

В результате должно получиться нечто такое:

Теперь необходимо соединить все созданные кривые. Для этого выделите одну из кривых, на вкладке Modify в свитке General найдите кнопку Attach:

Нажмите эту кнопку и прокликайте все остальные кривые. В результате они все объединятся в один объект.

И начинайте щелкать на каждую кривую по порядку, начиная с самой нижней и заканчивая внутренними кривыми. В конце создания нажмите правую кнопку мыши.
Если в процессе создания вы случайнее перепутали последовательность следования кривых, то их поменять можно на панели справа. Возможно, полученная поверхность получится черной, в этом случае надо поставить галку рядом с Flip Normals:

Если все стало нормально, то нажмите еще раз правую кнопку чтобы зафиксировать результат. Должно получиться примерно вот так:

Можно спрятать обе вспомогательных кривых, они больше не нужны. Для этого выделите их, щелкните по ним правой кнопкой мыши и выберете Hide Selection.

И щелкните по кривой, которое образует днище, а затее по кривой внутри мыльницы:

Если полученная поверхность будет черной, то поставьте галку рядом с Flip Normals:

Теперь создадим закругление на дне мыльнице, для этого используйте инструмент Create Fillet Surface:

Затем щелкните сначала по боковой поверхности мыльницы, а затем по днищу. Сразу после этого необходимо поставить две галки рядом с Trim Surface. После этого могут исчезнуть одна или обе плоскости, в этом случае надо поставить галку рядом с Flip Trim. Далее необходимо увеличить значение радиуса фаски:

Щелкните правой кнопкой мыши, чтобы зафиксировать результат:

Некоторые сплайны могут быть конвертированы в NURBS-кривые, главное, чтобы в их составе не было вершин типа Corner и Bezier Corner. Также в NURBS-кривые могут быть преобразованы четыре стандартных сплайна: Circle, Ellipse, Arc и Star. Именно этим условием мы сейчас воспользуемся, создайте на виде сверху эллипс с помощью сплайна Ellipse.



Рекомендуем почитать

Наверх