Render.ru
Поддержать
Евгений Булатов
ПОДПИСАТЬСЯ
  • ПРЕДЛОЖИТЬ ПРОЕКТ
  • ДОБАВИТЬ В КОНТАКТЫ
4Записей
3Следят
0Читает
449 KЗаходов

Создание карт нормалей из фотографии

Урок

Здравствуйте, меня зовут Булатов Евгений, иногда подписываюсь как Vendigo. Ниже я расскажу об одном интересном методе создания normal map из фотографий.

Часто для создания текстур используются фотографии. Однако в наш технологичный век мало создать diffuse текстуру, нужны еще текстуры бампа, спекуляра, и бог еще знает чего. К сожалению, фотоаппарат может сфотографировать только цвет. Я слышал, в этом направлении ведутся работы, но это еще только работы... Так что все труды ложатся на руки художников. А все, что есть в нашем арсенале это только Photoshop, ну может быть еще и Wacom. Не спорю, это конечно круто, но все равно не достаточно. К нашему счастью умные парни из Nvidia сделали плагин для Photoshop`а - NVIDIA Normal Map Filter, который позволяет создавать из карты высот карту нормалей. Этим плагином мы и воспользуемся.

Скачайте и установите этот плагин.

После установки он появится в меню Filter – NVIDIA tools – NormalMapFilter.

Основные настройки сосредоточены в поле Height Generation.

Поле Scale - задает масштаб по высоте для карты нормалей. Выше него находится ряд переключателей детализированности карты. Подбирая эти два параметра, мы получим или детализированную или глубокую карту, но все вместе.

На рисунке показаны разные варианты сгенерированных карт нормалей:

Но есть интересный метод, позволяющий создавать объемную и вместе с тем детальную карту нормалей.

Алгоритм по шагам:

  1. Переведите изображение в режим 16 Bits/Chanel (в меню Image – Mode). Это улучшит качество последующих преобразований.
  2. Скопируйте слой с изображением (Ctrl+J).
  3. Нам нужна черно/белая карта высот, поэтому обесцветьте его (Ctrl+Shift+U).
  4. Примените к этому слою фильтр Normal Map с настройками, обеспечивающими максимальную детализацию, и небольшую высоту. Например, 4 sample, Scale – 3. Если на этом шаге вы получаете странный результат, то вернитесь к настройкам фильтра и установите все переключатели, в положение как на скриншоте выше.
  5. Скопируйте этот слой (Ctrl+J), назначьте ему режим Overlay. Таким образом, вы сделаете вашу карту нормалей в два раза более выпуклой.

  6. Размойте этот слой фильтром Gaussian Blur на 2-3 пикселя.
  7. Затем снова скопируйте этот слой и еще раз размойте на 2-3 пикселя (Ctrl+F – применение последнего фильтра). И так несколько раз. Таких слоев, лежащих на первой  карте нормалей в режиме Overlay может быть 10 - 20, или больше.
  8. После того как нужный объем достигнут объедините все слои нормалей, и примените к ним операцию нормирования. Для этого еще раз примените фильтр NormalMap, отметив пункт Normalize only.

  9. Переведите изображение обратно в режим 8 Bits /Chanel (меню Image – Mode). Карта нормалей готова!

 

Рендер в 3DSMax

Отступление первое:

Плагин NVIDIA Normal Map Filter, преобразует карту высот в карту нормалей. Поэтому для него подходят изображения, где темные участки соответствуют углублениям, а светлые выпуклостям. Часто приходится вручную дорабатывать карту высот из исходной текстуры, рисуя поверх фотографии карту высот.

Отступление второе:

Операция нормирования (применение фильтра Normal Map в режиме Normalize only) нужна потому, что после наложения нормалей в режиме Ovelay, информация в синем канале теряется. Операция Normalize восстанавливает ее.

Есть мнение, что при наложении нормалей нужно Красный и Зеленый каналы смешивать через Overlay, а Синий накладывать в режиме Multiply. Те, кто хорошо знают Photoshop, могут написать экшн для подобной операции и попробовать метод с таким, более «правильным» смешиванием.

Отступление третье:

Сходимость текстуры. Если ваша текстура тайлилась, то после этих операций нормали сходится, не будут (появится острая кромка по краям). В этом случае можно делать так:

Перед созданием normal map, увеличьте размер холста в 3 раза. Canvas Size 300% (Ctrl+Alt+C). Затем скопируйте вашу сходящуюся текстуру на всю площадь.

После чего объедините эти слои и создайте normal map, как было описано выше. Затем, вызовите еще раз команду Canvas и впишите исходный размер в пикселях (например, 512 х 512) . У вас получится исходная текстура нормали, которой будут идеально сходиться.

Вот и весь метод, создания normal map из фотографии. Технология любезно позаимствована с сайта cgtextures.com

741
Комментарии:36
по поступлению
830
0
Дима Ярков
11.02.2009 16:53
Администратор Арх. Галереи
Неплохо, надо попробовать. Второй метод интересный, и есть информация для размышления.
18
0
Спасибо. Второй метод это про "Отступление два" наверное? Попробуйте, но и через Normalize все работает.
29
0
Я слышал, в этом направлении ведутся работы, но это еще только работы...
Значит, прожка CrazyBump, без которой мало игр сейчас обходится, подпадает под фразу "но это ещё только работы..."? =) PS Урок понравился.
28
0
redCrocodile
11.02.2009 22:55
Легкий, стильный, а главное короткий и ненапрягающий урок, чего только стОит отсылка в начале к плагину NVIDIA, мелочь, а приятно 4/5
546
0
Михаил Наумов (Mic Nau)
11.02.2009 23:10
Серебряный спонсор
Плагин использую, но подробно разбираться времени не было. Спасибо за полезный урок!
7
0
Pvt_Snafu
12.02.2009 9:22
Crazy Bump очень ничего работает, хотя иногда конечно подвирает. а это теперь поюзаем.
7
0
По поводу третьего отступления: попробуйте галку Wrap :)
18
0
Александр Карабардин Александр Карабардин (2D&3D Work) Значит, прожка CrazyBump, без которой мало игр сейчас обходится, подпадает под фразу "но это ещё только работы..."? =) PS Урок понравился.
Не буду особо распространятся про CrazyBump, но не забывайте что она платная. 2 [b]w6OP3w[/b], спасибо!
megavitus megavitus 12.02.2009 14:05 По поводу третьего отступления: попробуйте галку Wrap :)
Не совсем понял про галку Wrap. Сходимость нормалей теряется на этапе наложения размытых Gaussian Blur слоев. Если же однократно сконвертировать нормали из сходящейся карты высот, то тайлинг сохраняется. Как создавать сходящиеся текстуры можно почитать здесь [url]http://www.render.ru/books/show_book.php?book_id=581[/url]
2
0
SAArchitect
12.02.2009 18:12
Евгений Булатов Не буду особо распространятся про CrazyBump, но не забывайте что она платная.
Платная, да не очень. Есть секретик для платности. На центре в соответствующем разделе ссылка имеется. Урок отличный! 5Баллов.
18
0
SAArchitect Урок отличный! 5Баллов.
Спасибо!
549
0
ksi2
12.02.2009 21:29
Ведущий Творческих Дуэлей
Жек, спасибо:)) Мне пригодилось)
88
0
Mr.Alex
12.02.2009 21:43
автор передрал с cgtextures.com)))там этот метод дааааавно описан :) бойан,господа
18
0
Mr.Alex автор передрал с cgtextures.com)))там этот метод дааааавно описан :) бойан,господа
Какой проницательный! А последнюю строчку урока не потрудился прочитать )
4570
0
Moderator
13.02.2009 10:41
Модератор Render.ru
Mr.Alex (3D Work), будьте немного внимательнее, автор не "передрал", а именно позаимствовал, причем сам же уведомил об этом и дал ссылку на ресурс. P.S. Так же уведомляю о том, что данный урок, не участвует в [url=http://www.render.ru/show_page.php?page_name=rules_book]конкурсе уроков[/url], так что Автор не преследует меркантильных целей.
10
0
сорри,и впрямь не читал из урока ни строки ) по картинкам метод сразу опознал [smile=12] Прошу прощения,не прав
296
0
Pionar (Владимир Соколов)
16.02.2009 9:22
Платиновый спонсор
здорово, пользую этот плагин... только методом тыка, а теперь узнал что к чему
2
0
Soohar
16.02.2009 15:37
На самом деле этот метод уже давно известен)
2
0
Dimetz
07.05.2009 19:57
"Отступление второе: Операция нормирования (применение фильтра Normal Map в режиме Normalize only) нужна потому, что после наложения нормалей в режиме Ovelay, информация в синем канале теряется. Операция Normalize восстанавливает ее." что касается синего канала, все делается просто, нужно сгенерировать карту нормалей, потом перейти на вкладку СЛОИ скопировал фон (Ctrl+J) потом кликнуть правой мышкой по копии и в меню выбрать НАСТРОЙКИ СМЕШИВАНИЯ, и снять галочку с синего канала (R G B), и всё, синий канал останется нетронутым, потому, что не будет подвергаться обработке.
18
0
Dimetz что касается синего канала, все делается просто, нужно сгенерировать карту нормалей, потом перейти на вкладку СЛОИ скопировал фон (Ctrl+J) потом кликнуть правой мышкой по копии и в меню выбрать НАСТРОЙКИ СМЕШИВАНИЯ, и снять галочку с синего канала (R G B), и всё, синий канал останется нетронутым, потому, что не будет подвергаться обработке.
Действительно, хорошее решение! Но так получиться, что R и G будут углубляться а B останется неизменным. Но попробовать определенно стоит.
2
0
cubik
21.01.2010 12:49
А поясните для чего именно нужен шаг 6? Размойте этот слой фильтром Gaussian Blur на 2-3 пикселя. У меня после его применения теряются мелкие детали и не ровности получаются сильно сглаженные. Так может его не обязательно применять?
18
0
cubik cubik 21.01.2010 12:49 А поясните для чего именно нужен шаг 6? Размойте этот слой фильтром Gaussian Blur на 2-3 пикселя.
Размытие применяется ко второму слою нормалей. Первый четкий, а чем дальше, тем больше размывается слой. Это обиспечивает "глубину". Внимательно следуйте уроку, там размытие применяется к копиям, которые накладывается в режиме Overlay.
32
0
Magrit
31.03.2010 3:21
Крайне кстати набрёл на урок. А то уже хотел в форуме в колокол ударить, чтобы дали какую ссылку на урок по данному вопросу. =)
2
0
Парящая
24.08.2010 13:56
Урок классный, но я совсем не понимаю как плагин устанавливается. И он подходит для CS5
2
0
NOFACE
13.11.2010 2:19
спасибо большое за урок очень к стати
80
0
Спасибо, очень помогло,
11
0
Lostrock
04.02.2012 1:09
Отличная информация, большое спасибо!
65
0
Sergey Krivoruchko
06.03.2012 18:47
Большое спасибо! очень полезный урок!
7
0
Так карты нормалей для игр не создаются. Псевдо 3д)
40
0
Danial Marselle
11.04.2012 21:27
отличная вещь)) в некоторых случаях без неё честно говоря не обошелся бы
218
0
Censored_ID
11.07.2012 19:12
Александр Андреев Так карты нормалей для игр не создаются. Псевдо 3д)
Бред полнейший) Еще как создаются. Совсем не обязательно делать хайпольку или скалпт для запекания. Даже для ААА проектов подобные методы используются очень часто. Важен не способ создания нормалмэпа, а результат и затраченное время. Если нарисовать хайтмэп и снять с него нормал быстрее, чем скалптить (не теряя при этом в качестве) - то надо так и делать.
2
0
X3Leja
27.08.2012 19:24
Ссылка на плагин уже не действительна, вот новая рабочая: http://developer.nvidia.com/content/nvidia-texture-tools-adobe-photoshop
2
0
Boris Pasrchnik
25.07.2013 9:46
Все равно спасибо! =)
38
0
Alexey Belousov
11.04.2014 18:13
Скажите, а на версию Photoshop CC установится?
2
0
Jane_Mary_Jane
19.07.2014 19:39
А можно по пункту №8 поподробнее, пожалуйста. =) 
31
0
AlienX
20.07.2015 10:20
Скажите а получившуюся карту просто в слот бамп кидать ?
2
0
на CS5 12.1 не ставится