Что такое рендеринг и render pipeline

Начало работы с High Definition Render Pipeline (HDRP) для игр

Что вы узнаете на этой странице: информацию об оценке целесообразности High Definition Render Pipeline (HDRP) и сведения о том, как начать использовать его в разработке. Материал подготовлен на основе доклада Дженнифер С. Рож-Десландес, представленного на Unite Copenhagen 2019.

Among the most frequent questions Unity engineers get from creators are “What is HDRP?” and “How can I use it in my project?” So we put together this list of considerations to help you understand how you can use the High Definition Render Pipeline (HDRP) in your projects to get the most out of it.

Let’s start by answering a few questions to assess if your project is ready for HDRP:

The first question you need to ask yourself is if you are shipping on a supported platform. If you’re planning to ship on consoles such as Xbox One and PlayStation 4, Windows (DirectX 11, DirectX 12 and Vulkan), Mac (Metal), and VR headsets (PlayStation VR, Oculus Rift, OpenVR, Windows Mixed Reality), then we’ve got you covered. There’s currently very little support for Linux, and no support for Nintendo Switch, OpenGL, and mobile platforms.

HDRP will be out of preview with the Unity 2019.3 release. We strongly recommend you use HDRP with that version onwards; with Unity 2019.3 Long-Term Support (LTS) and above, you will have full support. If you use HDRP with any previous Unity versions, you’ll have to do all of the maintenance yourself.

Working with HDRP requires a lot of upgrade and maintenance. To move from the Built-in rendering pipeline or the Universal Render Pipeline, you’ll also have to ramp up on technical knowledge for HDRP. Make sure that you and your team allocate some time to learn this tech.

HDRP is grounded in physically based rendering and offers a unified lighting pipeline. Also, it comes with several tools for your artistic needs: Visual Effect Graph, Look Dev, and post-processes. For characters and environment, HDRP offers skin, hair, and eye shaders, as well as subsurface scattering and some support for terrain.

If you’re still deciding what render pipeline to use, here are a few things to consider. HDRP is supported with Unity 2019 LTS and above, and it comes with its own high-definition post-processing stack. It also comes with ray tracing support, VFX Graph support, Shader Graph support, and state-of-the-art graphics features.

If your project contains complex scenes, HDRP will scale better than with the built-in rendering pipeline. However, if you’re planning to ship on both mobile and consoles, HDRP might not be the right tech for you.

Одно из направлений HDRP — единое и логичное освещение. Другое направление — производительность и, разумеется, современные технологии.

Единое и логичное освещение

HDRP — это процесс физического рендеринга, что позволяет вам использовать параметры реального мира для разработки сцен. Например, световой поток здесь измеряется в люменах или в люксах.

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

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

Функции HDRP способны обеспечивать высокое качество на всех поддерживаемых платформах. Мы хотим, чтобы у вас была возможность реализовать творческие идеи без оглядки на производительность.

Самые современные технологии

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

Чтобы использовать HDRP в проекте, мы рекомендуем выполнить следующее.

Все созданные в Unity демонстрации разработаны с использованием тех же технологий, которые вы будете использовать после загрузки пакета HDRP. Вот два проекта для изучения: Fontainebleau и Spaceship. Обе демонстрации отлично документированы, по ним подготовлены статьи, объясняющие процесс разработки.

Каждый выпуск пакета HDRP сопровождается примерами.

Если вы готовы приступить, то вот как можно создать проект с поддержкой HDRP в Unity: откройте Unity Hub, создайте новый проект, выберите шаблон High Definition Render Pipleline и готово! Вы сможете начать свои эксперименты, как только откроется Editor.

Если что-то идет не так, то Render Pipeline Wizard поможет вам выявить проблемы вашего проекта. Он находится в меню Window > Analysis > Render Pipeline Wizard.

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

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

Для начала убедитесь, что вы используете нужную версию Unity. Принимая решение, сверяйтесь с документацией. Откройте Package Manager и выберите пакет High Definition RP, чтобы увидеть его версию. Ниже есть несколько ссылок, и самые важные из них — документация и список изменений.

Обратите внимание, что крупные выпуски пакета выходят вместе с новыми совместимыми выпусками Unity. Эту информацию можно найти в менеджере пакетов. Например, версия HDRP 5.0.1 совместима с Unity 2019.1. Поняв, какой выпуск Unity и соответствующий ей пакет HDRP вам подходит лучше, вы можете приступать к обновлению вашего проекта.

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

Во-первых, нужно удалить текущий используемый стек постобработки, поскольку в HDRP есть собственный стек. Для этого выберите пакет Post Processing в менеджере пакетов и нажмите кнопку Remove.

После этого нужно проверить, используется ли в вашем проекте линейное цветовое пространство. Откройте настройки по адресу Edit > Project Settings > выберите пункт Player > перейдите в раздел Other Settings, чтобы увидеть настройки цветового пространства (Color Space Settings). Измените значение Gamma на Linear.

После этого загрузите пакет HDRP. В Package Manager выберите пакет High Definition RP и нажмите на кнопку Install. Обновите пакет до последней версии, актуальной для вашего выпуска Unity.

Для использования HDRP в проекте нужно использовать High-Definition Render Pipeline Asset. В окне Project щелкните правой кнопкой мыши в папке Assets и выберите пункт Create > Rendering, а затем — High Definition Render Pipeline Asset. Назначьте его проекту: выберите Edit > Project Settings > Graphics, а затем High Definition Render Pipeline Asset.

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

Если что-то пошло не так, то возможно дело в том, что ваши материалы несовместимы с HDRP. Используйте Render Pipeline Wizard чтобы проверить настройки, материалы и освещение на совместимость с HDRP.

Render Pipeline Wizard (Window > Analysis > Render Pipeline Wizard) формирует полный список потенциальных проблем проекта. Вы можете решать каждую проблему по отдельности или исправить все разом, нажав на кнопку Fix All.

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

После устранения неполадок приступайте к конвертированию материалов. Для этого выберите пункт Edit > Render Pipeline > Upgrade Project Materials to High Definition Materials; все шейдеры Standard Lit/Unlit в проекте будут преобразованы в материалы HDRP Lit/Unlit.

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

Постобработка уже включена для вашего проекта по умолчанию. Убедиться в этом можно по адресу Project Settings > HDRP Default Settings > Volume Components. Например, эффекты Tonemapping и Bloom включаются по умолчанию, но это можно изменить в разделе Volume Components. В этом разделе вы также можете создать собственный объем для сцены и добавить новый профиль.

Проверьте настройки HDRP. Их можно найти в разных местах:

Настроив проект, можно переходить к более тонким параметрам.

Есть несколько способов настройки процесса рендеринга в пакете HDRP.

Исходный код HDRP доступен GitHub — вы можете менять его в соответствии со своими потребностями. Но мы настоятельно рекомендуем вам создать ответвление и регулярно интегрировать все исправления от Unity.

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

Источник

3D ML. Часть 4: дифференциальный рендеринг

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

В нескольких предыдущих заметках данной серии мы уже упоминали понятие дифференциального рендеринга. Сегодня пришло время разъяснить что это такое и с чем это едят.

Мы поговорим о том, почему традиционный пайплайн рендеринга не дифференцируем, зачем исследователям в области 3D ML потребовалось сделать его дифференцируемым и как это связано с нейронным рендерингом. Какие существуют подходы к конструированию таких систем, и рассмотрим конкретный пример — SoftRasterizer и его реализацию в PyTorch 3D. В конце, с помощью этой технологии, восстановим все пространственные характеристики “Моны Лизы” Леонардо Да Винчи так, если бы картина была не написана рукой мастера, а отрендерена с помощью компьютерной графики.

Серия 3D ML на Хабре:

Репозиторий на GitHub для данной серии заметок.

Заметка от партнера IT-центра МАИ и организатора магистерской программы “VR/AR & AI” — компании PHYGITALISM.

Rendering pipeline: forward and inverse

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

Если мы рассматриваем все возможные задачи, в которых требуется как-то взаимодействовать с 3D моделями, то глобально появляется возможность разделить их на два класса задач:

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

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Рис.1 Из презентации TensorFlow Graphics (github page).

В качестве примера такой задачи, можно рассмотреть задачу “3D mesh reconstruction from single image”, которую мы уже упоминали в предыдущих заметках. С одной стороны, эту задачу можно решать сравнивая ошибку рассогласования между исходной моделью и предсказанной с помощью функций потерь для 3D объектов (заметка №2 данной серии). С другой стороны, можно генерировать 3D объект сначала, а после его отрендеренную картинку сравнивать с изображением-образцом (пример на рис.2).

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Рис.2.1 Модель деформации меша с помощью модуля дифференциального рендеринга SoftRas (github page).
Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Рис.2.2 Пайплайн обучения в задаче генерации формы 3D объекта по входному изображения без 3D датасета из обзорной статьи [9].

Далее, при разговоре про рендеринг, мы будем рассматривать несколько основных компонентов 3D сцены:

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

Давайте поговорим сначала о том, из каких этапов состоит традиционный пайплайн прямого рендеринга и почему он не является дифференцируемым.

Why is rendering not differentiable?

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Рис.3 Схема традиционного рендеринга и рендеринга методом Soft Rasterizer [1]. Здесь: Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— меш объекта на сцене, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— модель камеры, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— модель источника освещения, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— модель текстуры, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— карта нормалей для меша, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— карта глубины получаемого изображения, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— матрица преобразования 3D в 2D для получения плоского изображения, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— растеризованное изображение, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— вероятностные карты метода Soft Rasterizer, Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— изображения полученные традиционным рендерингом и методом SoftRas соответственно. Красные блоки — недифференцируемые операции, синии — дифференцируемые.

Процедуру рендеринга можно подразделить на несколько взаимозависимых этапов (этапы традиционного рендеринга приведены на рис.3 — врехняя линия в правой части). Какие-то этапы, к примеру вычисления освещения и позиции камеры, являются дифференцируемыми, поскольку в них участвуют непрерывные функциональные зависимости (см. модель Фонга, на Хабре о ней и моделях освещения писали здесь и здесь), но два последних этапа не являются дифференцируемыми. Давайте разберемся почему.

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

Последние два этапа, которые являются по сути и ключевыми — это растеризация и шейдинг. (Про реализацию этих этапов на JavaScript на Хабре писали здесь).

Грубо говоря, проблему недифференцируемости растеризации можно описать так: “пиксели — дискретные структуры, с постоянным цветом, а исходная модель непрерывна, поэтому при проецировании из 3D в 2D часть информации теряется”.

Проиллюстрируем две основные проблемы с дифференцируемостью при вычислении цвета и расстояния.

Проблема №1 (недифференцируемость цвета по глубине)

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

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

Проблема №2 (недифференцируемость цвета при сдвигах)

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

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

Make it differentiable! — Soft Rasterizer

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

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

Также, мы настоятельно рекомендуем ознакомиться с обзорной заметкой про область дифференциального рендеринга «Differentiable Rendering: A Survey» [9].

Подходы основаны на разных идеях и приемах. Мы подробно остановимся только на одном, Soft Rasterizer, по двум причинам: во-первых, идея данного подхода математически прозрачна и легко реализуема самостоятельно, во-вторых, данный подход реализован и оптимизирован внутри библиотеки PyTorch 3D [6].

Подробно со всеми аспектами реализации дифференциального рендеринга этим методом можно ознакомиться в соответствующей статье [1], мы же отметим основные моменты.

Для решения проблемы №1, авторы метода предлагают использовать “смешение” цветов k — ближайших полигонов (blending).
Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Коротко этот прием можно описать следующим образом: для вычисления итогового цвета Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline-го пикселя Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline, производят нормированное суммирование цветовых карт Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipelineдля k — ближайших полигонов Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline, причем цветовые карты получают путем интерполяции барицентрических координат цвета вершин данных полигонов. Индекс Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipelineв формуле отвечает за фоновый цвет (background colour), а оператор Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— оператор агрегирование цвета. Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— глубина Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline-го пикселя относительно Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline-го полигона, а Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline— параметр смешивания (чем он меньше, тем сильнее превалирует цвет ближайшего полигона).

Итоговой подход Soft Rasterizer, заключается в комбинировании этих двух идей, для одновременного плавного размытия границы и цвета.
Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Рис.4 Схема реализации дифференциального рендеринга в PyTorch 3D (слайд из презентации фреймворка).

Реализация Soft Rasterizer внутри библиотеки PyTorch 3D выполнена так, чтобы максимально эффективно и удобно использовать возможности как базового фреймворка PyTorch, так и возможности технологии CUDA. По сравнению с оригинальной реализацией [github page], разработчикам фреймворка удалось добиться 4-х кратного приращения скорости обработки (особенно для больших моделей), при этом возрастает расход памяти за счет того, что для каждого типа данных (ката глубины, карта нормалей, рендер текстур, карта евклидовых расстояний) нужно просчитать k слоев и хранить их в памяти.

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Рис.5 Сравнение характеристик дифференциального рендеринга в PyTorch 3D (слайд из презентации фреймворка).

Поэкспериментировать с настройками дифференциального рендера можно как в PyTorch 3D, так в библиотеке с оригинальной реализацией алгоритма Soft Rasterizer. Давайте рассмотрим пример, демонстрирующий зависимость итоговой картинки отрендеренной модели от параметров дифференциального рендера \sigma, \gamma.

Удобнее всего работать с этой библиотекой в виртуальном окружении anaconda, так как данная библиотека работает уже не с самой актуальной версией pytorch 1.1.0. Также обратите внимание что вам потребуется видеокарта с поддержкой CUDA.

Зададим начальные параметры камеры для рендеринга, загрузим меш объекта с текстурами (есть мод для работы без текстур, в этом случае нужно указать texture_type=’vertex’ ), инициализируем дифференциальный рендер и создадим директорию для сохранения результатов.

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

Теперь поиграемся со степенью размытия границы и степенью смешения цветов. Для этого будем в цикле увеличивать параметр размытия Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipelineи одновременно увеличивать параметр смешения цвета Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline.

Итоговый результат на примере стандартной модели текстурированной коровы (cow.obj, cow.mtl, cow.png — удобно скачивать, например, с помощью wget) выглядит так:

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

Neural rendering

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Дифференциальный рендеринг как базовый инструмент для 3D ML, позволяет создавать очень много интересных архитектур глубокого обучения в области, которая получила названия нейронный рендеринг (neural rendering). Нейронный рендеринг позволяет решать множество задач, связанных с процедурой рендеринга: от добавления новых объектов на фото и в видеопоток до сверхбыстрого текстурирования и рендеринга сложных физических процессов.

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

Experiment: Mona Liza reconstruction

Разберем пример применения дифференциального рендеринга для восстановления параметров 3D сцены по исходному изображению человеческого лица, представленный в пуле примеров библиотеки redner, которая является реализацией идей, изложенных в статье [ 4 ].
Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

В данном примере, мы будем использовать т.н. 3D morphable model [8] — технику текстурированного трехмерного моделирования человеческого лица, ставшую уже классической в области анализа 3D. Техника основана на получение такого крытого представления признаков 3D данных, которое позволяет строить линейные комбинации, сочетающие физиологические особенности человеческих лиц (если так можно выразиться, то это своеобразный Word2Vec от мира 3D моделирования человеческих лиц).

Для работы с примером вам потребуется датасет Basel face model (2017 version). Файл model2017-1_bfm_nomouth.h5 необходимо будет разместить в рабочей директории вместе с кодом.

Для начала загрузим необходимы для работы библиотеки и датасет лиц.

Создадим модель, которая на вход будет принимать векторы скрытого представления цвета и формы лица, параметры камеры и освещения в сцене, а на выходе будет генерировать отрендеренное изображение.

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

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Зададим начальные значения параметров, которые будем пытаться восстановить для целевой картины.

Остается организовать, оптимизационный цикл и логировать происходящее с функцией ошибки (в нашем случае это попиксельный MSE + квадратичные регуляризаторы параметров) и с самой 3D моделью.

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline
Чтобы лучше понимать что происходило со сценой в процессе обучения можем сгенерировать анимацию из наших логов:

Что такое рендеринг и render pipeline. Смотреть фото Что такое рендеринг и render pipeline. Смотреть картинку Что такое рендеринг и render pipeline. Картинка про Что такое рендеринг и render pipeline. Фото Что такое рендеринг и render pipeline

Conclusions

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

Существуют несколько популярных библиотек глубокого вычисления (например Kaolin, PyTorch 3D, TensorFlow Graphics), которые содержат дифференциальный рендеринг как составную часть. Также существуют отдельные библиотеки, реализующие функционал дифференциального рендеринга (Soft Rasterizer, redner). С их помощью можно реализовывать множество интересных проектов, вроде проекта с восстановлением параметров лица и текстуры портрета человека.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *