В Facebook добавлена возможность создания 3D постов

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


Вот как это примерно выглядит (ссылка):


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

В силу специфики технологии (реалтайм + трафик), Facebook накладывает ряд ограничений на исходную модель:

Тем не менее, это уже не плохо, особенно если учесть, что для рендеринга материалов можно использовать модель PBR.

PBR-рендеринг

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

Карта диффузного отражения/преломления. Она определяет, как будет рассеиваться свет в толще материала. Вот так выглядит эта текстура для приведённого выше чайника:

image

Карта металличности. В местах, где материал ведёт себя как диэлектрик, значение маталличности минимальное, где металл — максимальное:

image

Карта шероховатости, тут всё тоже довольно просто: у гладкой поверхности значение минимальное, у шероховатой — максимальное:

image

Этих трёх текстур будет достаточно для корректного описания материала! Сами карты готовятся в 3D редакторе и экспортируются в glTF в один клик. Всё остальное сделают алгоритмы, которые будут учитывать их для расчёта физически корректного освещения модели.

В случае необходимости, в распоряжении моделлера ещё несколько текстур: карта нормалей, карта затенения (occlusion) и карта эмиссии (полезно для имитации светящихся объектов).

В чем делать

Хорошая новость, трёхмерный движок не понадобится, поскольку разработчики Facebook уже позаботились об этом. С вашей стороны потребуется только контент. Плохая новость — большинство трёхмерных редакторов не поддерживает экспорт в glTF.

Тем не менее, на официальной странице стандарта glTF можно найти два десятка решений, которые могут быть с переменным успехом использованы для приготовления моделей. Их можно условно разделить на две категории: конвертеры (из OBJ, FBX, COLLADA и проч.) и плагины для пакетов моделирования/движков, пока есть только Blender, 3ds Max и Unity.

Для вышеупомянутого чайника использовались следующие инструменты: моделировали в 3ds Max, текстуры для материала запекались в Substance Painter, финальный экспорт в glTF был произведён фреймворком Verge3D for 3ds Max. Кроме экспорта, данный инструмент позволяет посмотреть как поведёт себя модель до её загрузки в FB.