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