20/05/2018

Как использовать Seurat в Unreal Engine 4?

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

Начитавшись хвалебных отзывов и впечатлившись демкой Blade Runner, в которой разработчикам с помощью Seurat удалось сократить количество треугольников на сцене с 46.6 млн. до 307 тысяч практически без потери качества, я решил протестировать плагин лично. Так началось небольшое приключение, полное боли, страданий и невозможности понять, что делать дальше :) Официальная документация показалась мне слишком сжатой и непонятной, поэтому я решил написать эту заметку, которая, надеюсь, сохранит немного времени всех тех, кто захочет познакомиться с новым творением компании Google.

Unreal Engine 4 плагин

Установка

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

Описание процесса установки плагинов я опускаю. Epic Games подробно осветила этот вопрос в официальной документации.

Установили плагин и готовы запускать ваш тестовый проект? Не так быстро. По состоянию на 16 мая 2018 года проект с плагином отказывался собираться (пробовал на версиях движка 4.16.2, 4.17.2, 4.18.3 и 4.19.2), однако устраняется ошибка просто: достаточно добавить одну строку в Build.cs файл плагина, который можно найти по следующему пути: <проект>\Plugins\Seurat\Source\Seurat\Seurat.Build.cs

Строка, которая необходима для корректной сборки плагина:
PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;

Таким образом, после добавления строки файл Seurat.Build.cs должен выглядеть так.
Теперь проект должен собираться корректно. Пора приступать к захвату сцены!

Использование

  1. Запустите проект, содержащий плагин Seurat
  2. Проверьте, включен ли плагин (список плагинов с их состояниями можно открыть, нажав на Edit-Plugins)
  3. Создайте уровень и добавьте на него что-нибудь
  4. Теперь вам нужно добавить на сцену объект Scene Capture Seurat, который будет отвечать за захват окружения.

    Как найти Scene Capture Seurat

  5. Выберите добавленный объект, во вкладке Details найдите и нажмите кнопку Capture

    Кнопка Capture

  6. После нажатия начнется захват сцены. Будьте терпеливы: процесс может занять некоторое время. В итоге, на экране должно появиться уведомление о том, что всё прошло успешно:
     

 

Сцена захвачена и преобразована в набор изображений, который можно найти по следующему пути: <проект>\Intermediate\SeuratCapture.

Следующий шаг: превращение этого набора изображений в упрощённый меш с текстурой.

Seurat

Установка

  1. Скачайте Seurat
  2. Откройте файл BUILDING.md и следуйте инструкциям по сборке проекта (не повторяйте моих глупых ошибок! Если вы планируете собирать для платформы Windows, вам следует вызывать build.bat -c opt_x64 команду из VS Native Tools Command Prompt):
     

Если вы всё сделали верно, собранный pipeline для обработки изображений можно будет найти по следующему пути:\seurat\bazel-bin\seurat\pipeline.

Использование

Откройте консоль и перейдите в папку \seurat\bazel-bin\seurat\pipeline.

Мы будем вызывать seurat.exe с двумя базовыми параметрами (полный список параметров):

  • input_path [default=””] : путь к файлу manifest.json
  • output_path [default=””] : базовый путь для сгенерированного контента

Создайте папку input и перенесите в нее все файлы, сгенерированные в результате захвата сцены, из <проект>\Intermediate\SeuratCapture (не забудьте главный файл — manifest.json, путь к которому нужно указывать в параметре input_path. При попытке сослаться не на .json файл, а просто на папку, вы получите ошибку “Output path required”. Да, это странно :) ).

Затем создайте папку output, в которую будет сохраняться созданный Seurat’ом контент.

Всё готово, пора запускать генерацию меша и текстур. Сделать это можно следующей командой:

seurat.exe -input_path=”<путь к папке input>\manifest.json” -output_path=”<путь к папке output>”

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

Импорт в проект Unreal Engine 4

Итак, Seurat своё дело сделал, теперь в папке output лежит несколько файлов, созданных на основе захваченной ранее сцены.

Процесс импорта мешей и текстур в проект подробно описан в документации к плагину.

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

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

Автор: Egor Bogomyakov

Recent Posts

Как в НИУ ВШЭ воспитывают новых Кодзим

11/07/2019
Реально ли попасть в геймдев, отучившись 4 года и получив диплом? Чему предстоит обучаться? Какие подводные камни? Что говорят студенты и преподаватели?

От юриста до разработчика игр при финансовой поддержке Unreal Engine

08/07/2019
Ник Пирс поделился замечательной историей о том, как сменить скучную профессию и стать разработчиком игр. 

Создание ИИ сверхскоростных автомобилей с помощью Unreal Engine

04/07/2019
Ведущий программист Dark Future: Blood Red States рассказывает об изящном решении для создания ИИ правдоподобных противников.