Выжимаем по максимуму из полигона!
Пятнишное моё.
Допустим есть у нас плоскость из одного полигона (на самом деле 2, триангуляция всё такое). Что же можно получить с этого полигона?
Попробуем как в лихие 90-е, кинуть на него фототекстуру.
На самом деле в половине случаев хватит и такого результата, вот только если мы сдвинем освещение или камеру, натянутая фотография выдаст себя.
Слишком плоско, попробуем обмануть глаз и искусственно добавить теней в стыках, накинем карту аmbient occlusion.
Ну вот, появились затенения в тех местах куда свету якобы должно труднее попасть. Напомню что просчёт света в сцене не изменился, движок думает что это все еще плоская поверхность. Чтобы вбить ренедер-движку идею о том, что эта поверхность имеет неровности, прибегнем к стандартной с года 2003 для геймдева технологии - Normal bump. Это RGB карта, где каждый канал содержит себе информацию о угле наклона нормали в конкретном текселе. Где условно черный цвет это -45 градусов, а белый +45 относительно осей X Y Z соответственно.
От такой инфы движок прибалдел и уже начал одуплять под каким углом свет падает на поверхность.
Плохо видно структуру, накрутим отражений. Абсолютно все поверхности отражают не только диффузно, но и рефлексно.
О боги, что за латекс, если просто накрутить отражени, то ничего толкового не получится. Уберем все лишние текстуры, чтобы сконцетрироваться только на отражающей способности поверхности.
Проблема - поверхность одинаково ярко отражает, такого не бывает, добавим карту reflection (specular).
Попробуем покрутить глянцевость.
Вроде бы и неплохо, но если приглядеться, то в глаза бросается однородность бликов. Значит нужна такая текстура, которая укажет рендер-движку, где блик мягче, а где практически зеркальная поверхность.
нямка, вернем предыдущие карты на место: Diffuse color,Ambient occlusion, normal bump.
Для большинства игровых движков этого достаточно, этого достаточно и для общих планов на пост-продакшене. Но если захотите подъехать камерой поближе, увидите что "плоскость" этой плоскости никуда не делась, все что мы делали-это манипулировали светотенью.
Надо бы указать рендер-движку, какие пиксели выше,а какие ниже (глубже), для этого на понадобится карта с очевидным названием "карта высот".
Упс, переборщ.
Так то лучше, сразу появилась неоднородность структуры, затенения в стыках просчитываются уже движком, а не заготовленной картой AO, но её я все равно оставляю, чтобы издалека карта выглядела контрастной. Вернем все предыдущие карты кроме normal, она будет только мешать корректно просчитывать нормали поверхности.
Посмотрим под более привычным углом. "плитка как плитка" - если так скажет обыватель,то значит работа удалась. И это еще не все, что можно выжать из пары полигонов, все выше описанное относится к классическому подходу к текстурированию, а ведь есть еще PBR (physically based rendering), но это уже другая история :)
P.s.Текстуру для этого примера я получил методом фотосканирования, про который я писал в предыдущем своем посте. http://pikabu.ru/story/nemnogo_o_teksturirovanii_ili_chto_mo...
Подписывайтесь, спрашивайте, а я буду пилить посты по популярным вопросам.