Импортер Alembic файлов в Unreal Engine 4

0
10
Импортер Alembic файлов UE4
Это экспериментальная функция, которая в настоящее время проходит разработку. Некоторые аспекты могут не работать должным образом или могут измениться в будущих версиях.

Формат файла Alembic (.abc) представляет собой открытую инфраструктуру обмена графическими изображениями, которая переводит сложные, анимированные сцены в не-процедурный, не зависящий от приложения набор запеченных геометрических результатов. Unreal Engine 4 (UE4) позволяет вам импортировать файлы Alembic через Alembic Importer, который дает вам свободу создавать сложные анимации извне, а затем приводить их в UE4 и визуализировать их в режиме реального времени.

Импорт файлов Alembic может быть выполнен аналогично нескольким другим формам Импорта Контента в UE4.

Вы также можете посмотреть Unreal Engine Live Stream на Темы Анимации, которые включают в себя Alembic File Importer:

Экспорт Alembic Caches

При выборе экспорта файлов Alembic Cache из вашего предпочтительного пакета DCC есть несколько вариантов, которые вы хотите рассмотреть:

 Инструмент 3D Art
Autodesk Maya
  1. Из меню File Menu ниже раздела Cache и Alembic Cache, выберите Export All to Alembic… (или Selection) в соответствии с вашими потребностями. Export All to Alembic UE4

2. В окне Export ниже опций Advanced Options, включите UV Write и параметры Write Face Sets, затем нажмите Export.

параметры Write Face Sets UE4Вам нужно будет включить Write Face Sets, если вы планируете создавать Материалы во время импорта в Unreal Engine 4, поскольку Материалы создаются на основе найденных Face Set Names.

 Инструмент 3D Art
Autodesk 3dsMax
  1. В меню File Menu выберите Export.File Menu 3dMax UE4

2. Укажите местоположение сохранения и измените тип сохранения для Alembic (*.ABC), затем Save.

тип сохранения для Alembic ABC UE43. Определите Alembic Exporter Options, исходя из ваших потребностей.Alembic Exporter Options UE4

ОпцияОписание
File Format (Формат файла)Ogawa новее, быстрее и предлагает меньшие размеры файлов по сравнению с HDF5.
Cache Time Range (Диапазон времени кэширования)Это то же самое, что и Maya (Single – это один кадр, Active Segements – это пользовательский набор Time Slider и Frame Range).
Every Nth Frame (Каждый N-й кадр)Позволяет пропускать кадры (например: 2 будет означать 0-2-4-6-8-10 и т.д.)

Импорт файлов Alembic

Чтобы импортировать файл Alembic в Unreal Engine 4:

  1. Внутри Контент браузера нажмите кнопку Import и укажите на ваш .abc файл.

Импорт файлов Alembic UE42. Появится окно Alembic Cache Import Options, в котором вы можете определить метод / параметры для импорта.

Alembic Cache Import Options UE4Выделив выше в верхней части окна, вы увидите имя файла и местоположения, из которого вы импортируете. Вы также увидите опции флажка для активов в вашем файле, которые вы можете выбрать для импорта или исключения из процесса импорта.

Импорт в виде Статик Меши

Во время процесса импорта вы можете определить, как импортировать ваш контент. По умолчанию для Alembic Import Type установлено значение Static Mesh.

Import static mesh UE4При импорте кэша Alembic как Статик Меш, будет импортироваться только первый кадр в виде одной или нескольких статик мешей. Один кадр из анимации Alembic будет импортирован как объект Static Mesh, и анимация не будет применена. При выборе этого метода импорта существуют некоторые параметры, которые можно использовать для определения того, как импортируется актив, которые описаны ниже.

Параметры выборки

ОпцияОписание
Sampling TypeТип выборки, выполняемый при импорте анимации.

ОпцияОписание
Per FrameОбрабатывает анимацию в соответствии с импортированными данными (опция по умолчанию).
Per X FramesПроецирует анимацию с заданными интервалами, определенными шагами кадра.
Per Time StepОбразцы анимации с заданными интервалами определяются шагами времени.
Frame StartНачальный индекс, чтобы начать выборку анимации.
Frame EndКонечный индекса, чтобы остановить выборку анимации.

Параметры Статик Меши

ОпцияОписание
Merge MeshesСлияние статик мешей с импортом (это может вызвать проблемы с перекрывающимися UV- сетами).
Propagate Matrix TransformationsБудет преобразование Matrix, (если применимо) применяя матричные преобразования к мешам до их слияния.

 

При импорте файла Alembic в качестве Статик Меши, если ваши данные содержат несколько мешей внутри него, вы можете выбрать Merge Meshes в одну Статик Меш внутри Unreal Engine. Если вы снимете этот параметр, каждая меш в вашем файле Alembic будет импортирована в UE4 как отдельная Статик Меш вместо объединения.

Еще одна вещь, которую следует учитывать при включении Merge Meshes, заключается в том, что следует ли распространять матричные преобразования (Propagate Matrix Transformations) до слияния мешей. Это будет принимать данные преобразования, содержащиеся в файле Alembic, и распространять их на меши при слиянии, чтобы они сохраняли свои данные преобразования.

Рассмотрим образец сцены, созданный ниже, который мы экспортируем в качестве кэша Alembic.

кэш Alembic UE4Когда мы импортируем файл в UE4 как Статик Меш с Merge Meshes и Propagate Matrix Transformations, получаем следующее:

импорт файла в UE4Если мы включим Merge Meshes, но снимем флажок Propagate Matrix Transformations, то мы получим следующее:

включить Merge Meshes UE4Каждая из мешей объединяется с 0,0,0 происхождением.

Параметры расчета нормали

ОпцияОписание
Force One Smoothing Group Per ObjectОпределяет, нужно ли специально создавать сглаживающие нормали для каждого отдельного объекта, а не вычислять группы сглаживания.
Hard Edge Angle ThresholdПорог, используемый для определения того, следует ли считать угол между двумя нормалями жестким (ближе к 0 означает более плавный).
Recompute NormalsОпределяет, нужно ли переопределять нормали или нет.
Ignore Degenerate TrianglesОпределяет, следует ли игнорировать вырожденные треугольники при вычислении касательных / нормалей.
Как вычисляются Нормали

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

  • При импорте файла, который содержит нормали для всех фреймов:
    • Для Статик Мешей / Кеша Геометрии – используются существующие нормали.
    • Для Скелетных Мешей – нормали из первого кадра используются для определения групп сглаживания, которые будут использоваться для вычисления нормалей для среднего кадра и всех баз / morph-targets (мы делаем это во всех случаях).
  • При импорте файла, который содержит нормали только для первых кадров:
    • Для Статик Мешей – при использовании фрейма 0 мы используем существующие нормали. В противном случае мы вычисляем группы сглаживания и нормали для запрошенного кадра.
    • Для Geometry Cache – мы вычисляем группы сглаживания и полученные нормали для всех кадров.
  • При импорте файла, который не содержит нормалей:
    • Мы вычисляем non-smooth (негладкие) нормали, генерируем группы сглаживания по нормали расчета и пересчитываем нормали с группами сглаживания.

При включении Recompute Normals используется указанный выше путь (без нормалей).

При импорте в виде Скелетной Меши, если ваша анимация имеет большую дельту нормали, вы можете столкнуться с проблемами, когда нормали начинают правильно выглядеть. Это известная проблема, вызванная тем, как morph-targets могут изменять нормали граней/ вершин. В качестве решения вы можете обойти эту проблему, используя (экспериментальную) функцию кэширования скинов. 

Чтобы включить это, добавьте в файл ConsoleVariables.ini следующее:

r.SkinCache.CompileShaders=1
r.SkinCache.Mode=1
r.SkinCache.RecomputeTangents=1

 

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

Как вычисляются Группы Сглаживания

Если вы получаете жесткие края на мешах, которые вы импортируете, вы можете посмотреть на Hard Edge Angle Threshold, а также на то, как выполняется расчет групп сглаживания.

жесткий угол UE4гладкий угол UE4
1.0 Hard Edge Angle0.0 Hard Edge Angle 

Для вычисления групп сглаживания сначала вычисляются нормали вершины / граней, которые затем используются для просмотра всех связанных граней для одной конкретной грани. Вычисляя угол между нормалями, мы можем затем определить, является ли край жестким или мягким (аналогично инструменту soft / hard edge в Maya). Ниже, изображение слева мы рассмотрим мягкий край, а изображение справа – жесткий. Это связано с тем, что угол между двумя нормалями на изображении слева меньше, чем угол между двумя нормалями на изображении справа.

угол нормали UE4Зная это, мы используем точечный продукт для создания диапазона от 0-1 в качестве порога, чтобы определить, когда что-то должно быть жестким или мягким. Например, значение, близкое к 1, означает, что угол больше, что приводит к жесткому краю, а значение ближе к 0 означает мягкий край. Эта информация затем используется для создания групп нормалей, которые имеют мягкие края. Для каждой из этих групп мы сглаживаем нормали по граням, создавая грани гладкими.

Принуждение одной группы сглаживания к объекту делает каждый отдельный объект полностью гладким (все края мягкие).

Импорт в виде Geometry Cache

При импорте в качестве Geometry Cache (Кеша Геометрии) создается новый тип анимационного актива, который позволяет воспроизводить последовательности, изменяющиеся по вершинам.

Импорт geometry cache UE4Импортированная анимация Alembic будет воспроизводиться как флипбук кадров, а производительность будет масштабироваться с учетом сложности вашей меши.

Это может быть не оптимальным вариантом во всех случаях и рассматривается только как экспериментальный вариант импорта.

Параметры импорта для этого типа метода импорта включают те же параметры Sampling (выборки) и Normal Calculation, что и параметр импорта Статик МешиИмпорт в качестве Geometry Cache также включает возможность создания Материалов в соответствии с найденными именами Face Set (это не будет работать без Face Sets (наборов лиц), которые вы определяете во внешнем приложении и экспортируете вместе с кешем Alembic).

На данный момент ресурсы Geometry Cache не поддерживают буфер смежности, необходимый для настройки тесселяции. Для этого вы могли бы вместо этого импортировать анимацию в виде Skeletal Mesh с помощью Morph Targets (что является более сжатым способом импорта), поскольку это будет поддерживать тесселяцию.

Импорт в виде Скелетной Меши

Этот метод импорта импортирует файл Alembic в виде Skeletal Meshсодержащей базовые позиции в качестве Morph Targets и смешивания между ними для достижения правильного кадра анимации. Импорт в виде Скелетной Меши является наиболее эффективным способом воспроизведения анимации Alembic, если количество вершин не изменяется.

импорт skeletal mesh UE4Во время импорта ваша последовательность анимации будет сжата с использованием схемы PCA, в которой общие позы (базы) извлекаются и взвешиваются для составления исходной анимации во время воспроизведения. При импорте в виде Скелетной Меши в дополнение к параметру SampleNormal Calculation и Create Materials вы также можете определить процент (или фиксированное количество используемых баз) для настройки уровня сжатия.

Параметры сжатия

ОпцияОписание
Merge MeshesОпределяет, должны ли отдельные меши быть объединены для целей сжатия.
Bake Matrix AnimationОпределяет, нужно ли запекать только Matrix анимацию в виде анимации вершин (или пропустить).
Base Calculation TypeОпределяет, как рассчитывается конечное количество баз, которые хранятся в качестве morph targets.

ОпцияОписание
Percentage BasedОпределяет количество оснований, которые должны использоваться с данным процентом (опция по умолчанию).
Fixed NumberУстанавливает фиксированное количество баз для импорта.
Percentage (Max Number) of Total BasesЭто будет генерировать заданное (процентное или фиксированное число) баз в качестве morph targets.

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

Minimum Number Of Vertex Influence PercentageМинимальный процент влияющих вершин, необходимых для morph targets, который действующий.Этот параметр позволяет определить, когда импортируется база / morph-target, в зависимости от вашего определенного процента влияния. Например, если у нас есть модель с 1000 вершинами, и одно из оснований влияет только на 10 вершин. Если бы мы установили это значение в 10, вышеупомянутая base / morph-target не была бы импортирована.