Vlad Ivanov

Система Плавающих текстур
Как можно сделать поверхность ландшафта максимально реалистичной, без трассировки лучей, использования сложных шейдеров и постобработки?
Итак: У нас есть кусок ландшафта, состоящий из четырех квадратов.Это не разные квадраты, а абсолютно одинаковые объекты Plane, абсолютко одинаково не имеющие никакого рельефа (то есть это объекты Plane состоящие из 4-х вертексов и не имеющие никакого скульптинга, а абсолютно плоские), но они повернуты в разные стороны и на них наложены разные текстуры, причем только Diffuse (нет никаких displacement, glossiness, bump, roughness, metallic, specular).
Склеиваем их вместе и получаем единый фрагмент ландшафта. Для контроля по углам ставим цветные уголки.
Для понимания масштаба и того, как ведут себя тени и отражения, ставим на землю две модельки солдат и смотрим с разных ракурсов.
Создаем простой объект Plane, подразделяем его на несколько сотен полигонов и делаем скульптинг поверхности, придав ей объем.
Если посмотреть фронтально, то мы увидим, что наша поверхность подраздеренная на множество полигонов имеет реальный рельеф.
Теперь на эту рельефную поверхность наносим шейдер, делаем траву и расставляем объекты, а также ставим объект Plane лужи в центре квадрата и присваиваем луже текстуру с зеркальным отражением.
Все объекты, находящиеся на краю лужи - отражаются в ней.
Теперь, если мы посмотрим на наш ландшафт с двух разных ракурсов, мы увидим, что трава, камни и палки - это отдельные реальные 3D-объекты, которые имеют отражения, тени, блики и реагируют на солнечные лучи.
Начинается самое интересное!!!

Давайте за основу мы возьмем картинку ниже и назовем ее "Базовая картинка", а ракурс с которого мы на нее смотрим - "Базовым ракурсом",
а точка ч которой мы смотрим - "Базовой точно взгляда".
Если мы изменим ракурс, то увидим, что все объекты на земле - это отдельные реальные 3D-объекты.
Предположем, игрок стоит на одном квадрате поверхности, а смотрит на другой.
Если между глазом игрока и участком на который он смотрит поставить невидимый экран (стоящий перпендикулярно линии взгляда), то на нем появится проекция участка неправильной формы.
Эта форма соответствует тому, что здесь и сейчас видит игрок.
А теперь берем в руки бубен!

Рендер участка под углом (нашу "Базовую картинку") загоняем в Photoshop и при помощи инструмента "Искажение" превращаем неправильный четырехугольник в квадрат и немного меняем контрастность.
В игре заменяем наш многополигональный кусок ландшафта на плоскость, состоящей их одного полигона и присваиваем ей эту квадратную текстуру в качестве карты Diffuse. Теперь попробуем посмотреть на наш участок с трех разных ракурсов:
Предположим наша карта сориентирована по сторонам света.
Первый ракурс (неправильный), игрок смотрит с позиции 220 градусов, текстура размазана.
Третий ракурс (неправильный), игрок смотрит с позиции 132 градуса, текстура размазана.
Второй ракурс (правильный), игрок смотрит с позиции 191 градус, текстура в идеальном повороте, создает 3D-иллюзию.
Мы можем смотреть на наш участок по кругу. Разобьем 360 градусов на 10 секторов (по 36 градусов каждый). Наш правильный ракурс 191 градус попадает в сектор между 180 и 216 градусами. Следовательно: если игрок смотрит на участок находясь в этом секторе, то проигрывается эта текстура. Если игрок перемещается в следующий сектор, то проигрывается следующая текстура.
Таким образом наша текстура становится "Плавающей".
Вы только посмотрите на это!

Верхний кусок ландшафта - это высокополиготальный рельефный объект, на который насыпано еще куча объектов (это видно по картинке под ним снятой с другого наклона - все объемное). И все это при рендере подвергалось сложной постобработке освещения и геометрии объектов.
А теперь посмотрите на картинку ниже.
Это объект, снятый под тем же углом, состоящий из одного полигона (это видно на картинке под ним, где он под углом - он плоский и на нем нет никаких объектов).
Этот плейн не подвергался никакой постобработке (ни глобальное освещение, ни отражения, ни тени - НИЧЕГО), просто рендер вывел карту объекта Diffuse и все.
Да, между верхним и нижним снимками есть некоторое отличие, но это можно подкрутить в фотошопе, ха-ха, представляете, мы уходим от внутридвижкового инструментария сложного послойного рендера в стороннюю программу фотошоп. Конечно это шутка - функцию фотошопа для ретуши нашей "Плавающей текстуры" будет выполнять наша виртуальная мастерская, в которой эти текстуры будут генерироваться автоматически.
Эта идея пришла мне когда я занимался наружной рекламой и наше агентство делало интерьерную печать для 3D-наливных полов.
Эффект 3D-наливных полов заключается в иллюзии реального объема изображения, если смотреть на него с определенного ракурса, с определенной точки, например на входе в ванную.
Таким образом, в нашей "Виртуальной мастерской" будут автоматически создаваться пакеты плавающих текстур для каждого участка ландшафта. А с учетом того, что наша карта формируется всего из нескольким модульных повторяющихся участков, то и наших плавающих текстур будет немного.
В эти текстуры мы можем вносить любые высоко детальные и фотореалистичные наборы объектов. Это дает безграничные возможности для фоторендера вашего игрового уровня.
Например вы приехали на реальное поле и вам понравился внешний вид поверхности земли, вы выбрали участок, обошли его вокруг и через каждые 36 градусов сфотографировали и потом из этих 10 фотографий превращенных в квадрат сделали пакет плавающих текстур для вашего игрового ландшафта.
This site was made on Tilda — a website builder that helps to create a website without any code
Create a website