[Из песочницы] 3D посты в Facebook: что и как
Недавно разработчики Facebook анонсировали поддержку 3D-постов. То есть теперь любой пользователь может легко загрузить низкополигональную модель в нужном формате (об этом ниже), снабдить её текстом и показывать своим друзьям и знакомым.
Вот как это примерно выглядит (ссылка):
Понятное дело, в большинстве случаев, данная возможность будет использоваться для рекламы, презентаций товаров и других коммерческих целей. Думаю, маркетинговые отделы всех крупных компаний уже взяли на вооружение данную технологию и активно экспериментируют с созданием мощных 3D-сцен. Однако, им явно не понравится список ограничений, которые выкатили разработчики:
- поддерживается формат glTF 2.0 и только он;
- максимальный размер модели со всеми текстурами 3 МБ;
- размеры всех текстур должны быть степенью двойки, то есть 1024×512 пройдет, а любимые многими размеры 1000×1000, 2000×2000 уже нет;
- источники освещения, камеру, фон и многие другие вещи настроить не получится.
Тем не менее, это уже не плохо, особенно если учесть, что для рендеринга материалов можно использовать модель PBR.
PBR-рендеринг
Когда мощность графических процессоров выросла до достаточных величин, программисты решили чаще использовать физические законы при расчёте освещения трёхмерных объектов в реальном времени. Одна из моделей такого освещения предполагает симуляцию поверхности с помощью трёх величин: диффузное отражение/преломление, металличность и шероховатость. Чтобы не вдаваться в долгие объяснения, приведу текстуры, показывающие как воспроизводится приведённая выше модель.
Карта диффузного отражения/преломления. Она определяет, как будет рассеиваться свет в толще материала. По сути она определяет цвет модели (узнаёте чайник?):
Карта металличности. В местах, где материал ведёт себя как диэлектрик, значение маталличности минимальное, где металл — максимальное:
Карта шероховатости, тут всё тоже довольно просто: у гладкой поверхности значение минимальное, у шероховатой — максимальное:
Зачем я всё это привел? Суть в том, что это всё что требуется для корректного описания материала! Сами карты готовятся в 3D редакторе и экспортируются в glTF в один клик. Всё остальное сделают алгоритмы, которые будут учитывать их для расчёта физически корректного освещения модели.
В чем делать
Хорошая новость, трёхмерный движок не понадобится. Разработчики Facebook уже развернули последнюю версию движка Three.js на своих мощностях, от вас потребуется только модель. Плохая новость — большинство трёхмерных редакторов не поддерживает экспорт в glTF.
Тем не менее, на официальной странице стандарта glTF можно найти два десятка решений, которые могут быть с переменным успехом использованы для приготовления моделей. Их можно условно разделить на две категории: конвертеры (из OBJ, FBX, COLLADA и проч.) и плагины для пакетов моделирования/движков, пока есть только Blender, 3ds Max и Unity.
В общем ищите сами. Для вышеупомянутого чайника использовались следующие инструменты: моделировали в 3ds Max, текстуры для материала запекались в Substance Painter, финальный экспорт в glTF был произведён плагином Verge3D.