Рендер 3D импостер спрайтов в Unreal Engine 4

0
7
Рендер 3D импостер спрайтов в Unreal Engine 4

Imposters (Импостеры) – это спрайты, которые используют текстуры стиля флипбука, чтобы сохранить представление о Cтатик Меше из всех возможных представлений – или, по крайней мере, количество просмотров, которые вы можете удобно разместить на своем листе текстуры. Как результат – спрайт, который очень хорошо соответствует оригинальной меше с точки зрения материала и освещения; тем не менее, между кадрами будет некоторое смыкание. Это означает, что они не идеальны для всех приложений. Но когда вам нужно отображать LOTS объектов, которые не будут перемещаться медленно и близко вслед за камерой, тогда это может быть очень нужной опцией.

Начальная Настройка

Прежде чем вы сможете создать импостер – спрайт, вам нужно запечь серию импостерных текстур. Для этого установите Render Type на RenderToTexture_LevelBP для Render 3D Imposter Sprites, выберите Capture Settings и настройте параметры render 3D Imposter Sprite.

установить Render To Texture Level BP UE4

СвойствоОписание
Imposter Static MeshЭто Статик Меш, для которой вы хотите создать импостер.
Imposter Material ArrayЭто такой актив, что вы можете указать материалы для каждого индекса для мешей, которые имеют более одного идентификатора материала.

Вам нужно использовать узел Transform, установленный в «Tangent to Local» на вводе карты нормали для материалов в активе материала импостера. Причиной этого является то, что мы хотим представить мировую нормаль так, как если смотреть с того направления, где была бы камера, вместо того, чтобы использовать ту же камеру, только сверху вниз. Вы можете просто использовать значение 0,0,1 преобразованного Tangent-> World, если нет текстуры карты нормали.
Frames around ZЭтот параметр определяет, сколько кадров вокруг оси Z вашего импостера будет храниться. Большие числа приводят к меньшему «складыванию» в конечном результате во время движения, но также либо уменьшают разрешение текстуры, либо требуют использования очень больших размеров текстур.
Mesh ScaleЭто позволяет немного уменьшить меш, если у вас есть проблемы с протеканием краев в конечном материале импостера спрайта. Это необходимо только в редких случаях, когда меш очень близко соответствует границам сферы, заставляя меши приближаться к краю каждой ячейки сетки. Применяйте только при необходимости, чем меньше масштаб, тем больше теряется разрешение.
Aspect Ratio 1 byЭтот параметр позволяет создавать неравномерные текстуры. При значении по умолчанию 1, сетка импостера будет квадратной. Если параметр равен 2, соотношение сторон будет 2: 1; если настройка равна 4, это будет 4: 1 и т.д. Предлагается сохранить соотношение сторон квадрата для «Full 3D Imposters» и только модифицировать его, когда используется режим “Single Rotation Axis”. Примечание: только при вводе названия этого документа я понял, насколько неверно данное имя параметра. Ожидайте более дружелюбное имя для этой установки в ближайшее время.
Imposter EnumЭто выпадающее меню, которое позволяет вам выбирать между двумя различными типами запекания: «Full 3D Imposters» и ось «Single Rotation». Полные 3D импостеры представлены со всех сторон, включая верх и низ. “Single Rotation Axis” вращает только меш вокруг оси Z, которая идеально подходит для удаленного LOD для тех вещей, которые заземлены на горизонте, такие как деревья, большие здания или общие элементы небесного свода. Single Rotation axis (Одиночная ось вращения) позволяет лучше использовать текстурную память, так как не так много нужно хранить.
Single Rotation Axis rotationЭтот параметр является параметром начала вращения, который используется только при выборе опции Single Rotation axis. Это позволяет вам ориентировать меш так, как вы это хотите относительно камеры.

Нормали меши

Материал на меши, из которой вы создаете импостер, потребует нескольких настроек.

  1. Откройте Материал Статик Меши, из которой вы собираетесь создавать импостер.
  2. Выберите узел материала.
  3. Отключить Tangent Space Normal.
  4. Добавьте узел Transform Node в График Материала между вашей картой нормали/ вычислением и входным выводом Нормали на узле Материала.Если у вас нет карты нормали или вычисления нормали, добавьте Vector 3, установленный на значение 0,0,1 (Синий), и используйте лучше это.
  5. На узле Transform Node установите для свойства Source значение Tangent.
  6. На узле Transform Node установите для свойства Destination значение Local.

настройка меши UE4Рендеринг импостеров

После того, как вы настроили свой импостер с нужным количеством кадров, рендеринг импостерных текстур точно такой же, как и исходный шаг “tiling material”.

Выберите желаемые движки буфера под разделом Capture Settings; Убедитесь, что окошко High resolution screenshot открыто, и включена опция Include buffer visualization; Проиграйте игру в Новом Окне, поднимите консоль с помощью клавиши ~ и введите «ke * rendertextures» на консоли и нажмите enter.

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

\YourProject\Saved\Screenshots\Windows\

Базовый цвет UE4 Маска декали UE4

Мировая нормаль UE4Если ваша карта нормали выглядит в основном состоящей из синего цвета и немного в светло – красных / зеленых цветах, то вы, вероятно, пропустили один из шагов, настраивая материал Static Mesh для переключения с нормалей пространства Tangent to Local.

Импорт Импостеров

Поскольку функциональность Screen Screen Shot высокого разрешения в Unreal Engine 4 экспортирует файлы .bmp, вам нужно будет загрузить их в инструмент редактирования изображений и сохранить их как .tga файлы, после чего вы сможете импортировать их, как и любую другую текстуру.

Настройка Normal Map Texture – Текстуры карты нормали

Вам нужно будет изменить несколько свойств в Normal Map Texture:

  1. Откройте карту нормали, дважды щелкнув ее в контент браузере.
  2. Отключите свойство sRGB.
  3. Установите для Compression Settings (параметров сжатия) значение TC_Default.
  4. Сохраните текстуру.

Настройки нормали UE4Создать Материал Импостера

Теперь у вас должна быть серия визуализированных импостерных изображений. Чтобы использовать эти текстуры, вам нужно будет создать материал, который использует материальную функцию ImposterUVs, кликнув и перетащив функцию из Контент браузера на ваш график Imposter Material:

график Imposter Material UE4Узел импостера UE4

Эта функция устанавливает для вашего материала UV, Normals и WorldPositionOffset. Есть несколько параметров, которые необходимо определить для соответствия настройки Imposter:

Вводный пинОписание
Frames X (S)Здесь должно быть количество кадров на оси X для вашего импостера. Например, если вы указали 16 оборотов вокруг Z, то на оси X будет 16 кадров.
Fixed Z (B)Это логическая опция, которая должна быть установлена ​​только на True при использовании импостера с “Single Rotation Axis”. Это делает вычисления намного дешевле.
Frames Y (S)Здесь должно быть количество кадров на оси Y. Для квадратных пропорций это всегда должно соответствовать кадру Y. Если вы ввели соотношение сторон 2: 1, то Y -кадры будут половиной X – кадров.
SpriteWidth (S)Вот как будет широко распространен ваш спрайт.
SpriteHeight (S)Вот как будет выглядеть ваш получившийся спрайт.
Position (V3)По умолчанию установлен на AbsoluteWorldPosition и в большинстве случаев остается нетронутым. Может использоваться, если вы хотите обойти функцию в отображении импостера под нестандартным углом или если вы хотите использовать пользовательские данные для представления местоположений.
VertexShaderZrotation (S)Данная настройка только для отладки. То, что делает эта функция, – это разбить вращение оси Z спрайта на множество незаметных шагов, а не плавно интерполировать по всему диапазону. Это препятствует тому, чтобы склеивание кадров выглядело хуже из-за того, как импостеры были запечены. С гладкой интерполяцией спрайтов, импостер преувеличивает свое вращение при каждом переходе кадра. Опция фиксирует это, когда значение равно 1. Вы можете установить значение 0, чтобы увидеть, как она выглядит отключенной. В основном это заметно сверху меши импостера.
Rotation (S)Приспособительные спрайты могут вращаться вокруг указанной оси. Это позволяет вам случайным образом вращать различные копии одного и того же спрайта импостера в мире, чтобы они не выглядели одинаково.
Rotation Axis (V3)Этот параметр на данный момент отключен. Ось вращения всегда по умолчанию равна 0,0,1 или находится возле оси Z. При попытке поддерживать любую ось вращения возникали некоторые проблемы, но данная поддержка может быть добавлена ​​в будущем.
Normals (V3)Это должна быть ваша текстура карты нормали. Это поворачивает нормаль в соответствии с заданным значением Вращения.
Пины выводаОписание
TransformedNormalsСодержит преобразованную карту нормали, подключается к вводу материала Нормали.
WorldPositionOffsetСодержит WPO для камеры, направленной на спрайт, подключается к вводу World Position Offset.
UVsЭто UV для текстур Imposter. Любые текстуры Imposter, которые вы размещаете в материале, должны иметь этот выход как UVs. Это включает карту нормали, которая затем будет возвращаться в функцию на вводе «Normals».
Phase2UVsЭто экспериментальная функция, которая не была полностью реализована. Это позволяет вести поиск двух или более текстур, которые на одну фазу впереди и/или сзади исчезают/растворяются между ними, чтобы уменьшить склеивание кадров.

Вот как выглядит ваш материал:

Материал импостер UE4Вероятно, вы заметили узел Constant Bias Scale, который принимает вводные данные от текстуры карты нормали. Это необходимо для сбалансирования цветов для нормалей мирового пространства.

Пример: Полные импостеры

Полные импостеры UE4Пример: импостеры Single Rotation Axis (одиночной оси вращения)

импостеры одиночной оси вращения UE4