Как сделать пиксельную текстуру unreal engine 4

Обновлено: 01.07.2024


Настройка материала для пост обработки

Назначить материал для работы в пост обработке достаточно легко. Для начала создадим материал. Создать нужно обычный материал, ничего особенного тут нету.

Создание нового материала

После создания называем его (я назвал PixelPostProcess) и откроем его в редакторе материалов двойным кликом.

В параметрах материала нужно сразу указать, что материал не для поверхностей объектов, а для пост обработки. Меняем параметр Material Domain на Post Process.

Параметр материала для пост обработки

Обратите внимание, что все свойства материала, кроме Emissive, отключились. Это из-за того, что остальные свойства работают с освещением, углом, геометрией и остальными вещами, которых в пост обработке нету, так как это просто эффект для изображения, который рендерится на экран.

Теперь давайте установим этот материал в качестве эффекта в пост обработку. Для этого нам нужно определиться, в каком именно месте мы хотим включать этот эффект. Тут варианта два: в самой камере или в PostProcess Volume (участок на сцене. внутри которого включаются эффекты пост обработки). Я помещу наш эффект в камеру, что бы эффект был всегда. В моем случае камера находится в персонаже, поэтому я открою класс моего персонажа, найду в нем камеру и открою настройки пост обработки.

Установка материал на пост обработку

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

Теперь наша пост обработка установлена, однако материал будет выводить нам черный экран, так как материал пока что пуст.

Давайте зайдем в материал и настроем его так, что бы он показывал изображение сцены. Сделать это очень просто.. Нам понадобится блок Scene Texture, который может вывести на изображение нужный нам канал.

Поставим этот блок и присоединим его к Emmisive свойству. Обращаю внимание, что Emissive свойство именно то, что будет выводится на экран.

Установка SceneTexture

Теперь в качестве пост обработки будет выводится то, что рендерится на экран. И с этим мы можем переходить к следующей части.

Порядок обработки материала

По умолчанию материал обрабатывается до остальных эффектов пост обработки (Экспозиция, Блум и так далее). Из-за этого выводимое изображение из ScreenTexture может быть далеко от того, что вы видете через камеру редактора. Вы можете вручную произвести манипуляции после него, либо установить, что мы материал пост обработки обрабатывался уже после остального. Для этого нужно поставить параметр Blendable Location на Before Tonemapping.

Создание пикселизации в материале

Теперь давайте приступим. Для начала, нужно вывести сам TexCoord, что бы мы могли переопредлить то, как пиксели в SceneTexture рисуются на экране.

TexCoord блок

Что бы у нас получился эффект пикселизации, нам нужно сделать так, что бы TexCoord был не таким плавным, какой он изначально, а был более ступенчатым. Это и позволит отрисовать одно значение на нескольких пикселях сразу.

Мы уже знаем, что TexCoord выдает значения от 0 до 1. Но нам нужно сделать ступени вроде 0.1, потом 0.2 и так далее, без промежуточных значений. Этот эффект мы можем получить простым округлением до десятых.

Поскольку изначально нету подобного блока, мы округлим вручную:

Округление до десятых

  1. Умножаение на 10 даст нам текстуру от 0 до 10
  2. Округление позволит округлить значения до целых чисел. Например значение 5.453 округлится до 5.
  3. Деление на 10 вернет нам текстуру обратно, однако сейчас текстура не будет иметь всяких значений, вроде 0.346, а будут ровные значения 0.3, 0.4 и т.д.
Если вам не нравится, что делает Round внутри себя (можно посмотреть двойным кликом по нему), можно использовать Custom блок с HLSL кодом. В этом коде нужно создать x вход и создать простую формулу round(x). Кстати уже готовый такой блок можно найти внутри Round функции. Он не используется, но лежит там как раз в качестве альтернативы. Просто скопируйте его и вставьте в основной график вашего материала, заменив им саму функцию Round.

Обратите внимание, что TexCoord двумерная карта, поэтому это действие нужно повторить на каждый канал. Тем более, что Round работает только с одномерными значениями.

После округлений каждого канала нужно обратно собрать их в одну двумерную карту. Это можно сделать через Append блок, который добавляет к A новый канал со значением B.

Поэтому график будет подобного вида:

Округление TexCoord

Разбитие Float2

Вместо того, что бы доставать каналы через Component Mask (На скриншоте Mask(R)и(G)), можно разбить карту через BreakOutFloat2Components.

Материал пикселизации

Можно запустить и посмотреть, что получилось. Если все сделано правильно, то в итоге будет подобное:

Пикселизация на разрешение 10 н 10

Однако можно заметить, что у нас вышло слишком малое разрешение.. Это все из-за того, что мы округлили до десятых чисел. То есть наш TexCoord разделился на 10 частей: 0.1, 0.2 и так до 1. Более того, пиксели не квадратные, так как соотношение экрана у нас не ровное, а пикселей по Y и X одинаковое количество.

Что бы плотность была выше, можно просто округлить не до десятых, а до 100х, скажем. В нашем округлении нужно значение изменить на 100.

Плотность пикселей 100 на 100

Однако меня этот результат тоже не устаивает. Я хочу устанавливать размер пикселей, а не делить экран на определенное количество.

Давайте пока на словах разберем, какая же должна быть логика, на примере размера квадратиков в 10 на 10 пикселей.

Предположим, что наш экран 1920 на 1080. Что бы получить пиксели 10 на 10, логично поставить на красный канал значения 192, а на зеленый, 108, так как именно столько пикселей у нас будет на X и Y. Тогда наши пиксели будут квадратные и размером 10 на 10. Вот так:

Ровные пиксели для разрешения 1920 на 1080

Но повторюсь, мы не знаем, какое разрешение будет у игрока. Для этого мы посмотрим, как мы получили эти 192 и 108.

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

  1. Получаем значение текущего разрешения через Screen Resolution.
  2. Делим на желаемый размер больших пикселей.
  3. Вытаскиваем значения по X и Y в отдельные составляющие.
  4. Результаты присоединяем в соответствующий канал округления.

Адаптивная пикселизация под разрешение

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

Вот и все. Можете даже динамически менять значение размера пикселей через блупринты, создавая постепенную пикселизацию, или же настройки размера пикселей.

Оригинальное изображение
Пиксельное изображение

Вы можете использовать эту схему и для пикселизации текстур в материалах. А так же для пикселизации заднего плана за прозрачными материалами.

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

Если ты уже прошерстил первые 2–3 страницы гугла и ничего не нашёл, удостоверься, что ты правильно гуглишь:

  • твои запросы должны быть на английском с припиской в конце unreal engine (например, set start level unreal engine)
  • постарайся как можно сильнее обобщить запрос, например, не “как перекрасить кубик когда у меня игрок нажмет кнопку”, а “change material parameter on button event unreal engine”.

Посоветуйте с чего начать. Курсы, ссылки, вот это все.


Освещение постоянно меняется, то светлеет, то темнеет.

Так работает автоэкспозиция. Отключить её совсем или настроить можно через постпроцесс. Для отключения выставьте минимальное и максимальное значение одинаковым в разделе экспозиции в настройках постпроцесса. Убедитесь, что вы попадаете в объем постпроцесса, либо что он бесконечный (галочка Unbound). Что-то еще узнать по этой теме можно прогуглив “auto exposure unreal engine”.


Объекты исчезают при отдалении камеры.

  • Проверяем лоды: нужно проверить как выглядит ассет в разных лодах, возможно в одном из них его не видно вовсе. Так же у лодов есть возможность скрывать объект в зависимости от настроек графики (пробить этот вариант можно выставив все пункты скалабилити на эпик).
  • Проверяем дистанцию прорисовки у объектов (кулинг): у одних ассетов на уровне (например, статик или скелетал меши) это настройка draw distance, у других (например, у фолиажа) это cull distance
  • Проверяем материал: ищем в материале все ноды, которые так или иначе могут быть связанны с дистанцией или глубиной пикселей, например функция CameraDepthFade или Distance_Blend или просто Camera Distance в сочетании с Absolute World Position может скрывать объект на определенной дистанции от камеры
  • Баунд боксы: проверяем достаточен ли размер баунд бокса объекта для отображения, можно попробовать сильно увеличить баунд бокс для проверки.


Импортирую меш, а он раздельными кусками в движке. Как импортировать одним мешем?

Самым лучшим решением будет объединить меш в любом 3D пакете, но, если такой возможности нет, то в окне импорта нужно поставить галочку Combine Meshes.


Импортирую меш, а пивот не там, где в 3д пакете.

Сбросьте позицию модели в 0.0.0. в 3D редакторе, чтобы ось координат и пивот совпадали, тогда он импортируется корректно.


Можно ли поменять пивот в движке?

Конечно проще и лучше сделать это изначально в 3D редакторе, но если вам этот способ не подходит, то можно делать так или так.

А что насчет целых сцен? Как импортировать разом сцену, сохраняя и пивоты объектов и позиции?

Импорт целых сцен разом — кейс нетривиальный. С дефолтными настройками импорта у вас сохранятся позиции на сцене, но пивотом у всех объектов станет 0.0.0 сцены.


Если при импорте убрать галочку Transform Vertex to Absolut, то у каждого объекта будут сохранены пивоты, но позиции на сцене не сохранятся.


Чтобы сохранить и позиции и пивоты объектов, можно импортировать сцену через File — Import Into Level. Пивоты объектов сохранятся, а сами объекты будут расставлены на уровне как в 3D пакете. Так же там есть опция импортировать сразу как отдельную сцену в блюпринт акторе.


Или же можно воспользоваться плагинами для переноса из вашего 3D пакета в анрил. Такое, например, позволяет делать плагин Datasmith.


Unreal Engine завис на первом открытии проекта. Стоит на 45% (95%, 39%, 50% _подставьте свою цифру_ ). Это нормально? Сколько ждать то?

Да, в большинстве случаев это нормально. При первом запуске проекта происходит компиляция шейдеров. Вы можете проверить это в диспетчере задач — процессы Shader compiler. Скорость компиляции зависит напрямую от производительности вашего процессора. В зависимости от его мощности и сложности проекта, компиляция может длиться как 10 минут, так и полтора-два часа.

Особенно нетерпеливые или потерявшие надежду могу попробовать открыть этот проект в другой версии движка.


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

Как правильно перенести ассет в другой проект? Как передать ассет другому человеку? Поломались ассеты при переносе. Пути к текстурам потеряны, материалы не материалы, ничего не работает. Ааааа.

Чтобы переместить ассет в другой проект, ПКМ по ассету в контент браузере — Asset Actions — Migrate. В окне выбора места указать папку Content второго проекта, в который нужно передать ассет. Важно указать именно папку Content, а не какую-либо другую. Иначе все ссылки на пути к используемым ассетам будут неверными и в новом проекте ассет будет отображаться некорректно.


Вы так же можете передавать таким образом ассеты другому человеку. Делайте мигрейт в любую папку на вашем ПК и передаете человеку эту папку. Затем он просто вставляет содержимое этой папки в папку Content своего проекта и все.

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


Если вы сделали все правильно, но в вашем втором проекте ассеты не отображаются (видны только папки), значит вы пытаетесь перенести ассеты из старшей версии движка в младшую. Смотри пункт 11.

Можно ли как-то вытащить ассеты в другой движок или 3D пакет?

Да, для некоторых ассетов это возможно, например, для моделей или текстур. В контент браузере ПКМ по ассету — Asset Actions — Export. Модели экспортнутся в формате fbx, а текстуры в tga.


Как перенести проект из 4.26 в 4.25 (из любой другой старшей версии в младшую)?

Вообще анрил не поддерживает обратную совместимость, поэтому файлы из более поздних версий просто не будут видны в более ранних.

Но можно попробовать перенести вручную (ноды блюпринтов и материалов переносятся через Ctrl+C и Cntrl+V, меши и текстуры — через ПКМ Asset Actions — Export и импортируются заново).

Ассеты из маркетплейса забивают диск С, хотя я добавляю их в проекты, которые лежат в других местах.

Перед тем как добавить ассеты в выбранный вами проект, они скачиваются в Vault Cache из которого потом копируются в указанные вами проекты.

По дефолту он расположен на диске С. Изменить его расположение можно через лаунчер. Epic Games Launcher — Settings — Vault Cache Location.


Я запек свет и что-то пошло не так.

Перед тем, как печь свет, убедитесь, что вы посмотрели хотя бы несколько базовых уроков по запеканию и понимаете, как это работает. Понимаете, что такое лайтмасс и как выглядит хорошая развертка для лайтмапы. Для старта подойдут вот эти базовые уроки, например: Статичный свет (Lightmass) в UE и UV развертка для Lightmass.
Если хочется больше — Lighting Techniques & Guides.

Если вы уверены, что хорошо понимаете что такое запекание, можно поискать решение своей проблемы вот тут (оригинал), (а тут перевод на русский) или вот тут в офф доках.

После запекания объект\объекты становятся черными или очень странно освещенными.

Скорее всего дело в плохой развертке для лайтмапы (либо и вовсе её отсутствии). Проверьте что у вас всё хорошо с разверткой под лайтмапу (объекты на развертке не выходят за границы, не пересекаются, достаточного размера) и что именно её индекс выставлен для лайтмапы. А еще желательно глянуть туторы из пункта 13, прежде чем печь свет.


После запекания тень пиксельная.

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


Делаю лэндскейп и на нём появились квадраты.

После запекания освещения они исчезнут.


Объекты с эмиссив материалом не освещают уровень.

Свечение от эмиссива не дает динамического света. Чтобы свет от объектов с эмиссив материалами учитывался в освещении нужно поставить соответствующие галочки и запечь свет. Тогда он появится в запеченном освещении. Какие галочки ставить — в первой части видео. Если же вам нужен не только статический свет от эмиссив материала, но и динамический, то этого можно добиться только используя RTX технологии в проекте (ну либо фейковать источником света как во второй части видео из этого пункта).

Могу ли я использовать RTX\GPU Lightmass, если у меня не 20xx\30xx серия карт?

Да, поддерживаются не только последние серии карт. С меньшей производительностью, но можно использовать даже GTX начиная с 1060 на 6гб. Весь список (кроме 30ой серии) на картинке:


Накладываю материал на разные меши, и он выглядит\масштабируется на них по-разному. Как увеличить\уменьшить масштаб текстуры или сдвинуть текстуру? Как использовать текстуру без развертки\с плохой разверткой проекцией как в моем любимом 3D пакете N?

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


Менять масштаб текстуры можно умножением TexCoord на скаляр или вектор. Сдвигать текстуру добавлением или вычитанием из TexCoord. Вот здесь все наглядно показано (ссылка с таймкодом).


Точно такие же проекции как в своем 3д пакете вы вряд ли найдете, но помимо наложения по UV, можно накладывать текстуру и без нее. По ссылке с таймкодом несколько вариантов проекций текстур без UV (с 17 минуты и по 25ую). Скорее всего вам подойдет трипланар, примерной реализацией которого является нода WorldAlignedTexture. Чтобы текстура держалась на объекте, следует учитывать локальные координаты объекта.


Кстати, въехать в материалы вам поможет бесплатный мини-курс с офф сайта Materials Master Learning.

Прозрачный материал не блюрится DOFом камеры.

В материале нужно убрать галочку Render after DOF.


Как сделать, чтобы коллизия у меша была не простыми примитивами, а полностью повторяла форму меша?

В ассете меша в настройках коллизии выставить Use Complex Collision As Simple. Замечу, что это будет несколько дороже для вычислений и в физических взаимодействиях меши с комплексной коллизией могут выступать только в роли статики.


Частицы пропадают во время игры или записи синематика в секвенсоре или просто, когда начинаешь отворачиваться от эмиттера.

В 90% случаев дело в баунд боксах частиц. Если у вас GPU частицы им нужно выставить фиксированный баунд бокс и увеличить его (иногда существенно увеличить). У CPU частиц размеры баундбокса считаются автоматически, но и им иногда приходится выставлять большие фиксированные баунд боксы, особенно во время записи секвенсором или при больших масштабах эффекта. В каскаде выставляется так:


В ниагаре здесь:


Как въехать в системы частиц?

Сейчас в Unreal Engine две системы частиц: старая Cascade (помечена как Legacy в UE5) и новая Niagara. Базовые уроки по Cascade: раз и два
Базовые уроки по Niagara: раз и два

Кстати, здесь есть статейка о том, чего посмотреть, если хочется в vfx на движке.

Хочу отрендерить видео секвенсором, но на рендере камера не моя, статичная съемка непонятно откуда.

  • В первую очередь убедитесь, что ваша камера присутствует в Camera Cuts вашей секвенции.


  • Затем удостовертесь в том, что на уровне у левел сиквенса стоит галочка авто плей.


  • Ну и на всякий случай в World Settings можно выставить дефолтный гейммод, чтобы секвенсор точно ничего не перехваттывало.


Когда Unreal Engine 5?

С 26 мая 2021 доступна версия в раннем доступе. Вы можете загрузить её в лаунчере или на гитхабе. Версия пока сыроватая и сами эпики указывают, что она пока не для продакшена. Но в качестве изучения вполне подойдет. Из раннего доступа Unreal Engine V должен выйти в 2022 году.

Что же изучать сейчас? Unreal Engine 4 (4.26) или Unreal Engine 5?

По факту сильной разницы нету. 98% того, что вы можете узнать про UE4 точно так же работает и в UE5. Материалы, левелдизайн, блюпринты, частицы — все работает одинаково. Какие-то существенные различия есть только в физике, свете и новых технологиях, которые появились только в пятёрке. Поэтому достаточно начать с любых уроков по четвёртой версии движка и, когда более-менее освоитесь в ней, начинать изучать новые технологии пятой, которых в UE4 нет.

Изучение Unreal Engine, документация на русском языке

Настройка системы папок

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

Мы создали следующие папки для данного урока.

  1. Landscape
  2. Materials
  3. Resources
  4. Textures

Должно получится что-то типа этого.


Перенос текстур

Теперь, когда наши папки на месте, давайте перенесем некоторые текстуры из проекта Landscape Content Example, чтоб у нас было, с чем работать.

Когда вы переносите контент между проектами, у вас могут появляться ненужные папки. Чтоб избежать этого, выберете нужные текстуры внутри Content Browser и перетащите их из существующей локации в желаемую папку.

Вы можете найти текстуры в следующей папке, которая находится внутри проекта Landscapes Content example.

/Game/ExampleContent/Landscapes/Textures/

Из проекта Landscape Content Example мы будем переносить следующие текстуры.

После переноса текстур, убедитесь в том, что они появились в папке Textures, которую мы создали ранее. Теперь давайте создадим материалы для ландшафта.

Создание материалов ландшафта

  1. Откройте папку Materials.
  2. Выполните правый клик в ContentBrowser и выберете Material из списка BasicAssets.
  3. Назовите как-нибудь созданный Материал, чтоб его было легко найти, например, Landscape_Material.

Теперь у вас должно получиться нечто такое:


Теперь, когда у нас создан новый Landscape Material, откроем Материал, дважды кликнув по нему внутри Content Browser. Теперь вы должны увидеть нечто такое:


Теперь, прежде чем мы начнем наслаивать узлы в Material Editor, мы должны убедиться в том, что установили этот материал для его дальнейшего использования в Ландшафте. Чтоб сделать это, открываем секцию Usage в панели Details и ставим галочку напротив Used with Landscape . Таким образом мы сможем использовать Материал в Ландшафте.



Самый простой способ найти узлы, специфичные для Ландшафта – это использовать поиск узлов в боксе Materials Palette, вбив слово Landscape, как ключевое


Следующие Material-узлы, которые мы собираемся наслоить, это узлы текстур для Base Color настила и карт Normal. Для снега мы будем использовать Vector Parameter (V + левый клик), который использует белый цвет. Чтоб убедиться в том, что не используется Metallicinformation,используйте Constant (1 + левый клик) в значении 0 с подключением к Metallicinput. И наконец, для Roughness, мы установили Scalar Parameter (S + левый клик), и это значение мы сможем твикнуть с помощью Material Instance позже. Наконец, давайте убедимся, что мы прицепили каждый LandscapeCoord к UV каждого Texture Sample. У вас должно получиться нечто такое:


Чтоб добавить узлы Texture Sample для различных текстур, сначала выберете нужную текстуру в Content Browser, затем нажмите T + левый клик в графе Material Editor, чтоб создать узел.

Чтоб узнать больше об этих привязанных клавишах, откройте окно Edit > Editor Preferences > Keyboard Shortcuts и выберете Material Editor – секция Spawn Nodes.

Номер Название текстуры
1 T_ForestGround_D
2 T_Ground_Grass_D
3 T_ForestGround_N
4 T_Ground_Grass_N
5 T_Noise_N

После того, как мы наслоили Material-узлы, а LandscapeCoords были связаны с текстурами UV, самое время добавить узел Landscape Layer Blend. Этот узел используется, чтоб смешать все текстуры, которые используются для ландшафта, таким образом, что их можно будет раскрасить на ландшафте по отдельности, используя инструменты Landscape Painting. Таблица ниже показывает, какие текстуры связаны с названием уровня и, какие режимы смешивания они используют.

Когда вы первый раз закладываете узел Landscape Layer Blend, он будет пустым, как показано на картинке с номером один. Чтоб добавить к нему Layers, вам сначала нужно выбрать узел в Material Graph, а затем в панели Details, кликните на иконку Plus, которая находится между словом Elements и иконкой Урна. Эта иконка отмечена желтым на картинка с номером 2.



Режим смешивания уровня Base Color

Текстура Название уровня Тип смешивания Вес привью
T_ForestGround_D Soil LB Weight Blend 1.0
T_Ground_Grass_D Grass LB Height Blend 0.0
Snow as a Vector 3 Snow LB Height Blend 0.0


Режим смешивания уровня Normal

Текстура Название уровня Режим смешивания Вес привью
T_ForestGround_N Soil LB Weight Blend 1.0
T_Ground_Grass_N Grass LB Height Blend 0.0
T_Noise_N Snow LB Weight Blend 0.0


После закладки узлов Layer Blend, самое время связать их с Texture-картами. После чего у вас должно получиться нечто такое:


Связи материалов были раскрашены в Photoshop, чтоб вам было проще понять, как все это соединяется. В настоящее время Unreal Engine 4 не дает возможности изменять цвета линий, соединяющих узлы материалов.

Alexander Dracott поделился некоторыми своими личными советами и фишками, которые сам довольно часто использует.

Импорт текстур в Unreal 4


Вы можете импортировать текстуры с помощью кнопки «Импорт» в контент браузере. Unreal 4 поддерживает большое разнообразие форматов текстур: от .tgas и .jpg до .psds и .jpg. Один важный совет — убедитесь, что normal maps сжаты как TC Normalmap, чтобы избежать визуальных ошибок в движке. Также имейте в виду, если разрешение вашей текстуры не кратно двум (например 1024х349), они не запустятся или будут лишены свойств MipMap.

Сохранение памяти: текстуры Channel-pack


Одна из особенностей Unreal — это большой объем контроля, который вы получаете, создавая свои собственные материалы. Когда вы создаете несколько черно-белых масок для текстур, таких как roughness или transmission, вы можете сэкономить память, спрятав каждую маску в отдельный канал R,G или B, а затем получив доступ к каждому каналу этой текстуры отдельно.

Физически корректный рендеринг


С появлением новых возможностей рендеринга в движках, таких как Unreal 4, широкую популярность получил физически корректный рендеринг.

Изучение того, как точно должны выглядеть физические свойства материалов с масками roughness и metalness, можно сравнить с тем, как игровые движки работали в прошлом поколении. Эти знания помогают сохранить материалы реалистичными в разных условиях освещения.

Повторное использование текстуры


Не накладывайте ненужных текстур


Иногда определенные текстуры не нужны. Для 100% неметаллических материалов, таких как древесина или грязь, текстура металла может быть заменена в Material Editor простой константой с плавающей точкой и значением 0. Этот же принцип можно применить для нескольких версий одного и того же материала. Вам не нужны отдельные normal maps, например, для трех разновидностей кирпича, отличающихся по цвету. Можно использовать одну normal map для всех.

Создание набора основных материалов


Повторное использование материала


Отличной особенностью базового материала является его способность изменения в режиме реального времени. Вы можете использовать эти изменения для быстрого тестирования множества различных значений без перекомпиляции материала. Всякий раз, когда я использую сложный материал, у меня всегда наготове тестовый экземпляр. Мне он необходим для блокировки более реалистичных базовых значений конечного материала.

Комментарии и организация материалов

Для сложных материалов Unreal 4 предлагает очень полезные организационные инструменты. Выбор группы нод и нажатие C помещает эти ноды в комментарий, который затем можно перемещать как группу и кодировку цвета. Комментарии (и отдельные ноды) могут содержать базовые текстовые пояснения.

Функции материалов


Функции материалов можно вызвать несколько раз для выполнения определенного набора инструкций. Они создаются вне материала в Content Browser, но затем могут быть вызваны, чтобы упростить их. Они могут содержать свой собственный inputs и могут стать отличным способом сэкономить время, когда нужно вызвать несколько повторяющихся операций.

Материалы листьев


Листва может быть одной из самых сложных вещей, т.к. совсем не просто обеспечить ее правильное отображение в любом игровом движке. В UE4 версии 4.18 существует Foliage Shading Model, которая упрощает эту задачу. Я настоятельно вам ее рекомендую, поскольку она поддерживает передачу подповерхностного слоя, что в большинстве случаев дает преимущества. Кроме того, советую добавить sky light к вашей сцене, чтобы помочь сбалансировать некоторые более темные области сетки листвы, которые могут быть в тени.

Vertex colour


Доступ к цветам Vertex в материалах — одна из моих любимых функций в Unreal 4. Они могут быть невероятно мощными при творческом подходе. От ambient occlusion до masking out wind и world offset для листвы — их универсальность колоссальна. Они особенно полезны при смешивании текстур. Vertex colors можно импортировать из внешнего программного обеспечения 3D или импортировать и нарисовать в редакторе.

Детализированные diffuse и normal


Так как вы можете настроить параметры текстурирования ультрафиолетового излучения, вы можете увеличить детали материала путем смешивания в дополнительном наборе текстур. Обычно это diffuse или normal maps, которые затем поочередно накладываются поверх базовых. Вы можете использовать любой удобный для вас метод, например, такой как Overlay Blend Function, в то время как подробные normal maps могут быть применены путем добавления красного и зеленого каналов к основанию.

Смешивание текстур в материалах


Хотите объединить текстуры в material editor, но знакомы только с режимами смешивания Photoshop? Epic превзошел все ваши ожидания. Наряду со многими полезными функциями материалов он включает в себя большинство режимов смешивания, с которыми знакомы все пользователи Photoshop. От Overlay до Linear Dodge их можно найти в окне палитры внутри Material Editor. Они могут быть особенно полезными для добавления деталей к вашим материалам.

Знание типов источников освещения


Unreal предлагает четыре различных типа света для использования в окружающей среде: Directional, Point, Spot, и Sky light. Свет Directional отлично подходит для наружных зон или любого необычного источника света. Свет Point является всенаправленным, а Spot похож на него, но имеет ограничения, определенные конусом. Sky light может использоваться для добавления света в окружающую среду, захватывая отдаленные части вашей карты. Поддерживаются также пользовательские Cubemaps.

Добавление тумана к вашей сцене


Существует стандартный способ создания всем нам известного обычного плотного тумана. Unreal 4 же предлагает два других способа добавить туман к вашей сцене. Atmospheric Fog реагирует на направленный угол освещения и интенсивность. Он может создать туман, основанный на реальном рассеянном атмосферном свете. Height Fog дает немного больше контроля цвета и позволяет добавить более простой эффект тумана, который становится менее плотным в верхних частях карты и более плотным в нижних частях.

Создание умных световых валов


Световые лучи или « God rays » могут быть мощным визуальным инструментом и создаваться частицами в воздухе, освещенном определенными источниками света. В Unreal 4 они могут быть созданы несколькими способами. Наиболее распространенный способ заключается в том, чтобы позволить им использовать свойства направленного света. Они также могут быть выполнены с использованием геометрии и умных материалов.

Съемки с высоким разрешением


Хотя пользовательские видео разрешения могут быть выведены из Matinee, есть быстрый и простой способ сделать кадры в высоком разрешении прямо из редактора. Нажав на маленькую нисходящую стрелку в левом верхнем углу вашего Viewport, вы можете открыть небольшое раскрывающееся меню. Внизу можно открыть окно High Resolution Screenshot window. Оттуда снимки в высоком разрешении могут быть захвачены и отправлены в папку вашего проекта: project/saved/Screenshots folder.

Корректировка цвета и таблицы поиска

Финальные цвета рендеринга можно настроить на основе художественных предпочтений. Хотя существуют опции для базовых настроек, таких как контраст и оттенок, пользовательская коррекция цвета может быть выполнена с использованием таблиц цветового поиска. Эти таблицы допускают сложное преобразование цвета и могут быть сделаны при помощи базового файла, доступного на сайте Epic Unreal 4 и в Photoshop, или в других программах для настройки изображений.

Редактирование световых переходов и бликов


В играх и 3D стало популярным отображать световые переходы и блики, их можно включить и настроить в UE4, используя специальные зоны постобработки — post-process volumes. Световой поток настраивается практически по всем характеристикам. Размер, цвет, интенсивность и порог можно изменить и даже использовать их для маскировки текстур грязи и имитации грязных линз. Аналогично, вспышки также могут быть включены, а их форма и интенсивность регулируются.

Создание глубины резкости


Unreal 4 поддерживает как резкость по Гауссу, так и настраиваемую. Оба эти параметра существуют в настройках Post Process Volumes. Следует также отметить, что инструменты, которые помогают с размытием тонких объектов перед удаленными, иногда могут создавать проблемы. Нужно проявлять осторожность в применении глубины резкости, например, к листве или другим подобным элементам.

Автоэкспозиция и адаптация глаз


Автоматическое управление экспозицией включено по умолчанию и имитирует настройку глаз на яркие или темные области. Эффект является потрясающим, но может создавать постоянно изменяющиеся визуальные переменные, которые трудно поддерживать внутри. Регулировку диапазона экспозиции можно выполнить в настройках volumes после обработки. Её можно отключить, если установить минимальную яркость, равную максимальной. Смещение экспозиции можно использовать для настройки её базовых параметров.

Световые функции


Одна интересная особенность в Unreal 4 — поддержка материалов с функцией освещения. Эти материалы действуют как маски для света и могут использоваться, чтобы сделать что-либо: от пользовательских цветовых вариаций в свете до облачных теней на земле. Они создаются путем установки функции Material Domain to Light в Material Editor, их можно использовать при spot, point и directional lights.

Сэкономьте время, скопировав и вставив


Еще одна особенность, которую нужно знать об Unreal 4, заключается в том, что любой объект одного уровня может быть скопирован и вставлен непосредственно на другой уровень в рамках одного и того же проекта. Он будет отображаться с теми же свойствами и в том же месте.

А самое крутое — это то, что все, что скопировано из Unreal, можно вставить в текстовый документ. Затем этот текст можно скопировать и повторно вставить на другой уровень Unreal 4.

Режим просмотра и визуализация рендер пасов


Знание того, что составляет ваш образ, является неотъемлемой частью работы в любом 3D-движке и работает в отложенном рендерере, например, UE4 позволяет использовать некоторые полезные режимы просмотра. Нажатие Alt и 1-8 переключается между различными режимами просмотра, такими как Unlit или lighting only, но если вы нажмете кнопку View Mode в окне Viewport, вы можете просмотреть отдельные рендер пасы. Это может быть полезно для просмотра широких диапазонов материалов, таких как roughness.

Рекомендации по производительности


Хотя Unreal невероятно мощный, не каждая рабочая станция создается одинаково. Если вы столкнулись с проблемами производительности движка, первое, что нужно включить, — это параметры масштабирования движка в «Setting» на панели Editor Toolbar. Отключение некоторых параметров, таких как сглаживание, может действительно ускорить работу. Другой трюк состоит в том, чтобы группировать множество объектов в world outliner. Затем вы можете переключать их видимость, чтобы улучшить производительность.

514e3f65a2bc46a07c43690c16f981da.jpg

в анриале этот муар не статичный в шевелится во всю, каким образом можно его побороть? или только увеличивать текстуру?

Вы бы почитали, что это такое и откуда берётся. Увеличивая текстуру лучше не будет, так идёт antialias, т.е. так работает сглаживание на мелких объектах. Нужно наоборот сделать текстуру меньше. Да и смотрите вы сейчас просто во вьюпорт, а не сам проект.

спасибо за совет сейчас почитаю. это скрины из проэкта при нажатии плей. то есть при компиляции будет тоже самое я так понимаю. Только начинаю осваивать анриал.

2b84e5e0a71d043821b9a31f57f48363.jpg

инфы не густо на этот счет)

Сделайте узор не таким мелким и расширение текстуры 1024х1024 вполне хватит. Nightt:
нарушение правил сайта. использование чужих моделей. недобросовестный исполнитель
Действует до:
01.12.2021 00:00:00 + ко всему используй только квадратные текстуры кратные двойке. (512,1024,2048 итд)

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

да, я предполагал что в этом может быть проблема, но пробовал ее решить методом тайлинга соотношения сторон текстуры в самом движке (надеюсь понятно обьяснил, например тайл не 1:1 а 1:1,33333 в моем случае) Думаю завтра проверю вариант с правкой самой текстуры в квадрат)

803d713e083be8d7c6b2421b9f869f5b.PNG

в общем сделал все, закинул но все равно небольшой муарчик остался. Странно, текстура 2048х2048, с картой нормалей. Близко выглядит нормально но уже при небольшом отдалении начинается мелкий муар. Тут его конечно не видно на в анриале на мониторе дребезжит довольно сильно.

Читайте также: