В поисках идеальной сферы

С моделированием сферических поверхностей мы сталкиваемся достаточно часто. Казалось бы, сфера — самый простой объект для моделирования и любой графический редактор, и в том числе и Blender, предоставляет по умолчанию сферу в наборе основных примитивов — остается лишь добавить ее в сцену. Однако, действительно ли так просто создать на самом деле красивую сферу?

8
8

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

  1. Общая форма должна быть максимально приближена к идеально сферичной.
  2. Ровная поверхность, без бликовых артефактов.

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

  1. Достаточно низкая полигональность исходного меша — чтобы можно было удобно работать с моделью.
  2. Как следствие требования 3 — финальное подразбиение и сглаживание достигается применением модификатора Subdivision Surface.

Рассмотрим возможности получения такой сферы, которые предоставляет нам Blender:

  1. UV Sphere.

Самый простой и самый, наверное, часто используемый вариант. UV-сфера включена в набор примитивов и легко вставляется из набора в сцену: Shift+a — Mesh — UV Sphere.

Однако такая сфера далеко не идеальна. После накладывания модификатора Subdivision Surface сразу становятся заметны две проблемы. Первая — достаточно выраженная яйцеобразность. Если наложить поверх сферы круг, видно, что в верхней точке он прилегает к поверхности сферы, а в точке экватора заметно отклоняется от нее.

UV Sphere
UV Sphere

Вторая проблема — звездообразные артефакты на вершине сферы, возникающие из-за того, что Subdivision Surface не очень корректно работает с треугольниками, из которых формируется вершина сферы.

UV Sphere - артефакт
UV Sphere — артефакт

С артефактами можно бороться, перестраивая топологию в месте вершин сферы:

  1. Превратить треугольники в квады
  2. Заполнить проблемную область через Grid Fill и придать сферичность через пропорциональное редактирование или alt+shift+s
  3. Сделать проблемную область как можно меньше

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

UV Sphere - быстрое исправление артефакта
UV Sphere — быстрое исправление артефакта
  1. Ico Sphere

Этот вариант сферы так же представлен в наборе примитивов Blender: shift+a — Mesh — Ico Sphere.

Такая сфера используется в моделировании гораздо реже. Главным образом из-за того, что состоит из треугольников. Моделировать на низком уровне полигонажа с последующим наложением Subdivision Surface очень сложно. Такая простая задача, как отделение половины сферы, для Ico Sphere становится достаточно нетривиальной.

По той же самой причине итоговый вид Ico Sphere после наложения модификатора Subdivision Surface не идеально сферичен. Если наложить на такую сферу круг — видна выраженная угловатость.

Ico Sphere
Ico Sphere
  1. Сфера из куба

Создать сферу можно не только взяв готовую заготовку из набора примитивов. Тот же самый модификатор Subdivision Surface можно использовать для создания основной формы сферы. Для этого достаточно добавить в сцену куб (shift+a — Mesh — Cube), наложить на него модификатор Subdivision Surface и, увеличивая количество подразбиений Subdivisions, можно легко добиться сферической формы.

Для того, чтобы с полученной сферой можно было удобно работать в дальнейшем, можно поставить Subdivisions = 1 и применить модификатор. Получится достаточно сферичная заготовка, форму которой можно еще улучшить через инструмент To Sphere (alt+shift+s) с фактором Factor = 1. После этих операций на заготовку снова накладывается модификатор Subdivistion Surface для окончательного сглаживания.

Итоговая форма сферы получается лучше, чем в двух предыдущих вариантах, но все равно, не идеальна.

Куб - Subdivision Surface - To Sphere - Subdivision Surface
Куб — Subdivision Surface — To Sphere — Subdivision Surface
  1. Сфера из куба + модификатор Cast

Сфера, созданная из куба, удовлетворяет почти всем пунктам сформулированных в начале требований. Кроме формы. Но форму можно довести до идеала, добавив полученной сфере модификатор Cast с типом Cast Type = Sphere и фактором Factor = 1.

  1. Добавить в сцену куб (shift+a — Mesh — Cube)
  2. Сделать небольшое подразбиение для удобства дальнейшего моделирования (tab — w — Subdivide, Number Of Cuts = 2)
  3. Добавить на него модификатор Subdivision Surface (View = 2)
  4. Добавить на него модификатор Cast (Cast Type = Sphere, Factor = 1)

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

Куб - Subdivision Surface - Cast
Куб — Subdivision Surface — Cast

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

Изменение геометрии
Изменение геометрии

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

Выделить у куба все вертексы, кроме тех, которые будут участвовать в изменении геометрии. Добавить кубу группу вершин (в панели Data — Vertex Group — + ), назвать ее ToSphere и назначить все выделенные точки этой группе нажатием Assign.

Определение группы вертексов
Определение группы вертексов

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

Полигон в основании куба можно теперь экструдировать без потери результата.

Экструдирование
Экструдирование

Если продолжать экструдирование, сразу становится заметен неприятный побочный эффект: при увеличении общего размера объекта, диаметр сферы тоже увеличивается:

Изменение размеров сферы
Изменение размеров сферы

Происходит это скорее всего потому, что модификатор Cast расчитывает преобразование исходя из общего размера всего меша.

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

Использование параметра Radius
Использование параметра Radius

Еще один момент, на который нужно обратить внимание — модификатор Cast при работе берет за точку отсчета центр меша Origin. Как только точка Origin смещается из центра формируемой сферы, весь достигнутый эффект пропадает. Чтобы не терять формирование сферы при перемещении Origin можно воспользоваться параметром Control Object модификатора Cast.

Добавить в сцену пустышку Empty (shift+a — Empty — Sphere). Разместить ее в точке центра сферы меша (там где в настоящий момент находится Origin). В Control Object модификатора Cast выбрать эту пустышку. Теперь модификатор берет за точку отсчета указанную пустышку, а центр Origin меша можно переместить в его основание.

Использование Control Object
Использование Control Object

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

Конечный результат
Конечный результат