СПРАВОЧНЫЙ МАТЕРИАЛ

Технические требования к контенту в 3D-мирах

Важные вопросы, чтобы не переделывать по 100 раз

3D-Стилистика

Перед началом проектирования модели в первую очередь стоит отталкиваться от формы и силуэта, так как общее пятно контура определяет характер персонажа или объекта. Если укрупненно, то круглые формы – что-то доброе, неагрессивное, острые формы – жесткое, динамичное. Проверяется это так, уберите из вашей модели объем, цвет, оставьте такое пятно Роршаха. Что вы видите в контуре, какие эмоции вызывает, не сильно облизанный контур, есть за что глазу зацепиться? После этого уже можно заниматься визуальным причесыванием образа.

Количество полигонов и топология

Лимит рассчитывается для обеспечения требуемого FPS (частоты кадров рендеринга в секунду) из общего ограничения полигонов и текстур на локацию, зависит от движка и устройств, под которые делается проект.
В мобильной игре на важном объекте суммарно может быть 1-7к полигонов вместе с одеждой. В средних играх важные объекты по 20-30к полигонов. Современные игры тянут модели по 50-150к полигонов и больше.

Например:
Тревор и Майкл в GTA V – 24к и 30к
Элли и Джоел в The Last Of Us – 31к и 40к
Райдер в Mass Effect: Andromeda – 65к
Джек Джойс в Quantum Break – 75к
Мариус в Ryse: Son of Rome – 80к
Джек Бейкер в Resident Evil 7 – 121к
Автомобиль Ruf в Project CARS – 180к
Лара Крофт в Rise of the Tomb Raider – 200к
Элой в Horizon: Zero Dawn – 600к
Общий пайплайн разработки game ready одежды предполагает создание модели, ее ремеш и ретопологию – создание чистой сетки с нужной формой и количеством полигонов. Для одежды приличный ретоп можно сделать в том же Marvelous Designer без использования сторонних 3D-редакторов (в Clo3D нет такой функции) в комбинации автоматического и ручного режимов. Одежда проектируется по лекалам и не надо резать UV-развертку ручками. Затем создают супердетализированную высокополигональную модель в ZBrush, после чего ее запекают и текстурируют в Substance Painter. Полученные текстуры используют на нашей первоначальной низкополигональной одежде, тем самым сохраняя визуальную привлекательность без создания дополнительной геометрии.

Обычно количество полигонов и текстуры четко прописывается в техзадании или есть в документации к платформе, если вы размещаете на сторонних ресурсах.
Разработка 3D-графики
Пайплайн разработки 3D-контента
В Spatial требования к 3D-моделям, которые добавляются уже после загрузки локации на платформу Spatial (например, объекты выставки, к которым надо прикрепить ссылки) и к окружению в формате no code, распространяются на загружаемый файл в целом.

Рекомендуемое количество трианглов < 15к для одного объекта (< 30к максимально), < 60к для окружения (< 180к максимально). В скобочках приведены максимальные значения, но лучше без фанатизма, тогда ваш мир будет стабильнее.

В одном файле оптимально может быть 10 объектов для окружения (максимально 20), 3 (максимально 5) – для всех остальных объектов. Лучше не загружать объект с отдельными глазами и 15-тью пуговицами на жакете. Максимальный размер загружаемого файла – 100 МБ.
Требования к сцене, которая собирается в Unity, распространяются на сцену целиком. Количество вертексов в сцене < 500к. Размер выгружаемой сцены после сжатия < 100 МБ.
В документации Roblox очень любят полагаться на осознанность разработчиков, поэтому официальные рекомендации порой бывают туманные: «при проектировании учитывайте передовые методы моделирования, текстурирования объекта и минимизацию количества полигонов».

Экспорт происходит через собственное приложение Roblox Studio. Объекты и персонажи-гуманоиды должны находиться в пределах 10к трианглов, не считая аксессуаров. Для многослойной одежды Roblox и мешей с меньшей детализацией, аксессуаров – в пределах 4к трианглов.
В Decentraland есть несколько категорий носимых предметов, которые существуют как часть меша аватара – wearables – от скинов полностью, одежды до сережек или нимба над головой. Ограничения на количество треугольников, которые можно использовать для каждого носимого предмета или аксессуара: не более 1,5к трианглов (если считать полигонами, то делим на 2 и получаем не более 750) на носимый предмет, не более 500 трианглов (не более 250 полигонов) на аксессуар, до 5к трианглов в случае полного скина.
Для AR-примерки в Snapchat рекомендуемые параметры экспорта одежды не более 5к полигонов (10к трианглов). Максимальный размер загружаемого контента – 8 МБ. Вы можете загрузить объекты и с бОльшими параметрами, но либо это приведет к некорректному опыту на различных устройствах, либо Lens Studio самостоятельно внутри себя так заоптимизирует, что мама родная не узнает. Поэтому для наилучшего контроля за происходящим на дисплее лучше сразу идти в требуемых параметрах.

Текстурные карты

Кто-то использует полные PBR-текстуры, а кто-то ограничивается плоским цветом даже без карт металличности и/ или шероховатости. Не забываем про необходимость POT-текстур и предварительную подготовку UV-развертки вашей одежды в квадрат.
Для загрузки в готовую локацию Spatial допускаются POT-текстуры 1024x1024 px до 8 текстурных карт единовременно (максимально до 16 текстурных карт 1024x1024 px или до 4 текстурных карт 2048x2048 px). Можно использовать карты цвета, нормалей, металличности, шероховатости, окклюзии окружения. Прозрачность поддерживается текстурной картой в альфа-канале. Также можно настраивать эти значения в самом 3D-редакторе перед экспортом. Эмиссия поддерживается через запекание света в окружающих текстурах.

Для Spatial SDK Unity общий объем текстурных карт в сцене < 200 МБ. Количество уникальных материалов < 75. Используются URP-шейдеры с карты цвета, нормалей, металличности, окклюзии окружения, эмиссии, поддерживается прозрачность.
Также в Spatial SDK Unity доступна загрузка кастомных аватаров, которых можно добавить, как глобальных, когда ты ходишь в нем независимо от локации, и локальных – для выбора внутри вашей экосистемы.

Глобальные аватары оптимизированы. Допускается:
50K вертексов, 22,5К трианглов;
текстурные карты 1024x1024;
не больше 4 сабмешей;
физические габариты до 2.5x 2.5x 2.5 м.

Локальные аватары ограничиваются преимущественно здравым смыслом и гуманным отношением к пользователям:
200К вертексов, 200К трианглов;
текстурные карты до 4096x4096;
до 100 сабмешей;
физические габариты до 25x25x25 м.
В Roblox для 3D-моделей и многослойной одежды можно использовать карты цвета, нормалей, металличности, шероховатости с рекомендуемым разрешением 1024х1024. Для блочных аватаров в качестве создания одежды также предлагается раскрашивать 2D-шаблон с текстурой 585х559 px.
В Decentraland можно использовать для каждого носимого предмета или аксессуара не более двух POT-текстур с соотношением сторон 1:1 с разрешением 512x512px или ниже (например, карта цвета и карта эмиссии). В случае полного скина допускается 5 текстурных карт единовременно.
В Snapchat рекомендуются POT текстуры с разрешением до 1024х1024 px. Поддерживает различные типы шейдеров (кроме карт дисплейсмента), также есть собственный PBR-шейдер с темплейтом для Substance Painter, где на выходе получаются 3 текстурные карты – карта цвета, карта нормалей и карта Material Params, которая сочетает в себе свойства карт металличности, шероховатости и окклюзии окружения.

Анимация

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

Формат экспорта

Spatial: загружаемые форматы для 3D – GLB (рекомендуемый), glTF, FBX,OBJ, DAE, PCD, и FBX, OBJ для работы в Unity.
Roblox: FBX – для одежды, FBX, OBJ, rbxm – для жестких аксессуаров, импортируемых в Roblox Studio.
Decentraland: glTF.
Lens Studio: FBX и OBJ.

Движок проекта

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

БЛОГ О DIGITAL