• Авторизация


Создание карт нормалей из фотографии 20-12-2008 16:38 к комментариям - к полной версии - понравилось!



[600x400]
 

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

 

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


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

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

[521x463]
 

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

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

[512x236]

 

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

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

  1. Переведите изображение в режим 16 Bits/Сhanel (в меню Image – Mode). Это улучшит качество последующих преобразований.
  2. Скопируйте слой с изображением (Ctrl+J). 
  3. Нам нужна черно/белая карта высот, поэтому обесцветьте его (Ctrl+Shift+U)
  4. Примените к этому слою фильтр Normal Map с настройками обеспечивающими максимальную детализацию, и небольшую высоту.Например 4 sample, Scale–3. Если на этом шаге вы получаете странный результат, то вернитесь к настройкам фильтра и установите все переключатели, в положение как на скриншоте выше.
  5. Скопируйте этот слой (Ctrl+J), назначьте ему режим Overlay. Таким образом вы сделаете вашу карту нормалей в два раза более выпуклой.
    [210x213] 
  6. Размойте этот слой фильтром Gaussian Blur на 2-3 пикселя. 
  7. Затем снова скопируйте этот слой и еще раз размойте на 2-3 пикселя (Ctrl+F – применение последнего фильтра). И так несколько раз. Таких слоев, лежащих на изначальной карте нормалей в режиме Overlay может быть 10 - 20, или больше.
  8. После того как нужный объем достигнут объедините все слои нормалей, и примените к ним операцию нормирования. Для этого еще раз примените фильтр NormalMap отметив пункт Normalize only.

  [344x276]
 

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

[512x256]
 

Рендер в 3DSMax:

[512x512]
 

 

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

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

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

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

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

[512x512]
 

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

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


 

вверх^ к полной версии понравилось! в evernote
Комментарии (6):
Mynglam 21-12-2008-12:25 удалить
Мне кажется что ты что-то упускаешь. Надо чтобы непосвященый прочитал, сразу пробелы обозначит.
JamesDin 21-12-2008-22:46 удалить
Да, я нескольким людям дал ссылку, надеюсь в ближайшее время получу фидбек. Перечитал оригинальный урок. Там автор переводит текстуру в 16 бит на канал, думаю об этом тоже нужно упомянуть.
JamesDin 25-12-2008-15:42 удалить
Переписал текст по нормалям. Переделал все скриншоты. Уже стало немного доставать. )) Не могу определится с терминами. Как писать? : Norman map, карта нормалей, нормали... это не режет слух? Так же: "Сходимость текстуры", "текстура тайлилась", "сходящуюся текстуру" Имхо, звучит довольно коряво. Может предложите более красивые формулировки?
Mynglam 25-12-2008-19:07 удалить
Я бы не парился и называл нормальным сленгом: нормали, прожечь/запечь нормали, талинг и тд. Просто сноской внизу сделать обьяснения для тех кто не курсе.
JamesDin 25-12-2008-19:36 удалить
Да я думаю все в курсе, но звучит жутко!
JamesDin 11-02-2009-18:05 удалить
Урок опубликован! http://www.render.ru/books/show_book.php?book_id=765 К сожалению с ошибками, которые оперативно нашел Mynglam. Написал письмо в render, надесюь быстро исправят )


Комментарии (6): вверх^

Вы сейчас не можете прокомментировать это сообщение.

Дневник Создание карт нормалей из фотографии | JamesDin - Корзина с бумагами | Лента друзей JamesDin / Полная версия Добавить в друзья Страницы: раньше»