[Из песочницы] 3D посты в Facebook: что и как

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

image

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

image

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

  • поддерживается формат glTF 2.0 и только он;
  • максимальный размер модели со всеми текстурами 3 МБ;
  • размеры всех текстур должны быть степенью двойки, то есть 1024×512 пройдет, а любимые многими размеры 1000×1000, 2000×2000 уже нет;
  • источники освещения, камеру, фон и многие другие вещи настроить не получится.


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

PBR-рендеринг


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

Карта диффузного отражения/преломления. Она определяет, как будет рассеиваться свет в толще материала. По сути она определяет цвет модели (узнаёте чайник?):

image

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

image

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

image

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

В чем делать


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

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

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

© Habrahabr.ru