Уроки: 3ds Max

Создание Normal Bump и его применение

Однажды я приобрёл игру DOOM III и открыл для себя новый тогда эффект - normal bump. Его применение - это резкий скачок вперёд. Вы пробовали отключить БАМП в DOOM III? Без него игра превращается в DOOM I. Главный плюс - иллюзия трёхмерности (объёма) плоской поверхности без сложной сетки, вернее, буквально вообще без неё. В этом уроке я расскажу, как полностью вручную создавать собственные карты NORMAL BUMP и как их применять на практике.

Для создания трёхмерного бампа 3D MAX, как и игры, использует три цвета для определения точки в пространстве. То есть X,Y,Z соответствует R,G,B (возможен другой порядок). Для создание любых текстур нужно использовать только плоские виды, то есть рендер из окна перспективы исключается.

1. Делаем базу для создания карт Normal Bump.

- Создайте новую сцену: File>Reset.
- Создайте в виде Front Plane 1000х1000 с центром в [0,0,0].
- Создайте три источника света Target Directional Light трёх цветов: красный [255,0,0], зелёный [0,255,0] и синий
[0,0,255].

Проследите за тем, чтобы спад и тени были выключены. Мы воспользовались именно этим типом источника, так как нам нужна равномерно освещённая поверхность, а всенаправленный источник даёт неравномерное освещение.

Теперь нам нужно, чтобы свет освещал нашу плоскость под определёнными углами. Удаление от плоскости неважно, главное - угол и положение относительно Plane01. Для этого сделайте следующее:

- Разместим target всех источников света в координатах [0,0,0].

- Самим источникам задайте следующие глобальные координаты: красный [500,-500,0], зелёный [0,-500,-500], синий [0,-500,0].

Увеличить
Рис.1

Сейчас мы создали полностью и равномерно освещённую поверхность. Красный (справа) и зелёный (снизу) свет расположен под углом в 45 градусов к поверхности, что нам и нужно. А синий направлен прямо на Plane01. Теперь о материала: он должен быть матово-белый.

- Создайте в любой свободной ячейке редактора материалов такой образец: ambient,duffuse, specular - белого вцета. Specular Level, Glossiness - 0, Soften - 1. Присвойте этот материал нашей плоскости Plane01.


Рис. 02

Если свет и материал Вы установили правильно, то плоскость будет фиолетовато-сине-голубой -). На этом создание базы для создания текстур закончено.

Зачем вообще нужен Normal Bump и где его использовать? - Лично я сейчас ни в одной сцене не обхожусь без него. Это и тротуарная плитка, и протектор шин, и неровности штукатурки, и провода, и решётка, и сетка, и камни, и кирпичная кладка - всё, всё, всё. Это достойная замена сложной сетке или Displace'у. Например, зачем делать клавиатуру с кнопками с несколькими тысячами фэйсов, если можно обойтись 12 фэйсами? Normal Bump - это огромная оптимизация, которая подойдёт в любой ситуации (разумеется, где есть свет). Но перед применением этого рельефа, его сначала надо создать, например, нарисовать ту самую клавиатуру с кнопками, "откатать" с неё карту Normal Bump и затем "натянуть" на примитив "BOX".

На рисунках ниже показан небольшой пример, как оживляется пустое помещение и кабели при использовании Normal Bump.

Увеличить

2. Создание нашей первой Normal Bump карты.

Сейчас мы сделаем карту рельефа для кованного забора. Согласитесь, зачем делать трёхмерный забор с множеством сторон, если его можно сделать плоским без ущерба для вида? На его создании внимание заострять не буду, так как он делается очень просто: из цилиндров и шариков. Вы можете сделать свой.

- Создаём забор так, чтобы он вписался по размеру в нашу плоскость и выдвигаем его на передний план, чтобы он не находился в одной плоскости с Plane01, но и чтобы попадал под наш свет.

Вот, что получилось у меня. Я сделал его так, чтобы его можно было повторить, скопировав по оси Х столько, сколько нужно.


Рис. 03

- Теперь объединяем наш забор в один объект, либо просто выделяем все его части, выбираем тип рендера - "Box selected" на
панели инструментов вверху и рендерим. Сохраняем в файл 01.jpg.

Этот тип рендера позволяет отсечь всё лишнее, а нам нужно, чтобы наш забор повторялся. То есть нам нужна тайловая
текстура. Ещё нам нужна карта непрозрачности и карта зеркального отражения.

- Спрячьте Plane01 и снова отрендерите. Результат сохраните в 01.png 24b с альфа-каналом.
- Откройте Photoshop и сделайте из картинки 01.png чёрно-белую версию. То есть выделите всё непрозрачное и закрасьте белым.
Инвертируйте выделение и закрасьте чёрным. Склейте слои и сохраните в 02.jpg

Мы создали готовую к работе карту Normal Bump и карты Opacity и Specular Level. Вторая карта нам нужна для прозрачности
между прутьями и чтобы зеркальный блик не возникал там, где ничего нет - между прутьями.

3. Создание плоского забора.

- Создайте новую сцену: File>Reset.
- Создайте в виде TOP замкнутый сплайн любой формы (это будет наш забор).
- примените модификатор Extrude с любым значением отличным от 0.
- Конвертируйте в Editable mesh либо примените модификатор Edit Mesh, выделите верхнюю и нижнюю "крышку" и удалите.
- В редакторе материалов выберите любой образец и назначьте в качестве Opacity и Specular Level карту 02.jpg (сделайте
копию, но не образец).
- В настройках Specular Level, в свитке Output значение Output Amount убавтье до 0,5 (это уменьшит силу блеска).
- В качестве Bump - Normal Bump. В качестве Normal - 01.jpg.


Рис.04

- Назначьте забору этот материал. Включите отображение материала в окнах проекций.
- Примените к забору модификатор UVW Mapping и настройте его так, чтобы карта "сидела" на заборе, как надо.
- В настройках рендера, на закладке Common в группе Option отметьте Force 2-Sides (чтобы рендерить заднюю сторону забора,
поскольку мы сделали его из сплайна - для экономии полигонов).

Теперь наш забор готов полностью. Для проверки его псевдообъёмности поставьте несколько OMNI разных цветов в разных концах
сцены и отрендерите элемент забора покрупнее.


Рис. 05

Кстати, теперь можно назначить любую текстуру в канал Diffuse.

Можете скачать сцены урока и посмотреть маленький видеоролик: я анимировал три OMNI R,G,B, которые крутятся вокруг забора.
Очень впечатляет.

Файлы урока:
a01.max
b01.max
cinepack.avi

А вот несколько очень важных особенностей и советов:

- При очень большой степени выдавливания, да ещё в сочетании с отдалённостью камеры от этого объекта, порой возникают жуткие артефакты (включая интерференцию). Этот эффект часто возникает на заборах, спицах и подобных предметах. Но его легко устранить. Например, если швы бампа видны несильно, то можно переключить параметр сглаживания с Pyramidal на Summed Area, который можно найти здесь: material editor>свойство normal bump'а (bump>normal bump>normal)>Группа Bitmap Parameters>Filtering. Если же дело серьёзней - с этой задачей справится только SuperSampling; В редакторе материалов в одноимённом свитке отключите галочку Use Global Settings и включите Enable Local SuperSampler. А там дело ваше...

- При создании текстуры бампа стены из гладких камней трудностей не возникнет. А вот при создании карты кирпичной
кладки...так как кирпич - параллелепипед, то во фронте будет видна только его фронтальная часть, а боковые стороны невидны. В результате карта бампа получится плоской. Для устранения этой ситуации нужно всего лишь ту самую фронтальную часть немного масштабировать со знаком "-", и получится, что Back-поверхность будет чуть больше, чем
Front-поверхность>появляются боковые стороны в виде Front (если вы рисовали именно для этого вида). В итоге у вас кирпич будет похож на пуд золота ).

- Часто при создании normal bump ровных больших поверхностей, например, плитки, блоков и прочего (особенно в архитектуре), искажается конечный цвет, вернее яркость поверхности. То есть, если Вы, например, сделали дом из панелей серого цвета и применили объёмный бамп, то при рендере он может изменить яркость в ту или другую сторону. Почему? Потому что любой бамп построен на контрасте: обычно швы становятся темнее, а поверхность - светлее. Если Вам всё-таки важна точная цветопередача - то просто меняйте силу бампа, параметры карты в диффузном отражении или её процент влияния. Возвращаясь к домику из панелей, если у Вас он стал ярче - сделайте цвет диффузного отражения темнее или текстуру, если есть.

95056 Автор:
Актуальность: 295
Качество: 346
Суммарный балл: 641
Выбор Публики
Голосов: 82 оценки

Отзывы посетителей:

2 3 | След.
аватар
 
Predator84 13 0
для меня мало заметна разница между бамп и нормал бамп. Одно я понимаю, сделать бамп можно двумя щелчками мыши в фотожопе, а со вторым много головняка. Я думаю карта Z-глубины даст намного лучший результат в связке с дисплейс.
аватар
 
R4mmirez 7 0
Ребята!О чем тут спорить.Нормал маппинг уже вчерашний день.Все срочно осваиваем параллакс мапинг,к ниму кстати карты нормалей можно из под макса рендер ту текстуром сделать.А Дум приснопамятный уже параллакс может юзать,патч соответствующий вышел,с параллаксом все выглядит не как бы объемным ,а именно объемным,то есть узоры тени отбрасывают и еще кое что по мелочи.
аватар
 
gibsonff 8 0
Замороченный какой-то способ.
аватар
 
maxer 7 0
Класс!
Обалденный урок.
Актуально и понятно.
Спасибо.
аватар
 
scripterBB 11 0
Что за способ такой? Надо попробоватью.
аватар
 
crest 7 0
Не понравилось. Есть способы лучше.
аватар
 
Pete 2 0
Да, пардон, почитав тутор повнимательней, понял, что про геометрию речь вобще не идет.
То есть в данном случае достаточно использоавать только рендер в текстуру или плагин фотошопа.
Что делает существование этого тутора еще более необъянимым.

Кстати, если кто не в курсе, при рендере бамп в любом случае преобразуется в карту нормалей (это очень простая операция - всего лишь дифференциал), поскольку для вычисления освещенности в точке нужна лишь нормаль. И отсюда собственно и берется нормал-мап канал рендера в текстуру. Таким образом для скорости и качества рендера, это совершенно побоку - используеся нормальмап, или обычный бамп.
Совсем другое дело, когда нормальмап делается из геометрии - на примере того же Дума3 это хорошо видно. Там почти все нормалмапы делаются из геометрии, потому и все так красиво. Из текстур бампа такие сдалать невозможно.
Также красивый нормалмап делается некоторыми процедурными текстурами (особенно рекомендую посмотреть плагин симбионт).
аватар
 
Pete 2 0
ЭЭЭЭЭ......
Даже не знаю что сказать.....
Это в каком максе делалсь?

Вобще-то начиная с 6-го (или даже с 5-го, точно не помню) для этого есть специальный модификатор - projection и рендер в текстуру.
Ими можно делать нормалмап для объектов любой формы (например - для монстров), а не только для плоских стенок, с гораздо меньшим количеством гемороя.

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

Странно что до сих пор никто этого не заметил - из геймдева никто не читает что-ли?
аватар
 
Priha 1 0
Кто мне может обьяснить как пользоваться скриптом NormalTexMap http://scriptspot.com/start.asp?p=download&ID=2180
Сам не пайму как он работает.
DrFlash - наверно к тебе вопрос :)

ЗЫ
а урок понравился :)

аватар
 
CrazyDigger 21 0
Молодец мустчина! Все доступно так, без лишней хрени.......и из-за лепнины всякой сцены теперь вешаться не будут у меня, а для меня ето очень важно...спасибо...
аватар
 
2 MoonMan
Да чё ты кипятишься? Заборчик я сейчас для примера набросал, а в уроке червяка мучал.

>Но, тольк оя так и не понял вот что, на цервяках-то каким макаром Вы карту сняли? - рендер ту текстура или чем, >плагинчиком?
Да, RenderToTexture. С примерно теми же настройками, как на примерчике с забором.
аватар
 
Viliam Diego 1 0
Moon Man
>А угол то я долго подбирал методом тыка )))
А можно следующим образом настроить прожекторные источники света (всего их 5-ть):
1)координаты "-90,0,0" . Цвет света "255,0,0" с multiplier " -0.5";
2)координаты "90,0,0". Цвет света "255,0,0", multiplier " 0.5";
3)координаты "0,-90,0". Цвет света "0,255,0", multiplier "-0.5";
4)координаты "0,90,0". Цвет света "0,255,0", multiplier " 0.5";
5)координаты "0,0,90". Цвет света "0,0,255", multiplier "0.5".
При этом, все маркеры цели источников света должны иметь координаты "0,0,0". Далее, в "Rendering->Environment..." цвет Ambient должен быть серым "127,127,127". И нам сам объект должен быть назначен материал с белым диффузным цветом.
Да, с простыми неплоскими объектами отлично справляется и дефолтная максовская (макс мин.7-ой версии, вроде) "печка".




аватар
 
Moon Man 37 0
to Александр Карабардин: ух, так это ваш забор, или чей? я не понял. Надеюсь, Вы не намекаете на то, что я что-то откуда-то содрал. Потому что это не так. Хотя совпадение забор=забор забавно. Мой способ с расставлением цветных светильников я, кстати, раньше испробовал. А потом ужо определил этот способ и в "рендер ту текстура". Мне всё равно привычнее делать своим...дедовским способом )

Насчёт WORMS ) Круто. Просто мне ещё не приходилось сдирать карту с хай на лоу. Пришлось бы - нашёл бы способ, может, даже и ваш. Но, тольк оя так и не понял вот что, на цервяках-то каким макаром Вы карту сняли? - рендер ту текстура или чем, плагинчиком?
аватар
 
2Moon Man
Вот тот способ (из хелпа, кстати:))
http://img121.imagevenue.com/img.php?image=13249_nm_323lo.jpg

сами карты
http://img152.imagevenue.com/img.php?image=13257_NormalsMap_358lo.jpg
http://img135.imagevenue.com/img.php?image=13265_opacity_539lo.jpg

и на тему персонажев из того моего урока
http://img153.imagevenue.com/img.php?image=13272_worm_562lo.jpg
аватар
 
Moon Man 37 0
Про фильмы - верно. Бамп везде сплошной. Просто он так удачно и эффективно применён, что не выглядит как бамп, а как натуральное что-то...морщины, например. Незаметно, но в цель!

Про кирпичи...создаём плэйн в топе, кидаем кирпичи на неё и вкл. отображение текстур в виде. Затем любым способом создаём энти самы кирпичи, например, теми же плэйнами по размеру кирпичика на текстуре. Вот тебе и кирпичная кладка из плэйнов...плоская. Выдавливаем. Короче, делаем шоколад...да-да-да, - шоколад, то есть масштабируме (или бэвэлом) макушки со знаком минус, чтобы в топе появились тонкие боковые стороны у кирпичиков. Можно и лучше пригладить все углы и рёбра, ведь в реалити кирпич неидеален. И можно нойс добавить, увеличив разбиение плэйнов.Вот тебе и Нормал бамп для твоей текстуры кирпичей. Попутно можно и карту зеркальных отраженйи сделать; в моём представление она будет смахивать на альфа-канал. Швы - темнее, кирпичи светлее+шероховатость от неровностей. Вуаля. Кстати, думаю скоро доделать 10ку (ВАЗ) и интерьерчик один простенький (будь он не ладен. Время рендера 13 часов). Скоро, возможно, увидите. В любом случае всё это уже есть у меня на сайте.

И не знаю, почему говорят "медленно в максе делать это или сё". Я в Максе всё делаю очень быстро. Не надо думать, что я дилетант в других программах, например, в Кореле, Автокаде и десятках др. (я их знаю отлично), но лично я предпочитаю делать визитки и чертежы соответственно в Максе, и при необходимости экспортирую - у меня это выходит на удивление быстро именно в Максе. Макс - это Бог, хоть я и атеист ) Он может всё.

P.S.. Слава тебе, о! долгий Рендер!
аватар
 
Leo Go Bezerk 7 0
Отличный урок!
Я правда не поянл, чего многие его в штыки восприняли.
Вся особенность этого способа в том, что он под конкретный случай. Конечно, персонажа не детализируешь им (хотя никто не отменял рендер ту текстур). Но в контексте примеров это отличный способ. Нарисовать более мение объемный узор не всем под силу в фотошопе, тем более что пример очень простой забор. Да и вообще редактирование готового бампа в фотошопе довольно строго требует планшетки. Создание бампа средствами самого макса это вообще последнее дело, тк очень усложнен процесс проэктировки хай на лоу. З-брашь отлично справляется с задачей, но я очень сомневаюсь, что всем под силу его использовать между делом. Тулы от Ати и Нвидия очень простые и удобные, но есть свои ньюансы.
Я все это к тому, что сколько случаев - столько и способов создания бампа. Я вот сейчас вообще не заморачиваюсь с песонажами. Делаю под смус, показываю все грубые детали (кости, мышцы и т.д.). А нормал бамп бля морщин, вен, пор и т.д. на него делаю из текстуры, не прибегая к з-брашу. У меня есть текстура огромного разрешения всей кожи для персонажа. Я делаю инверт и применяю нормал фильт - выходят отличные морщины и поры. При желании можно в ручную дорабоать. З-брашь нервно курит в стороне. :) Также есть много других тулов. Меня сейчас очень заинтересовал пакет Modo 201, правда стоит он $900.
Кстати, кто-то писал про фильмы - в фильмах нормал используется вокруг да около. Ни один макинтошь не сможет отрендерить нормального персонажа со всевозможными шейдерами свыше миллиона полигонов. Все складки, морщины, поры и прочее делается бампом. Не редко в з-браше.
аватар
 
Андрей Пидвирный 152 0
Представьте себе, если бы героев для DOOM3 в ID Sofware делали вашим способом...
Или если есть, например, текстура кирпичей или ещё чего и к ней надо нормал карту создать, тогда как?
аватар
 
Moon Man 37 0
Я так понял, Вы занимаетесь играми или подобным? Судя по сайту и вопросам...А что это за хрень...я имею ввиду это рендер из Макса на сайте (хотя нет, вроде) или уже куда-то экспортированы сценки, и уже можно прошвырнуться по улочкам? Тады что это за программка, или игруха, или мапедитор, или как она там?

P.S.: А по поводу опыта: moonman.mylivepage.ru
аватар
 
Moon Man 37 0
?? Не понял... То есть взять, например, аморфную скалу хайполи как объект и содрать с неё шкуру (бамп) в той самой сцене, чтобы потом опять же её натянуть на лоуполи? Верно? А разве фотопоп такое умеет. Он как минимум 2Д! А, может, просто в моей сцене для снятия "скальпа" нужно энту самую скалу сначала повернуть передом ко мне и к лесу задом, и отрендерить, затем снова повернуть на 90 градусов и отрендерить, и так ещё 4 раза, чтобы в конце у нас получилось 6 "скальпов" с каждой стороны (куб) > натянуть их на лоуполи. Мне кажется, это должно сработать. Если ещё подумать, может и ещё что-нибудь придумаю. Кто ищет - тот всегда найдёт.
аватар
 
Андрей Пидвирный 152 0
Я имею в виду не натягивать, а снять бамп с хай-поли модели, чтоб положить на лоу-поли.
Вашим способом никак.
А по поводу опыта:
http://www.frees-st.narod.ru/games.html
2 3 | След.
Зарегистрируйтесь, чтобы добавить комментарий.
Эту страницу просмотрели: 1398 уникальных посетителей