Создание трехмерных моделей для использования в домашних условиях

Windows Mixed Reality дома является отправной точкой, где пользователи приземлились перед запуском приложений. При разработке приложения для Windows Mixed Reality гарнитур используйте трехмерную модель в качестве средства запуска приложений и разместите трехмерные прямые ссылки на Windows Mixed Reality домашней странице. В этой статье описываются рекомендации по созданию трехмерных моделей, совместимых с Windows Mixed Reality домашней странице.

Общие сведения о требованиях к ресурсам

При создании трехмерных моделей для Windows Mixed Reality существуют некоторые требования, которым должны соответствовать все ресурсы:

  1. Экспорт — ресурсы должны быть доставлены в формате GLB (двоичный glTF), OBJ или FBX-файл
  2. Моделирование — ресурсы должны быть менее 10 000 треугольников, иметь не более 64 узлов и 32 вложенных мешков на lod
  3. Материалы . Текстуры не могут быть больше 4096 x 4096, а наименьшая MIP-карта не должна быть больше 4 в любом измерении
  4. Анимация. Анимация не может быть длиннее 20 минут при 30 кадров/с (36 000 ключевых кадров) и должна содержать <= 8192 целевых вершин
  5. Оптимизация — ресурсы должны быть оптимизированы с помощью WindowsMRAssetConverter. Требуется для версий <ОС Windows = 1709* и рекомендуется для версий >ОС Windows = 1803

Примечание

Приложение 3D Viewer поддерживает различные форматы и разрешения, но в конечном итоге преобразует модели в .glb/glTF перед их отображением в Смешанная реальность домашней странице.

Остальная часть этой статьи содержит подробный обзор этих требований и дополнительные рекомендации по обеспечению правильной работы моделей с Windows Mixed Reality дома.

Подробное руководство

Экспорт моделей

Главная Windows Mixed Reality ожидает, что трехмерные ресурсы будут доставлены с помощью формата GLB-файла с внедренными изображениями и двоичными данными. Glb — это двоичная версия формата glTF, который представляет собой бесплатный открытый стандарт для доставки трехмерных ресурсов, поддерживаемых группой Khronos. По мере того как glTF развивается как отраслевой стандарт для взаимодействия трехмерного содержимого, также будет поддерживаться майкрософт для формата в приложениях и интерфейсах Windows. Если вы еще не создали ресурс glTF, вы можете найти список поддерживаемых экспортеров и преобразователей на странице GitHub рабочей группы glTF.

Рекомендации по моделированию

Windows ожидает, что ресурсы будут созданы с помощью следующих рекомендаций по моделированию, чтобы обеспечить совместимость с Смешанная реальность домашней среды. При моделировании в выбранной программе учитывайте следующие рекомендации и ограничения.

  1. Для оси Вверх должно быть задано значение "Y".
  2. Ресурс должен быть направлен вперед к положительной оси Z.
  3. Все активы должны быть построены на наземном самолете в источнике сцены (0,0,0)
  4. Для рабочих единиц следует задать единицы измерения и ресурсы, чтобы ресурсы можно было создавать в мировом масштабе
  5. Все сетки не нужно объединять, но рекомендуется, если вы нацелены на устройства с ограниченными ресурсами.
  6. Все сетки должны использовать один материал, при этом для всего ресурса используется только один набор текстур.
  7. UV должны быть размещены в квадратном расположении в пространстве 0-1. Избегайте текстуры плитки, хотя они разрешены.
  8. Несколько UV не поддерживаются
  9. Двусторонние материалы не поддерживаются

Число треугольников и уровни детализации (LOD)

Windows Mixed Reality дома не поддерживает модели с более чем 10 000 треугольников. Рекомендуется триангуляцию сеток перед экспортом, чтобы убедиться, что они не превышают это число. Windows MR также поддерживает дополнительные геометрические уровни детализации (LOD), чтобы обеспечить производительность и высокое качество работы. WindowsMRAssetConverter поможет объединить 3 версии модели в одну модель GLB. Windows определяет, какой loD отображать на основе объема экранной недвижимости, которую занимает модель. Поддерживаются только три уровня LOD со следующими рекомендуемыми значениями треугольников:

Уровень LOD Рекомендуемое число треугольников Максимальное число треугольников
LOD 0 10 000 10 000
LOD 1 5 000 10 000
LOD 2 2500 10 000

Количество узлов и ограничения submesh

Домашняя Windows Mixed Reality не поддерживает модели с более чем 64 узлами или 32 вложенными вмешами на lod. Узлы — это концепция в спецификации glTF , которая определяет объекты в сцене. Подмеши определяются в массиве примитивов в сетке в объекте .

Компонент Описание Максимальное поддерживаемо Документация
Узлы Объекты в сцене glTF 64 на lod Здесь
Вложенные мешки Сумма примитивов во всех сетках 32 на lod Здесь

Рекомендации по материалу

Текстуры должны быть подготовлены с помощью рабочего процесса шероховатости металла PBR. Начните с создания полного набора текстур, включая Альбедо, Обычный, Окклюзион, Металлик и Шероховатость. Windows Mixed Reality поддерживает текстуры с разрешением до 4096x4096, но рекомендуется создавать в формате 512x512. Текстуры должны создаваться в разрешениях, кратных 4. Это требование для формата сжатия, применяемого к текстурам в шагах экспорта, описанных ниже. При создании MIP-карт или текстуры минимальное значение MIP должно быть не более 4x4.

Рекомендуемый размер текстуры Максимальный размер текстуры Самый низкий MIP
512 x 512 4096x4096 max 4x4

Карта Альбедо (базовый цвет)

Необработанный цвет без сведений о освещении. Эта карта также содержит отражающие и диффузные сведения для поверхностей металла (белый цвет на металлической карте) и изоляции (черный на металлической карте) соответственно.

Норм.

Обычная карта тангенсного пространства

Карта шероховатости

Описывает микроповерхност объекта . Белый 1.0 является грубым Черный 0.0 является гладким. Эта карта придает ресурсу наибольший характер, так как она действительно описывает поверхность. Например, царапины, отпечатки пальцев, пятно, грязь и т. д.

Карта внешнего перекрытия

Карта шкалы значений, показывающая области отключенного света, блокирующая отражения

Металлическая карта

Сообщает шейдеру, является ли что-то металлическим или нет. Необработанный металл = 1,0 белый Неметалл = 0,0 черный. Там могут быть переходные серые значения, которые указывают на что-то, покрывающее необработанный металл, например грязь, но в целом эта карта должна быть только черно-белой.

Оптимизация

Windows Mixed Reality home предлагает ряд оптимизаций поверх основной спецификации glTF, определенной с помощью пользовательских расширений. Эти оптимизации требуются в версиях <Windows = 1709 и рекомендуются для более новых версий Windows. Вы можете легко оптимизировать любую модель glTF 2.0 с помощью Windows Mixed Reality Asset Converter, доступного на GitHub. Это средство выполнит правильную упаковку и оптимизацию текстур, как указано ниже. Для общего использования рекомендуется использовать WindowsMRAssetConverter, но если вам нужен больший контроль над интерфейсом и вы хотите создать собственный конвейер оптимизации, см. подробную спецификацию ниже.

Примечание

Полный список возможностей для точных ограничений модели см. в статье оптимизация трехмерной модели для использования в Dynamics 365 приложениях.

Материалы

Для повышения времени загрузки ресурсов в Смешанная реальность средах Windows MR поддерживает отрисовку сжатых текстур DDS, упакованных в соответствии со схемой упаковки текстур, определенной в этом разделе. Ссылки на текстуры DDS используются с помощью расширения MSFT_texture_dds. Настоятельно рекомендуется сжимать текстуры.

HoloLens

В смешанной реальности на основе HoloLens предполагается, что текстуры будут упакованы с помощью двухфактурной конфигурации с использованием следующей спецификации упаковки:

Свойство glTF Текстура Схема упаковки
pbrИкрование baseColorTexture Красный (R), зеленый (G), синий (B)
MSFT_packing_normalRoughnessMetallic normalRoughnessХитектура Normal (RG), Roughness (B), Metallic (A)

При сжатии текстур DDS на каждой карте ожидается следующее сжатие:

Текстура Ожидаемое сжатие
baseColorTexture, normalRoughnessColoricTexture BC7

Иммерсивные гарнитуры (VR)

Интерфейсы Windows Mixed Reality на пк для иммерсивных гарнитур (VR) предполагают, что текстуры будут упакованы с использованием трехфактурной настройки с использованием следующей спецификации упаковки:

ОС >Windows = 1803

Свойство glTF Текстура Схема упаковки
pbrИкрование baseColorTexture Красный (R), зеленый (G), синий (B)
MSFT_packing_occlusionRoughnessMetallic occlusionRoughnessTexture Окклюзия (R), Шероховатость (G), Металлическая (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture Normal (RG)

При сжатии текстур DDS на каждой карте ожидается следующее сжатие:

Текстура Ожидаемое сжатие
normalTexture BC5
baseColorTexture, occlusionRoughnessTexture BC7
ОС <Windows = 1709

Свойство glTF Текстура Схема упаковки
pbrИкрование baseColorTexture Красный (R), зеленый (G), синий (B)
MSFT_packing_occlusionRoughnessMetallic roughnessИнклюзииТектура Шероховатость (R), металлическая (G), окклюзия (B)
MSFT_packing_occlusionRoughnessMetallic normalTexture Normal (RG)

При сжатии текстур DDS на каждой карте ожидается следующее сжатие:

Текстура Ожидаемое сжатие
normalTexture BC5
baseColorTexture, roughnessВыборокклюзииТектура BC7

Добавление loD сетки

Windows MR использует loD геометрических узлов для отрисовки трехмерных моделей с разными уровнями детализации в зависимости от покрытия экрана. Хотя эта функция технически не требуется, ее рекомендуется использовать для всех ресурсов. В настоящее время Windows поддерживает 3 уровня детализации. LoD по умолчанию — 0, что представляет собой наивысшее качество. Другие lods нумеруются последовательно, например 1, 2 и постепенно снижаются в качестве. Конвертер активов Windows Mixed Reality поддерживает создание ресурсов, соответствующих этой спецификации LOD, путем принятия нескольких моделей glTF и их объединения в один ресурс с допустимыми уровнями LOD. В следующей таблице перечислены ожидаемые целевые объекты упорядочения lod и треугольники.

Уровень LOD Рекомендуемое число треугольников Максимальное число треугольников
LOD 0 10 000 10 000
LOD 1 5 000 10 000
LOD 2 2500 10 000

При использовании LOD всегда указывайте 3 уровня LOD. Отсутствие loD приведет к тому, что модель не будет отображаться неожиданно, так как система LOD переключится на отсутствующий уровень LOD. в настоящее время glTF 2.0 не поддерживает loDs как часть основной спецификации. LoDs следует определять с помощью расширения MSFT_LOD.

Покрытие экрана

LoD отображаются в Windows Mixed Reality на основе системы, определяемой значением покрытия экрана, установленным для каждого loD. Объекты, которые в настоящее время занимают большую часть экранного пространства, отображаются на более высоком уровне LOD. Покрытие экрана не является частью основной спецификации glTF 2.0 и должно быть указано с помощью MSFT_ScreenCoverage в разделе "дополнительные" расширения MSFT_lod.

Уровень LOD Рекомендуемый диапазон Диапазон по умолчанию
LOD 0 100% - 50% 0,5
LOD 1 Под 50% - 20% 0,2
LOD 2 Под 20% - 1% 0,01
LOD 4 Под 1% -

Рекомендации по анимации

Примечание

Эта функция была добавлена в составе обновления Windows 10 за апрель 2018 г. В более ранних версиях Windows эти анимации не будут воспроизводиться, однако они по-прежнему будут загружаться, если они будут создаваться в соответствии с рекомендациями в этой статье.

Домашняя страница смешанной реальности поддерживает анимированные объекты glTF в HoloLens и иммерсивных гарнитурах (VR). Если вы хотите активировать анимацию в модели, необходимо использовать расширение "Карта анимации" в формате glTF. Это расширение позволяет активировать анимацию в модели glTF на основе присутствия пользователя в мире, например активировать анимацию, когда пользователь находится рядом с объектом или когда он смотрит на него. Если объект glTF содержит анимации, но не определяет триггеры, анимации не будут воспроизводиться. В разделе ниже описывается один рабочий процесс для добавления этих триггеров в любой анимированный объект glTF.

Инструменты

Сначала скачайте следующие средства, если у вас их еще нет. Эти средства упрощают открытие любой модели glTF, ее предварительный просмотр, внесение изменений и сохранение в формате glTF или GLB:

  1. Visual Studio Code
  2. Средства glTF для Visual Studio Code

Открытие и предварительный просмотр модели

Начните с открытия модели glTF в VSCode, перетащив GLTF-файл в окно редактора. Если у вас есть GLB-файл, а не GLTF-файл, вы можете импортировать его в VSCode с помощью загруженного надстройки glTF Tools. Перейдите в раздел "Вид -> Палитра команд", начните вводить "glTF" в палитре команд и выберите "glTF: Импорт из glb", после чего появится средство выбора файлов, с помощью которого вы сможете импортировать GLB-файл.

После открытия модели glTF в окне редактора должен появиться json. Вы также можете просмотреть модель в динамическом 3D-средстве просмотра с помощью , щелкнув правой кнопкой мыши имя файла и выбрав в контекстном меню ярлык команды "glTF: Предварительная версия 3D-модели".

Добавление триггеров

Триггеры анимации добавляются в JSON модели glTF с помощью расширения "Карта анимации". Расширение карты анимации открыто задокументировано здесь, на GitHub (ПРИМЕЧАНИЕ: ЭТО ЧЕРНОВИК РАСШИРЕНИЯ). Чтобы добавить расширение в модель, просто прокрутите файл GLTF в редакторе и добавьте в файл блоки extensionsUsed и Extensions , если они еще не существуют. В разделе extensionsUsed вы добавите ссылку на расширение "EXT_animation_map", а в блоке "расширения" — сопоставления с анимациями в модели.

Как указано в спецификации , вы определяете, что запускает анимацию, используя "семантику" строку в списке "анимаций", который представляет собой массив индексов анимации. В приведенном ниже примере мы указали анимацию для воспроизведения, когда пользователь смотрит на объект :

  "extensionsUsed": [
    "EXT_animation_map"
  ],
  "extensions" : {
      "EXT_animation_map" : {
            "bindings": [
                {
                    "semantic": "GAZE",
                    "animations": [0]
                }
            ]
      }
  }

Следующая семантика триггеров анимации поддерживается Windows Mixed Reality home.

  • "ALWAYS": анимация постоянно циклов
  • "HELD": циклически выполняется в течение всего времени захвата объекта.
  • "GAZE": циклическое выполнение при просмотре объекта
  • "PROXIMITY": циклическое, когда средство просмотра находится рядом с объектом
  • "POINTING": цикл, когда пользователь указывает на объект

Сохранение и экспорт

После внесения изменений в модель glTF ее можно сохранить непосредственно как glTF. Вы также можете щелкнуть правой кнопкой мыши имя файла в редакторе и выбрать "glTF: Экспорт в GLB (двоичный файл)", чтобы экспортировать GLB-файл.

Ограничения

Анимация не может быть длиннее 20 минут и не может содержать более 36 000 ключевых кадров (20 минут при 30 кадрах в секунду). Кроме того, при использовании анимации на основе цели морфов не превышают 8192 целевых вершин. Превышение этих значений приведет к тому, что анимированный ресурс не будет поддерживаться в Windows Mixed Reality дома.

Компонент Максимум
Duration 20 минут
Опорные кадры 36 000
Трансформация целевых вершин 8192

Примечания о реализации glTF

Windows MR не поддерживает перевернуть геометрию с использованием отрицательных шкал. Геометрия с отрицательными шкалами, скорее всего, приведет к созданию визуальных артефактов.

Ресурс glTF ДОЛЖЕН указывать на сцену по умолчанию с помощью атрибута сцены, который будет отображаться с помощью Windows MR. Кроме того, загрузчику Windows MR glTF до обновления Windows 10 за апрель 2018г. требуются методы доступа:

  • Должны иметь минимальное и максимальное значения.
  • Тип SCALAR должен быть componentType UNSIGNED_SHORT (5123) или UNSIGNED_INT (5125).
  • Тип VEC2 и VEC3 должен иметь тип componentType FLOAT (5126).

Следующие свойства материала используются в спецификации core glTF 2.0, но не являются обязательными:

  • baseColorFactor, metallicFactor, roughnessFactor
  • baseColorTexture: должен указывать на текстуру, хранящуюся в dds.
  • emissiveTexture: должен указывать на текстуру, хранящуюся в dds.
  • emissiveFactor
  • alphaMode

Следующие свойства материала игнорируются в основной спецификации:

  • Все несколько UV
  • metalRoughnessTexture: вместо этого следует использовать оптимизированную для Майкрософт упаковку текстур, определенную ниже.
  • normalTexture: вместо этого следует использовать оптимизированную для Майкрософт упаковку текстур, определенную ниже.
  • normalScale
  • occlusionTexture. Вместо этого следует использовать оптимизированную для Майкрософт упаковку текстур, определенную ниже.
  • occlusionStrength

Windows MR не поддерживает линии и точки в примитивном режиме.

Поддерживается только один атрибут вершины UV.

Дополнительные ресурсы

См. также раздел