Render.ru

Subdiv против Безье

#1
Subdiv против Безье
(Не хочется противопоставлять, но приходится)

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

Попробуем заглянуть в суть проблеммы.
Все дело в избыточном контроле. В безье контроллируются не только опорные точки, но и угол наклона в них. Если нужна плавная кривая, без изломов, то вершина и два хендла лежат на одной прямой. Если мы конвертнем подобную безье кривую с количеством вершин n в NURBS, то увидим что количество CV (2n) при n > 2 меньше чем суммарное количество вершин и хендлов: (3n – 2).
Для тех кто в математике не силен - каждая третья вершина в Безье - лишняя!

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

Чтобы проиллюстрировать проблемму доведем ее до абсурда - будем строить кривую огромным колличеством линейнымх сегментов. Контроль по сути безграничен, результат - ниже среднего.

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

Что касается четырехугольных петчей - да, с ними жить гораздо легче, но проблеммы топологии не решают. Ни вопрос, возможно построить любую топологию одними четырехугольниками.
Дело не в треугольном патче, а в схождении нечетного колличества граней (edges) в одной вершине - ситуация, при которой нельзя четко контроллировать плавность поверхности за счет противоположных хендлов на одной прямой.

Изящьно решается проблемма в Hash Animation Master. Там есть не только трехугольный патч, который порождает топологический "вихрь", всеравно требующий разрешения в другом месте топологии, но и пяти!!!! угольный патч, который данный узелок распутывает успешно.

Я все это собственно к чему - используйте SubDiv. Там эти и многие другие проблеммы отсутствуют как класс. Кто-нибудь пробовал деформировать безье Surfaces? То-то! Кривизна (в плохом смысле) так и прет!

У сабдивов правда, есть свои трупы в шкафу, но менее опасные и более симпатичные :)

Егор
 
Сверху