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

Техника смешанного бокс-наложения текстур

( это устаревшая версия урока (2009г.), обновлённая версия "ожидается" в первой декаде июня 2012 ;)

В этом уроке рассматривается простой и быстрый способ наложение bitmap-карты шума на объект без выполнения UV-развёртки объекта.
Скажем, у вас есть более-менее хаотичная карта шума (random noisy bitmap) наподобие этой:

pic1

И какой-нибудь объект, имеющий неправильную (несимметричную) форму:

pic2

И вам нужно наложить имеющуюся карту на объект.
Один способ – это выполнить развёртку UV-карты вашего объекта. Это позволит применить к вашему объекту карту с рисунками различных специфичных форм без каких-либо растяжений карты или видимых швов на ней, но на настройку развёртки уйдёт какое-то время, особенно, если в вашей сцене много подобных объектов, в большинстве ситуаций это весьма затратно.
Самым быстрым способом могла бы стать "техника смешанного наложения бокс-мэппинга" (blended box mapping) на объект. Box mapping – тип мэппинга, при котором на объект проецируется текстура с шести сторон бокса. Итак, примените к объекту модификатор UVW Mapping, установите тип мэппинга: Box, и... Рендер:

pic3

Почти сработало, за исключением нескольких ненужных швов-стыков. Почему так получилось? Когда вы применяете данный тип мэппинга (box mapping) к объекту с закруглёнными углами, данный тип наложения замечательно срабатывает относительно граней объекта, направленных к одной из 6 сторон box-карты. Но если грань в пределах угла в 45 градусов относительно сторон куба, получаем шов там, где стороны бокс-карты накладываются на отличающиеся (друг от друга) грани объекта. Например, грань отклоняется на 44.5 градусов от фронтального положения бокс-карты (front box map), на эту грань будет накладываться мэппинг для фронтальной стороны бокса. Теперь, допустим, следующая грань (отклоняется) на 45.5 градусов от фронтальной бокс-карты, на неё уже будет накладываться мэппинг с боковой стороны бокса. Таким образом, между этими двумя гранями получается шов (-стык).
Ах, если бы существовал какой-нибудь способ "растворить" этот шов... Возвращаясь к "ранней эпохе max-а": тогда был плагин под названием InstantUV, который решал такого рода задачи. Но разработчик решил прекратить его продажу, и с тех пор этот плагин не пере-компилировался для более новых версии max-а. Однако, есть один фокус, который вы можете использовать, применяя стандартные инструменты max-а, чтобы получить похожий результат (смешивание швов). Это слегка "уродливый" трюк и его настройка занимает немного времени, но совсем не столько, сколько уйдёт на развёртку массы объектов. Мы сконструируем нашу собственную бокс-карту, но со размыто-смешанными краями на границах.

Рассмотрим эту же проблему на примере со сферой:

pic4

Вместо карты шума, здесь использована пользовательская UV-карта с обычным box-mapping способом наложения. Обратите внимание на стыки прямо по краям, где грани ближе к углу в 45 градусов относительно любой из сторон box-карты.
Способ решения данной проблемы следующий: назначить 3 планарных модификатора UVW Mapping (Mapping: Planar), используя 3 разных map-канала, и затем смешать их края, используя Falloff-карты. В идеале хорошо бы иметь в наличии дополнительную опции в UVW Mapping модификаторе, которая делала бы такую настройку за нас автоматически (с указанием величины, регулирующей степень сглаживания смешиваемых участков), но поскольку такой опции у нас нет (пока?), придётся сделать это обходным способом.
Взгляните на структуру карты:

pic5

Также взгляните на эти 3 UVWmapping манипулятора:

mapping

Понимаю, – несколько запутанно. Но откройте этот файл примера (max 8), а теперь просто скопируйте и вставьте 3 UVW Mapping модификатора из объекта в файле в любой (какой пожелаете) другой объект, а затем скопируйте материал, и всё настройка закончена. (Заметьте, что для лучших результатов желательно чтобы все 3 манипулятора мэппинга (mapping gizmos) были квадратными, как на приведённом выше примере, все планарные карты равны размерам 66.332 на 66.332 единиц). Для этой же цели (смешивание-наложение карт по краям), также можете воспользоваться скриптом blendedBoxMapMaker script, (входящим в состав набора моих скриптов) который автоматизирует бóльшую часть процесса создания карт и модификаторов. Стóит попробовать.
Теперь посмотрим на результат:

sphere mapping

Обратите внимание на получившееся смешивание по краям. Не совсем идеально для обычного узора, подобно этой UV-карте, но давайте вернёмся к той ситуации, с которой начали – карта шума на объекте неправильной формы :

blurry seam

Швы, практически, совсем не видны (конечно при более близком и тщательном рассмотрении их можно заметить, но в 3d – всё иллюзия, если зритель не может увидеть что-либо с первого раза, значит этого там может и не быть). И помните, чем "шумнее" карта, или чем больше ваш объект "боксо-образный", тем лучше будет работать данный способ. Например, бóльшая часть текстур поверхности кожи в этой картине была сделана с использованием данной техники.
Также обратите внимание на настройки кривых в разделе (Output) для двух Falloff-карт, изменяя их можно получить более отчётливые или размытые переходы по краям.

Я пользуюсь этой техникой также для добавления эффекта загрязнения объектов. Я редко использую процедурные карты для "грязевых эффектов", поскольку bitmap-карты для таких целей выглядят более натурально, но не всегда есть время для полной развёртки и рисования отдельных грязевых карт для всех объектов в сценах. В таких случаях я и использую данную технику для ускоренного наложения карт грязи на поверхность объекта.

В приведённом выше max-файле есть небольшая вариация: 6-ти сторонняя смешанная бокс-карта. Она похожа на 3-ёх стороннюю, за исключением того, что для неё используются 6 различных карт (верх, низ, слева, справа, спереди, сзади) вместо только трёх 3 (верх/низ, слева/справа, спереди/сзади). Это позволит вам (в случае, если вдруг понадобится) применить 6 слегка различающихся рисунков. Когда же вам просто нужен один рисунок, повторяющийся по всей поверхности, используйте "3-сторонний способ".


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