<< к оглавлению...

Нелинейное смещение (nonlinear displacement) в 3dsmax

Displacement (дословно: смещение, сдвиг) – смещение поверхности геометрического объекта с учётом белого и чёрного цветов (и их градаций) карты изображения/процедурной, накладываемой на объект может быть прекрасным инструментом при создании деталей на поверхности объекта, или при моделировании некоторых вещей, которое может стать слишком долгим процессом если использовать обычные способы (моделирования). Но в 3dsmax (и многих других 3d приложениях), у стандартного смещения один большой недостаток: Всё, что оно делает, это берёт точку на поверхности и выдавливает (или “втапливает”, в зависимости от цвета карты) её наружу/внутрь от нормали поверхности. Смещение, которое идёт не по направлению нормали поверхности известно как нелинейное смещение (Non-Linear Displacement) (или если смещение всё же "выталкивает" точку прямо наружу, но в направлении отличном от направления нормали поверхности, такой вид называется векторным смещением (Vector Displacement).
Например, вот поверхность со смещением, которое вы, наверное, уже могли наблюдать раньше:

pic1

А вот что-то похожее, за исключением того, что здесь используется нелинейное смещение для деформации по оси, не перпендикулярной нормали поверхности.

pic2

Нелинейное смещение известно уже относительно давно, и существует множество разработок и исследований на эту тему, однако, большинство 3d приложений/рендеров работают с ним не достаточно хорошо, или вообще не используют его. Отчасти, это из-за того, что давая пользователю контроль над тем, в какую сторону будет происходить смещение, с точки зрения реализации пользовательского интерфейса это может стать довольно сложной процедурой. Другая причина в том, что среднестатистический пользователь не проявляет к этому интереса настолько, чтобы побудить софтверные компании к разработкам и достаточным денежным вложениям в эту область в ближайшем будущем. Если это так сложно реализовать и в итоге это купят лишь несколько человек, зачем создавать себе лишнюю работу, правильно? Таким образом, нелинейное смещение остаётся преимущественно сферой деятельности некоторых исследований и нескольких программистов, интересующихся самим процессом для личных нужд, и для "обычного художника" не остаётся особого выбора по этой теме.
В том уроке рассматривается техника создания нелинейного смещения в max-е, её основной принцип таков: сместить поверхность, используя модификатор displace (, а не слот displacement в редакторе материалов) и затем изменить направление полученной поверхности, используя другие модификаторы. В этом примере, я буду смещать плоскость (plane), используя (процедурную) текстуру Cellular:

fig3

Но вместо обычного смещения наружу, я "надую" сферы так, что смещение "накроет само себя сверху", создавая "самонакрывающиеся" или подпиленные/подрезанные поверхности :

fig4

fig5

Вот max-файл для создания этого эффекта (в формате 3dsmax 8).
Сначала, создайте плоскость (plane), примените модификатор Meshsmooth с достаточным числом итераций (iterations), поскольку для качественного смещения нам понадобится множество мелких граней.

fig6

Теперь, примените модификатор displace, и поместите в слот displace карту cellular map. Я настроил размер ячеек и некоторые другие параметры, чтобы получить следующий узор:

fig7

fig3

Далее нужно выделить "смещённые" ячейки. Для этого используйте модификатор Volume select. Вы должны использовать Volume select вместо, скажем, Poly select, потому, что вам нужно выбрать определённую часть, а не вершины/грани. Таким образом, если вам понадобится более сглаженное смещение, вы можете увеличить количество итераций в модификаторе Meshsmooth и в вашем модификаторе Volume select будет выбрана та же самая часть что и раньше. Для Volume select, я выбираю часть, которая не смещена, переключаюсь в режим vertex, затем нажимаю Invert, чтобы у меня теперь выбирались вершины, из которых состоят ячейки (карты Cellular), потом применяю Soft selection, и настраиваю кривую Soft selection по своему вкусу (поэкспериментируйте с этой кривой, чтобы получить различные интересные эффекты). Красный и оранжевый означает, что эти вершины выбраны, жёлтый и зелёный – выбраны частично, и синий – вершины не выбраны совсем.

fig8

Теперь назначьте модификатор Push. Push возьмёт грань и "вытолкнет" её в направлении нормали (самóй грани). При взаимодействии с установленным значением участков Soft selection получаются такие ячейки, которые вместо простых выпуклых шаров, направленных прямо вверх, станут надутыми пузырьками, наподобие шаров выпирающих из поверхности.

fig9

В качестве последнего штриха, я применил модификатор Polyselect (чтобы выйти из режима под-объекта) за которым идёт модификатор Relax с некоторым числом итераций, чтобы разгладить некоторые побочные искажения смещения.

fig4

fig10

Другой файл примера: волнистый шип squiggle.max (в формате 3dsmax 8). В нём используются те же самые принципы, за исключением того, что я использую модификатор Xform вместо Push для изменения направления смещения.

fig2

Надеюсь, это даст вам некоторые идеи как добиться нелинейных смещений. Вот несколько картинок, в которых я использовал эту технику:
Pouring Lava
Spore 2

А вот здесь интересная тема на xsibase (англ.), обсуждающая как сделать нелинейное смещение, используя XSI и mentalray.


оригинал статьи : http://www.neilblevins.com/cg_education/non_linear_displacement_in_max/non_linear_displacement_in_max.htm
перевод и адаптация: Александр Ергашов /© 2009-2012/
<< к оглавлению...