Выжимаем по максимуму из полигона!

Пятнишное моё.

Допустим есть у нас плоскость из одного полигона (на самом деле 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...

Подписывайтесь, спрашивайте, а я буду пилить посты по популярным вопросам.

Вы смотрите срез комментариев. Показать все
19
Автор поста оценил этот комментарий

Не кисло наверное нагружает систему, не эффективнее ли полигонов натыкать и не заставлять движок просчитывать высоты и т.д.?

раскрыть ветку (8)
16
Автор поста оценил этот комментарий

Попробую объяснить на словах)


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

НО

Получается туева хуча работы по моделированию всей этой красоты + все полигоны сразу присутствуют на уровне в исходниках (порезаны разве что вдали от камеры каким нить автолодом по-кривому)


Если-же использовать динамическую тесселяцию, то то, что вдали не будет иметь большого, заранее замоделенного количества полигонов, а сама тесселяция будет выдавать гораздо большую детализацию вблизи камеры, где она будет работать. При перемещении камеры в другое место, на старом месте тесселяция плавно сходит на нет и возвращает старое, низкое, количество полигонов.


Как-то так)

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Спасибо, достаточно доходчиво разъяснили.

1
Автор поста оценил этот комментарий

НО

Получается туева хуча работы по моделированию всей этой красоты

Ну. Можно же просто заранее сделать дисплейс в каком-либо 3д редакторе и экспортнуть куда надо. К тому же в редакторе можно очень быстро, хоть и немного криво оптимизировать модельку, чтобы не так много поликов было.
раскрыть ветку (1)
1
Автор поста оценил этот комментарий

Ну вся фишка тесселяции в том, что она динамическая, много поликов тока вокруг камеры. А если залепить обычный дисплейс в редакторе, то без детальной обработки ручками он все-равно довольно жруч выйдет да еще и все это у тебя пойдет в чистом виде в игру.


Есть конечно и там и там и плюсы и минусы... для той-же тесселяции даже самую ровную плоскость лучше все-равно разбить на чуть большее чем 2 количество полигонов...

2
Автор поста оценил этот комментарий

Как раз наоборот - лишние полигоны приведут к тому, что на ПК можно будет картошку жарить. Меньше - лучше.


Да и к тому же так быстрее получится, иначе пришлось бы вручную моделировать каждую неровность на плитке.

раскрыть ветку (3)
10
Автор поста оценил этот комментарий

Там дело скорее в пропускной способности шины, проще передать полигон и 3-4 карты чем передавать значения всех точек. Плюс большая часть все равно будет отброшена до рисования.

2
Автор поста оценил этот комментарий
Иногда "дешевле" навалить полигонов, чем текстур ;)
3
Автор поста оценил этот комментарий

Хм.. Я в принципе давным давно так и делал, имхо работа с кривой развёрткой удовольствия не вызывала.

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

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку