Как выбрать между кривыми Безье и B-сплайнами для локальной коррекции формы
Выберите составной путь Безье, если хотите напрямую управлять ключевыми точками контура виртуального персонажа и направлениями касательных. Выберите B-сплайн, если хотите изменять форму непрерывного контура с помощью управляющих точек с ограниченной областью влияния. Решающий вопрос — насколько далеко распространяется изменение и соответствует ли эта область нужному элементу.
В этом руководстве рассматривается уточнение силуэта виртуального персонажа во внешнем редакторе кривых: изменение уха, щеки или хвоста с сохранением окружающего контура. Приведённые ниже рекомендации переводят свойства кривых в практические решения по редактированию и не предполагают, что один из типов кривых всегда обеспечивает более локальные изменения.
Что означает «локальная коррекция» контура персонажа?
Прежде чем выбрать кривую, определите, какое изменение нужно внести и какие границы нельзя нарушать. Формулировка «сделать щёку круглее, сохранив основание уха и подбородок» задаёт полезные условия. «Улучшить контур» оставляет слишком много неопределённости.
Локальность бывает двух видов. Математическая локальность описывает, какая часть кривой может реагировать на управляющую точку. Практическая локальность показывает, подходит ли затронутая область для нужного элемента персонажа. Даже математически локальное изменение может выйти за пределы небольшой щеки и задеть соседние элементы.
Один сегмент Безье имеет глобальное управление в пределах этого сегмента: перемещение управляющей точки меняет его форму по всей внутренней части. B-сплайны позволяют локально изменять форму: управляющая точка влияет на ограниченный интервал параметра. Это различие наглядно показано в учебном материале Мичиганского технологического университета Modifying Control Points.
Примените это различие к своему рисунку: определите участок контура, который можно менять, а затем проверьте, остаётся ли влияние выбранной управляющей точки в его пределах.
Почему составной путь Безье всё ещё подходит для локальных изменений?
Утверждение «кривым Безье не хватает локального управления» нуждается в уточнении: оно относится к отдельному сегменту Безье. Контур персонажа может состоять из нескольких сегментов. Редактирование управляющей точки одного сегмента не обязательно меняет удалённые сегменты, если общие узловые точки и настройки редактора остаются неизменными.
Если один длинный сегмент охватывает щёку и большую часть головы, область его влияния при редактировании может быть слишком широкой. Разбиение позволяет заменить его более короткими сегментами Безье, которые сохраняют исходную форму. После этого можно работать с нужной частью. Процесс разбиения и его применение для изоляции проблемного участка описаны в Subdividing a Bézier Curve.
Для работы над персонажами это делает кривые Безье удачным исходным выбором, если можно задать полезные границы вокруг элементов. Оставьте узловую точку у основания уха, ещё одну — возле перехода щеки, а затем изменяйте промежуточный сегмент. Считайте размещение точек дизайнерским решением: если добавить их повсюду, контур станет сложнее контролировать.
К общей узловой точке нужно относиться особенно внимательно. Её перемещение меняет место соединения соседних сегментов. Даже если оставить узловую точку на месте, связанные ручки могут изменить соседний сегмент при настройке выбранной стороны.
Когда B-сплайн обеспечивает лучший контроль над плавным контуром?
В B-сплайне степень кривой не зависит от количества управляющих точек. Поэтому длинный контур можно описать множеством точек, сохраняя низкую степень полинома. Узловой вектор делит область параметра на интервалы и помогает определить влияние каждой управляющей точки. Эти свойства описаны в материале B-spline Curves: Important Properties.
Для управляющей точки с индексом i и кривой степени p затронутый интервал ограничен узлами uᵢ и uᵢ₊ₚ₊₁. Для кубического B-сплайна это не более четырёх ненулевых узловых интервалов. Эти интервалы относятся к параметру, поэтому им необязательно соответствуют равные расстояния вдоль видимого контура. Правило области влияния выведено в B-spline Curves: Moving Control Points.
Рассмотрим наглядный пример: кубическая кривая имеет узловой вектор 0, 0, 0, 0, 1, 2, 3, 4, 5, 5, 5, 5. Перемещение управляющей точки P₃ при индексации с нуля может повлиять на кривую в диапазоне параметров от 0 до 4. Область влияния ограничена, но охватывает четыре из пяти ненулевых интервалов. Поэтому изменения даже небольшой кривой могут неожиданно затрагивать значительную часть контура.
Выбирайте управляющие точки B-сплайна, если их область влияния уже соответствует плавному участку, который нужно изменить, например длинному контуру хвоста. Если каждое изменение также затрагивает соседний элемент, который вы хотели сохранить, сначала уточните представление кривой.
Как плавные стыки и намеренные углы влияют на выбор?
При работе с составным контуром Безье проверяйте ручки с обеих сторон каждого изменяемого стыка. Касательные на концах сегмента Безье следуют вдоль первого и последнего рёбер управляющего многоугольника. В обычном стыке коллинеарные ручки, направленные в противоположные стороны от общей узловой точки, могут обеспечить совпадающие направления касательных — это называется непрерывностью G1. Совпадение первых производных, или непрерывность C1, дополнительно требует соотношения между длинами ручек и степенями сегментов. См. Derivatives of a Bézier Curve.
Работая над неподвижным силуэтом персонажа, сначала оцените видимый переход: плавно ли щека переходит в голову или образует излом? Согласование касательных полезно, но само по себе не обеспечивает равномерного изменения кривизны в стыке.
Значение имеют и настройки редактора. В руководстве Inkscape различаются угловые узлы с независимыми ручками, гладкие узлы с выровненными ручками, симметричные узлы с выровненными ручками одинаковой длины и автоматически сглаженные узлы, у которых ручки подстраиваются автоматически. Эти особенности объясняют, почему, казалось бы, локальное изменение может затронуть противоположную сторону узла. См. About Node Types.
Гладкость B-сплайна зависит от его степени и кратности узлов. Кубический сплайн с простыми внутренними узлами имеет непрерывность C2; повторяющиеся узлы уменьшают непрерывность в соответствующем месте. Поэтому одного указания «B-сплайн» недостаточно, чтобы понять, насколько плавным будет каждый стык. Эта зависимость описана в B-spline Curves: Important Properties.
Для намеренно острого уха подойдёт угол Безье с независимо управляемыми сторонами. Если нужен непрерывный округлый контур, рассмотрите B-сплайн, когда его структура узлов и управляющих точек позволяет удобно сформировать весь переход.
Как добавить более точное управление, не меняя исходную форму?
Сначала уточните кривую, затем изменяйте её форму. Разделение этих операций помогает понять, вызвало ли неожиданное изменение добавление управляющих точек или их перемещение.
Для кривых Безье используйте разбиение с сохранением формы в подходящем месте. Полученные части сохраняют исходную степень и вместе воспроизводят начальный сегмент. После разбиения оставьте граничные узловые точки и касательные без изменений в тех местах, где нужно зафиксировать окружающий силуэт. Этот способ описан в Subdividing a Bézier Curve.
Для B-сплайнов используйте корректное добавление узла, если редактор поддерживает такую функцию. Добавление узла с пересчётом соответствующих управляющих точек не меняет геометрию кривой. Простое добавление произвольной точки к управляющему многоугольнику — другая операция. Различие и способ выполнения описаны в B-spline Curves: Knot Insertion.
После любой из этих операций сравните уточнённый контур с сохранённой копией, прежде чем менять его форму. Затем перемещайте по одной управляющей точке за раз. Добавляйте новые точки только тогда, когда текущее представление не позволяет сформировать нужный элемент в заданных границах.
Какую кривую выбрать для следующего изменения персонажа?
Пользуйтесь этой памяткой после того, как определите область, которую можно менять. Это практические рекомендации, основанные на описанных выше свойствах, а не результаты измерений разных приложений.
| Требование к редактированию | Исходный выбор | Что проверить |\n|---|---|---|\n| Изменить один элемент между фиксированными ориентирами | Составной путь Безье | Границы сегментов соответствуют элементу; общие ручки работают как задумано |\n| Неоднократно менять форму длинного плавного контура | B-сплайн | Влияние управляющих точек соответствует нужной области |\n| Создать намеренно острый угол | Кривая Безье с независимыми ручками | Обе стороны сохраняют нужное направление |\n| Уточнить уже подходящий контур Безье | Оставить кривую Безье и при необходимости разбить её | Разбиение сохраняет исходный силуэт |\n| Точнее локализовать изменение B-сплайна | Оставить B-сплайн и добавить узлы, если редактор это поддерживает | Добавление узлов сохраняет геометрию до перемещения управляющих точек |\n\nПри выборе прежде всего учитывайте существующий контур. Если его тип кривой уже позволяет выполнить нужное изменение, уточните его на месте. Переход к другому представлению добавляет ещё одну операцию и может почти ничего не дать для разового изменения щеки или уха.
Как проверить, подходит ли выбранная кривая?
Проведите проверку границ изменения на дубликате контура персонажа. Так можно конкретно сравнить разные представления, не полагаясь на их названия.
- Определите изменение. Например, расширьте щёку, сохранив основание уха и подбородок.
- Отметьте допустимую область. Укажите две видимые точки на границах элемента.
- Изучите представление кривой. Найдите сегменты Безье или управляющие точки B-сплайна, влияющие на этот участок.
- Внесите небольшое изменение. Посмотрите на нужный элемент и соседний участок контура.
- Проверьте границы. Если изменение вышло за них, проверьте связь ручек или сначала уточните кривую.
- Оцените результат в рабочем и отображаемом размере. Проверьте форму элемента, переходы и то, остаётся ли изменение заметным в нужном масштабе.
Если щёка отделена полезными узловыми точками Безье, для её изменения может хватить одной ручки без серьёзной перестройки кривой. Для плавного контура, где предстоит множество правок соседних участков, управляющие точки B-сплайна могут оказаться удобнее. Ориентируйтесь на допустимую область изменения: оставьте то представление, которое позволяет скорректировать нужный элемент и сохранить контур, который уже нравится.
Источники
- Modifying Control Points — Мичиганский технологический университет
- Subdividing a Bézier Curve — Мичиганский технологический университет
- B-spline Curves: Important Properties — Мичиганский технологический университет
- B-spline Curves: Moving Control Points — Мичиганский технологический университет
- Derivatives of a Bézier Curve — Мичиганский технологический университет
- About Node Types — Руководство для начинающих по Inkscape
- B-spline Curves: Knot Insertion — Мичиганский технологический университет
