Инструмент Pivot Painter Tool 2.0 в Unreal Engine 4

0
4
Инструмент Pivot Painter Tool 2.0 UE4

Pivot Painter 2.0 MAXScript сохраняет сводную и вращательную информацию в текстурах модели. Эти текстуры затем могут быть указаны внутри шейдерной системы Unreal для создания интерактивных эффектов.

Движение, показанное в примере видео, обрабатывается процедурой в реальном времени с использованием вершинных шейдеров. Функция материала Pivot Painter формирует информацию о наследовании движения для каждого из листьев и ветвей модели. Каждый элемент анимируется с использованием отдельной точки поворота, вектора направления, размера границ и унаследованного движения. Результаты являются текучими и реалистичными.

Создание этих типов материалов стало намного проще с добавлением Функций Материала Pivot Painter 2. Пример контента, как это показано и в Примерах Контента, также помогает, показывая нам, как можно создать анимацию, как показано выше. Получение точек поворота суб-объектов – это просто вопрос обработки меши в 3D Studio Max с помощью скрипта Pivot Painter, импорта файлов и создания материала с использованием доступных функций Pivot Painter. Функция материала движения листвы обеспечивает поддержку иерархии до 4 уровней и 30 000 элементов модели.

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

Если вы хотите изучить некоторые из примеров, показанных на этой странице, вы можете загрузить проект Content Examples из запуска Epic Games Launcher и открыть карту PivotPainter2.карта PivotPainter2 UE4

 

Что нового в Pivot Painter 2.0

С выпуском Pivot Painter 2.0 вы заметите, что были внесены некоторые улучшения и изменения в MAXScript. Хотя некоторые параметры были удалены (Hierarchy Painter) или переименованы (из Per Object Painter в Vertex Alpha Painter), это улучшает общий рабочий процесс, чтобы упростить процесс создания этих типов подробных активов. Все это помогает расширять возможности Pivot Painter 2, чтобы получить еще лучшие результаты, чем раньше, в конечном счете предоставляя вам самый широкий спектр возможностей при разработке собственного контента! Читайте ниже, чтобы прочитать о дополнительных улучшениях, которые были добавлены.

Совершенствования рабочего процесса

Шаг риггинга пост-обработки теперь выполняется с помощью стандартного инструмента Link 3DS Max. Просто смоделируйте свое дерево как отдельные логические элементы, такие как листья и ветки. Убедитесь, что их оси идеально расположены и ориентированы (ось X опускается по длине объекта), а затем соединяют их вместе, как в традиционной установке.

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

После того, как ваше дерево смоделировано, просто выберите любой элемент в дереве и в разделе «Render Options» нажмите кнопку Process The Selected Object Hierarchy. Скрипт автоматически пересечет иерархию выбранного элемента, чтобы найти свой корень, а затем вернуться к цепочке, чтобы собирать и обрабатывать все ее дочерние элементы, и, наконец, рендеринг текстур с использованием любых данных, выбранных из доступных параметров рендеринга.

Process Selected Object Hierarchy UE4Этот метод поддерживает как отдельные, так и связанные элементы одновременно. В случае комбинированных моделей травы и дерева вы должны выбрать каждое лезвие листика сразу, а затем элемент из дерева, прежде чем нажимать кнопку Process Selected Object Hierarchy.

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

Теперь у вас есть контроль над сетом UV, позволяющим объединить эту систему с другими, такими как инструменты Vertex Animation. Кроме того, настройки, выбранные в Pivot Painter 2.0, отмечены в окончательном имени текстуры вывода как полезное напоминание.

Соглашение об автоматическом именовании выглядит следующим образом:

[MeshName]_rgb_[Current Texture RGB Choice]_a_[Alpha Choice]_[UV Channel]

 

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

ExampleMesh_rgb_PivotPos_a_ParentIndex_UV_2

 

Возможность расширения

Код обработки и рендеринга был полностью абстрагирован, что привело к минимальным усилиям, необходимым для добавления новых вариантов рендеринга в будущем.

Новые параметры рендеринга

В рамках усовершенствований с MAXScript существует новый алгоритм смещения битов, используемый за пределами сцены, в котором хранятся целые числа как данные с плавающей запятой. Это позволяет увеличить глубину иерархии и максимальное количество объектов от 3,000 до 30,000, что имеет жизненно важное значение для представления сложной листвы.

Этот конкретный древовидный актив содержит 14,431 суб-модель.

  • 16-бит RGB:
    • Расположение Pivot Point (точки поворота)
    • Первоначальная Позиция
    • Происхождение
  • 8-бит RGB:
    • Базовые Векторы Объекта (по одному вектору за раз)
  • 16-бит Alpha:
    • Родительский индекс (Int as float)
    • Количество шагов от корня
    • Случайное значение 0 – 1 для элемента
    • Диаметр ограничительной рамки
    • Порядок выбора (Int as float)
    • Нормализованное положение 0-1 Иерархии
    • Объект X, Y, Z Длина границ от точки поворота
    • Родительский индекс (Float – до 2048)
  • 8-бит Alpha:
    • Нормализованная позиция 0-1 в Иерархии
    • Случайное значение 0-1 для элемента
    • Объект X, Y, Z Длина границ (до 2048)

Восстанавливающие ограничивающие рамки

При использовании 3DS Max ограничивающие поля модели расширяются по мере смещения геометрии суб-объекта во время процесса моделирования. Ограничительная рамка объекта больше не ориентируется или выравнивается по меше во время этого процесса. То же самое может произойти, если вы измените преобразование поворота меши. Чтобы противодействовать этому, раздел Recreate Bounding Boxes заменит ограничивающий прямоугольник выбранных мешей на тот, который правильно выровнен и ориентирован на точку поворота меши, что очень полезно для скриптов для других функций сбора данных (Vertex Alpha Painter and Bound information).

Слева преобразование поворота модели было изменено, но ограничивающий прямоугольник не выровнен и не ориентирован должным образом. После использования кнопки Process Selected Objects в разделе Recreate Bounding Boxes крайняя рамка самой правой модели была правильно выровнена и ориентирована.

Объединение выбранных моделей

В стандартах Merge Selected Model используются средние значения нормалей на нескольких моделях, где вершины с открытым фронтом оказываются поверх друг друга. Эта опция позволит исправить обычные проблемы со швом, возникающие, когда одна модель разбита на несколько частей, специально предназначенных для использования с Pivot Painter.

кнопка Merge Mesh Normals UE4Нажмите кнопку Merge Mesh Normals, чтобы настроить нормаль любых открытых граней, которые встречаются.
До:Merge Mesh Normals1 UE4После:Merge Mesh Normals2 UE4
Перед тем, как Нормали сливаются, они выравниваются с каждой гранью. После того, как они объединились, они более точно выровнены, чтобы их края сливались более естественно.

Информация о версии и скрипте 3DS Max

Этот инструмент был протестирован с 3DS Max 2015 и с 2016Другие версии 3DS Max не были специально протестированы, поэтому имейте в виду, что при использовании этих версий 3DS Max вы можете столкнуться с некоторыми проблемами.

Чтобы установить MAXScript, просто перетащите его из своего местоположения в [UE4Directory]/Engine/Extras/3dsMaxScripts/PivotPainter2.ms прямо в окно просмотра 3DS Max, и скрипт сам запустится.

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

Настройка максимального уровня 3DS

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

  1. Откройте 3DS Max и на главной панели инструментов выберите Customize > Unit Setup.
  2. Затем нажмите кнопку System Unit Setup и в разделе System Unit Scale. Используйте раскрывающееся меню, изменяя настройки от дюймов до сантиметров. Затем нажмите кнопку ОК.
  3. Наконец, измените Display Unit Scale на Generic Units, а затем нажмите кнопку OK.

Импорт активов

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

Статик Меши

В окне Import Options обязательно снимите флажок Skeletal Mesh и включите опцию Combined Meshes (объединить меши).

Static Mesh Import Options (Параметры импорта Статик Меши)
Import Options UE4
  • Skeletal Mesh: не установлено
  • Combine Meshes: включено
[OPTIONAL] Static Mesh Build Settings (Настройки построения Статик Меши)
Настройки построения Статик Меши UE4
  • Если вы включили поля Mesh Distance Fields для своего проекта, вы можете включить Generate Distance Field as if Two-Sided из настроек сборки редактора статик меши. В зависимости от контента вы можете вообще не использовать дистанционные поля. Если это так, вы должны установить Distance Field Resolution Scale до 0 или с панели Level Details, вы можете снять флажок Affect Distance Field Lighting.

 

  • Для некоторого контента вам может потребоваться включить Full Precision UVs, если вы заметите, что листья отклоняются от их местоположения.
При обновлении рекомендуется использовать “full” (полный) реимпорт (перезаписывать предыдущую модель), вместо использования параметра Reimport. Это самый безопасный метод предотвращения любых существенных проблем.

Текстуры

После импорта текстур, созданных с помощью Pivot Painter 2.0, обязательно откройте объект Texture и установите следующее:

8-битные настройки текстуры BMP
8-битные настройки текстуры BMP UE4
  • Настройки Mip Gen: NoMipMaps
  • Compression Settings (Настройки сжатия)VectorDisplacementMap (RGBA8)
  • sRGB: Не установлено
  • Filter: Nearest
16-битные настройки текстуры EXR
16-битные настройки текстуры BMP UE4
  • Mip Gen Settings: NoMipMaps
  • Compression Settings: HDR (RGB, no sRGB)
  • sRGB:  Не установлено
  • Filter: Nearest

Написание Шейдеров

Все текстуры, полученные от Pivot Painter, предоставляют нам инструменты для создания простых математических представлений суб-объекта наших деревьев (ветвей и листьев). С этой информацией мы можем приступить к приближению реакции каждого суб-актива на источник ветра, что позволяет нам создавать очень детализированные иерархии элементов для создания натуралистического движения.

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


<span class="pln">ms_PivotPainter2_</span><span class="pun">*</span>

Материнская функция PivotPainter2FolaigeShader, как она есть, может работать как полезный материал сама по себе, если она соответствует вашим потребностям, или она может выступать в качестве лесов для вашей собственной версии лиственного шейдера. Дополнительную информацию о функциях материала, доступных для Pivot Painter, можно найти на странице справочной информации о Функциях материала Pivot Painter.

Pivot Painter 2 Foliage Shader

Теперь имплементировать (реализовать) анимацию Pivot Painter 2.0 в Материале довольно просто с большим количеством фоновой работы, уже настроенной для вас! Просто вставьте PivotPainter2FoliageShader в код вашего Материала, прежде чем делать окончательное соединение с входным пином Атрибутов Материала. Вы также захотите отключить Tangent Space Normals на панели Material Details.

Pivot Painter 2 Foliage Shader UE4

Данная Функция Материала предполагает, что вы обработали актив с помощью настроек UV и текстуры Pivot Painter по умолчанию.

Когда вы создадите Экземпляр Материала, у вас будет доступ к имеющимся Wind Settings (настройкам ветра), которые позволят вам управлять иерархией суб-объектов. Чтобы использовать их, вам сначала нужно включить Wind Setting для уровня (уровней), на которые вы хотите повлиять.

настройки ветра UE4Когда Wind Setting включен, доступные параметры для этой глубины иерархии будут видимыми и редактируемыми.

Теперь у вас будет доступ к настройкам Shared Wind Settings, которые позволят вам назначить воспроизводимые текстуры из Pivot Painter.

Shared Wind Settings UE4
  • Position and Index Texture: Назначьте свою воспроизведенную текстуру Pivot Positional в этот слот.
  • X-Vector Аnd X-Extent Texture: назначьте вашу текстуру X-Vector и X-Extent в этот слот.

При назначении правильных текстур теперь вы можете открыть группы Wind Settings и включить нужные функции. Каждая группа Wind Setting управляет мешами на определенной иерархической глубине. В примере дерева параметр Wind 1 будет управлять стволом, следующей группой, ветвями и т.д.

Турбулентность ветра и порывы ветра

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

Используйте текстуру для управления смещениями вектора и силой ветра для разнообразия.

Оптимизации

Полезно понимать, как работает материал при попытке оптимизировать результаты. Функция материала PivotPainter2FoliageShader была разработана в общем виде. Она выполняет один и тот же код реакции ветра 4 раза. Каждый раз, когда используется другой набор параметров, это делается на уровне иерархии, который на один шаг глубже. Вы можете увидеть, как это работает, открыв функцию материала PivotPainter2FoliageShader.

Если вы откроете функцию материала PivotPainter2FolaigeShader, вы найдете эту сеть шейдерных функций для Wind Hierarchy Depths (глубин иерархии ветра), которая открывается при создании Экземпляра Материала.

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

Экземпляры Материалов

Когда все функции шейдера включены, вы можете создать довольно дорогой материал. Шейдер можно оптимизировать, отключив группы параметров ветра (или уровни иерархии дерева), которые не нужно оживлять. Например, вы можете просто включить Wind Setting 4 для самостоятельной анимации листьев модели. Группировка параметров реакции ветра по глубине иерархии означает, что элементы модели должны быть сгруппированы одинаково. Все листья должны быть в «X» (количество) шагах от корневого объекта. Все ветви, которые ведут себя одинаково, должны быть сгруппированы вместе. По этой причине рекомендуется создать ″parent″ (родительский) или ″master″ (основной) экземпляр Материала для таких активов, как деревья, где вы можете легко иметь несколько иерархий.

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

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

Изгиб Нормалей

Еще одна оптимизация для рассмотрения, особенно если вы пишете свой собственный шейдер или планируете отредактировать этот метод, это метод, который мы используем для изгибания нормалей. Функция материала PivotPainter2FoliageShader выполняет фактические вращения на поверхности нормалей, когда пользователь решает обновить нормали в шейдере. Это можно сделать более дешево (с риском артефактов) с использованием пользовательских UVs и BlendAngleCorrectedNormals Material Function.

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

Используя позиционную информацию и иерархическую глубину, вы можете создать свой собственный процедурный рост или анимацию здания, как показано ниже. Вы также можете взглянуть на карту Content Examples (Примеров Контента) PivotPainter2 для примера того, как установить эти типы примеров.

Эти примеры можно найти в проекте Content Examples, который доступен на вкладке Learn в пусковой установке Epic Games. Откройте PivotPainter2.umap, чтобы изучить эти и другие примеры.

Другие Примечания

  • Актер Wind Actor теперь устарел в UE4 и может быть заменен с помощью Material Parameter Collections и Blueprints. Вы можете создать Blueprint, который обновляет коллекцию параметров материала с помощью параметра Float 4 Wind Actor. Позже на данный Material Parameter Collection (Сборник Параметров Материала) можно ссылаться внутри данного материала листвы на месте Wind Actor.

Исправление проблем

Если модели, похоже, плохо анимируются, попробуйте следующие решения:

  • Восстановите активы.
  • Проверьте настройки модели и текстуры.
  • Удостоверьтесь, что в Материалах отсутствуют Tangent Space Normals.
  • Неравномерно масштабированные меши в 3DS Max вернут неправильные значения преобразования и приведут к нарушенным результатам. Если это случилось, попробуйте включить “Reset XForm”. Это всегда безопаснее для неравномерно масштабированных мешей через суб-объекты, чем на уровне объекта. Рекомендуется сделать это, прежде чем вы начнете дублировать, создавать детей и размещать элементы модели.
  • Некоторое искажение меши появляется из-за оптимизации в шейдере. Чтобы правильно рассчитать влияние ветра на ветку, нам нужно было бы рассчитать влияние ветра на ось каждого листа и его вектор перед выполнением каждого вращения меши. Каждая операция вращения и смещения является дорогостоящей, поэтому мы выполняем поворот меши для каждого элемента в своем локальном пространстве (до того, как будут учтены другие вращения). Полученная меш, смещенная от вращения, затем добавляется к другим преобразованиям. Результат будет менее точный, но гораздо дешевле. Иногда уменьшенная точность приводит к тому, что масштаб листвы немного изменяется в зависимости от комбинации смещений. Поэтому, если это произойдет, вы можете попробовать следующее:
    • Уменьшите интенсивность моделирования ветра.
    • Анимируйте меньшее количество иерархических уровней.
    • Поверните меш так, чтобы совпадение происходило реже.