Кривые Безье в Blender

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

Кривые Безье, а также кривые и поверхности NURBS (non-uniform rational B-spline – неоднородный рациональный B-сплайн) – примеры того, как математика может использоваться в компьютерной графике. В Blender различные исходные варианты таких кривых и поверхностей добавляются на сцену как и любые другие объекты: с помощью меню Add | Добавить (Shift + A).

Добавление кривых в Blender

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

Кривая Безье и кривая Nurbs
Кривые в режиме редактирования при снятом выделении: вверху – NURBS, внизу – Безье

Если точки Nurbs имеет смысл только перемещать (G), то кривая Безье будет изменяться от любой трансформации ее узлов: перемещения, поворота, изменения размера. Отрезки между точками называются сегментами. Непосредственно сегмент выделить нельзя, но можно выделить две определяющие его точки и тогда получится, что вы будете как бы изменять сегмент.

Выделение двух вершин и перемещение сегмента
"Перемещение сегмента" вдоль оси Y (GY)
Выделение двух вершин и поворот сегмента
"Поворот сегмента" по оси Z (RZ)

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

Рукоятки кривой Безье
Влияние длины "усиков" на сглаженность вершины и выпуклость сегмента

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

Меню выбора типа рукояток (V)

Если выбрать вариант Automatic | Автоматический, то ручки примут такую длину и направление, которое обеспечит наибольшее сглаживание. Но как только вы начнете их перемещать, они изменят цвет, что будет означать переключение на тип Aligned | С выравниванием.

Вариант Vector | Вектор, наоборот, создает углы, направляя ручки соседних узлов друг к другу вдоль прямой. При правке векторного направления происходит автоматическое переключение на Free | Свободный, когда ручки одной вершины становятся независимыми друг от друга.

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

Подразделение кривой

Для наращивания кривой Безье сегментами с того или иного конца можно выделить крайнюю вершину, зажать Ctrl и кликать правой кнопкой мыши в места, где должны располагаться новые вершины.

Примерно то же самое обеспечивает Curve Pen | Карандаш кривой на панели инструментов при условии, что предварительно был выделен конец открытой кривой. Однако в отличие от предыдущего варианта здесь можно сразу править вершину: после нажима левой кнопки мыши не отпускать ее и потянуть. При этом будут изменяться рукоятки и как следствие сегмент.

Рисование кривой с помощью инструмента Curve Pen

Вариант экструдирования Extrude to Cursor | Экструдировать к курсору тоже добавляет вершины при кликах левой кнопкой мыши, но без возможности по ходу действия растягивать рукоятки. Вместо этого можно перемещать саму точку. Также для кривой Безье работает выдавливание с помощью клавиши E. Здесь сразу после нажатия E создается вершина, после чего вы устанавливаете ее в нужное место. Во многих случаях это удобнее, так как виден сегмент и его изменение при перемещении точки еще до того, как он будет зафиксирован.

Инструмент Draw | Рисовать позволяет рисовать кривую от руки и имеет множество настроек на вкладке Tool | Инструмент боковой панели (N).

Инструмент Draw и его настройки

Обратите внимание, что добавлять кривой новые сегменты в большинстве случаев лучше, когда 3D-сцена находится в виде сверху.

В Blender существуют понятия открытой кривой и закрытой (замкнутой, циклической). В первом случае подразумевается, что концы кривой не соединены между собой, во втором – соединены, то есть у кривой нет начала и конца. Чтобы открытую кривую сделать циклической, надо в режиме редактирования выделить один из ее концов и нажать Alt + C. После этого появится дополнительный сегмент, который соединит "разорванные" концы. Повторное нажатие Alt + C удаляет этот сегмент и делает кривую снова открытой.

Помимо открытости/закрытости кривые классифицируются на двумерные и трехмерные – 2D и 3D. В случае двумерной кривой никакая ее точка не может находиться за пределами локальной плоскости XY. В случае трехмерной может, но не обязательно.

Двумерная (2D) и трехмерная (3D) кривые

При рендере (F12) кривые Безье не видны. Если на базе кривой создается какой-либо объект, то его "материализация" выполняется с помощью настроек панели Data | Данные редактора свойств. Так здесь можно экструдировать плоскость вдоль спинальной оси кривой (не путать с экструдированием вершин, которое описывалось ранее). Выдавливание происходит вдоль локальной оси Z.

Экструдирование кривой вдоль оси - своей длины

С помощью параметра Depth | Глубина на вложенной панели Bevel | Фаска можно добавить ленте объем. Как он будет добавлен, зависит от значения Fill Mode | Режим заполнения на панели Shape | Форма.

Добавление фаски - объемная кривая

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

Разный радиус вершин на экструдированной кривой
Радиус правой вершины равен 1, центральной 0, левой 0.5

Параметр Tilt | Наклон по оси подразумевает скручивание нормалей (перпендикуляров к отрезку) около контрольной точки. Кривая при этом должна быть 3D.

Разный наклон (tilt) вершин на экструдированной кривой
Наклон правой точки составляет -90°, средней -45°, левой 0°

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

Скручивание кривой в результате поворота рукояток

Избавиться от таких наклонов можно, переведя кривую в режим 2D, а затем снова в 3D. Однако сегменты кривой при этом могут изменить свою форму.

Разная высота выдавливания вдоль кривой настраивается не только с помощью радиусов вершин. В дополнение к этому или вместо этого (в зависимости от значения Taper Radius) можно использовать Taper Object | Объект сужения – открытую кривую, разница в положении точек которой по оси Y будет определять высоту экструзии частей первой кривой, а их разнос по оси X – плавность переходов.

#
Выдавливание кривой с помощью объекта сужения (taper object)

В Blender можно настроить не только высоту выдавливания, но и его форму, то есть вместо обычной плоскости, которая появляется при экструзии вдоль кривой, будет появляться что-то более сложное. В этом случае изгибы выдавливаемой плоскости настраиваются с помощью второй кривой, которая может быть как открытой, так и закрытой. Она указывается в качестве объекта на вкладке Object | Объект панели Bevel | Фаска.

Использование объекта-кривой в качестве фаски (bevel)

Практическая работа

Создайте подобие суживающегося и расширяющегося туннеля или трубы.

Кривая с объектом сужения и объектом фаски