Несмотря на то, что USDZ Quicklook существует уже некоторое время, по-прежнему очевидно, что отработка независимого от платформы рабочего процесса для дополненной реальности — это процесс, который постоянно развивается. Новый ландшафт ARKit3, Reality Composer и последний Depth API для Google заставили переосмыслить процессы с точки зрения создания контента.

Развивающееся пространство дополненной реальности

В Taylor James Interactive мы часто беседуем с потенциальными клиентами и брендами о потенциале интерактивных технологий. Большая часть наших исследований и разработок в этой области была обусловлена ​​необходимостью предоставления значимых примеров потенциального контента. Просто недостаточно говорить об AR — как о визуальном носителе, его нужно еще и показать. Фреймворк USDZ предоставил нам упреждающий способ продемонстрировать возможности дополненной реальности более широкой аудитории.

Мы постоянно пытаемся повысить уровень качества нашей работы и обеспечить более богатый интерактивный опыт. Чтобы сделать это, нам нужно изучить, как традиционные навыки компьютерной графики сочетаются с рабочими процессами шейдеров, методами оснастки и форматами моделей. Кроме того, нам нужно, чтобы контент работал на нескольких платформах и выглядел одинаково. Мы следуем рабочему процессу, который мы разработали с момента запуска ARKit3, поэтому мы расскажем, почему он отличается от предыдущего, и, что более важно, преимущества принятия подхода, ориентированного на GLB.

Обновление ArKit

USD (сокращение от Universal Scene Description) — это модель с открытым исходным кодом и формат ресурсов, разработанный Pixar, а затем формат, который Apple сделала ключевым для своей системы дополненной реальности Quicklook. Модели упакованы в формат USDZ, который представляет собой заархивированный архив двоичных файлов USD и файлов текстур PBR.

Это рабочий процесс того, как мы будем компилировать актив USDZ -

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

ArKit3 и Usdzconvert

Apple объявила о некоторых интересных разработках в области дополненной реальности на WWDC 2019 с запуском Reality Composer. Это можно условно назвать Quicklook на стероидах — более сложная платформа для предоставления более интерактивных впечатлений. Наряду с этим потребность в создании анимации будет только усиливаться, чтобы люди могли создавать более привлекательный контент.

ARCore теперь обеспечивает согласованный опыт для Android

Когда мы впервые рассматривали это более года назад, Android не рассматривался. Количество устройств, на которых он мог работать, было ограничено и, как правило, составляло небольшую часть общей пользовательской базы. Мы видим тонкие различия в рендеринге и обнаружении плоскостей, возможность обеспечить поддержку AR как iOS, так и Android — это то, что мы всегда стремились выяснить.



Google указывает формат файла GLTF/GLB для использования в ARcore.

Формат GLTF имеет сериализованный или двоичный формат. GLTF — это обычный текст с активами во вторичном файле. GLB — это бинарная версия, в которой все содержится в одном файле.

Главное, что выделялось в новой версии конвертера USDZ, это возможность конвертировать из GLTF в USDZ. Потенциально у нас теперь был паритет между моделями как для iOS, так и для Android. Теоретически масштабы единиц должны быть одинаковыми, и мы будем настраивать один экспорт и перекодирование.

So if you make the GLB, everything else comes for free. 

Все, что нужно в этом сценарии, — это способ экспорта затененной PBR-анимации с потенциальной текстурой из 3D в GLB или GLTF.

Вот что важно — нам нужен надежный способ создания анимированных моделей с затенением PBR для передачи в экспорт GLTF.

Вещественный художник

Мы используем Substance Painter для нашего рабочего процесса PBR. Это быстро и дает отличные результаты. Substance теперь даже предоставляет предварительные настройки экспорта для GLTF/GLB и USDZ, так что это решение для статических ресурсов AR, которое можно сделать одним щелчком мыши.

Однако нам пришлось переосмыслить анимационные ресурсы. Нам нужен был способ перепривязать карты шейдеров PBR к сфальсифицированному активу в выбранном нами DCC, 3dsMax. Мы используем различное программное обеспечение, включая Maya и Houdini, но в данном случае мы разработали его для 3dsMax, в основном для необходимого рабочего процесса экспортера GLTF.

Рабочий процесс 3dsMax в GLB

Основная причина, по которой нам нужна перестройка карт PBR в 3dsMax, заключается в том, что Substance Painter импортирует и экспортирует только статическую геометрию. Поэтому, если вы хотите иметь анимацию при экспорте AR, ее нужно будет воссоздать в DCC с текстурами PBR и экспортировать.

Это также согласуется с классическим конвейером создания ресурсов CGI — вы можете передать этап текстуры другому художнику, так что это позволит при необходимости выполнять риггинг и анимацию одновременно. Если вы хотите использовать модель для WebGL, вы можете захотеть программно воздействовать на фальсифицированные элементы, поэтому для этого вам дополнительно потребуется указать фальсифицированную иерархию для экспорта.

Чтобы совершить путешествие в мир GLB, мы обнаружили, что можем использовать Babylon Exporter for 3dsMax. Он имеет готовые двоичные файлы, и вы довольно быстро начинаете работу. Это отличная часть программного обеспечения с открытым исходным кодом — документы удивительно подробные и подробно описывают, как настроить физический материал 3dsMax для правильного экспорта в виде шейдера GLTF/GLB PBR для реального времени.

Приведенные выше привязки текстур создадут шаблон для экспортера Babylon для создания шейдера PBR в реальном времени при экспорте. Если вы хотите подключить шейдеры к физическому материалу, вам нужно создать шейдер для каждого набора текстур и подключить до 5 текстурных карт для каждого набора. Мы выбрали маршрут физического шейдера, так как он лучше реализует использование карт окклюзии, бампа и излучения.

Сценарий перестроения шейдера

С моделями, содержащими несколько наборов текстур, процесс восстановления шейдеров после экспорта окончательных карт из Substance может занять много времени. Мы написали простой Maxscript, который рассортирует карты по каждому набору текстур и создаст физические материалы, которые нужны экспортеру, на основе приведенной выше спецификации экспортера Babylon.

Это определенно набор инструментов, к которому добавляются — больше похоже на швейцарский армейский нож процессов GLTF. Мы добавили некоторые общие инструменты для облегчения предэкспорта 3D-ресурсов.

  • Правильная настройка модификаторов кожи для взвешивания вершин
  • Создание помощников Neutral TM Root
  • Физические материалы по умолчанию для быстрого затенения цвета
  • Эталонный объект одним щелчком мыши для проверки реального размера объекта перед экспортом.

Но, в конечном счете, самая большая экономия времени — это воссоздание шейдеров PBR из Substance, готовых к экспорту анимации.

Вот демонстрация этого в действии — этот анимированный глобус был частью дополненной реальности, которую мы сделали, и ее можно было активировать с карты на медицинском мероприятии. Вы можете увидеть, как материалы настраиваются автоматически из папки и добавляются в редактор Slate.

У нас есть этот скрипт для загрузки, поэтому не стесняйтесь загружать этот репозиторий и просматривать некоторые другие инструменты, которые мы добавили, чтобы помочь вам приступить к созданию активов.

Масштаб Соображения

С AR вам нужно убедиться, что весы достаточно хороши, прежде чем начать. Мы работаем в сантиметрах в 3dsMax, поэтому хотели убедиться, что у нас есть корреляция 1:1 с нашими настройками сцены и экспортированной геометрией.

Наша студия по умолчанию работает в сантиметрах в качестве базовой шкалы системных единиц. (В 3ds Max есть концепция единиц отображения, которые могут быть любыми, но системные единицы определяют фактический масштаб экспорта). Лучший рабочий процесс, который мы обнаружили, заключался в работе в сантиметрах в 3dsMax, а затем в экспорте через Babylon с коэффициентом масштабирования 0,01. . Это позволило нам сохранить масштаб нашей студийной рабочей единицы и экспортировать ее с предсказуемыми результатами.

Последний рубеж USDZ

Получив модель GLB, довольно просто преобразовать ее с помощью usdzconvert в файл USDZ. Если вы уже создавали файлы USDZ с помощью командной строки, вы должны были использовать usdz_converter. Важно отметить первоначальную разницу, поскольку процесс для ArKit3 изменился. (Чтобы получить доступ к улучшенному набору инструментов, вам необходимо загрузить последние привязки USD python).

Преимущество этого рабочего процесса очевидно -

  • Надежный экспорт анимации, как трансформируемых, так и скинированных сеток.
  • Отлично выглядящие шейдеры без необходимости повторной привязки в командной строке
  • Используйте предварительно скомпилированные привязки USD для Mac без необходимости настраивать специальную среду Python или создавать USD из исходного кода.

Запуск файла usdz.command настраивает среду для экспорта USDZ. Просто дважды щелкните файл, и он зарегистрирует правильные переменные в пути Python.

One thing to note, you can additionally download the FBX SDK and change the path location in the command file. This adds FBX support to USDZ export, and whilst this was missing before, we prefer the GLB-USDZ workflow.

Я понимаю, почему Apple скорректировала рабочий процесс, это делает весь процесс намного проще. Мы думаем, что использование нашего рабочего процесса GLB в USDZ немного сложнее в настройке и понимании, но дает вам возможность создавать действительно отличный анимированный контент как для Android, так и для iOS.

usdzconvert tag-globe.glb

Это запишет одноименный файл USDZ в папку, где находится GLB. В конечном итоге вы получите двухплатформенную модель AR, которая идентична, а также может быть использована в WebGL, который использует GLB/GLTF в качестве предпочтительного формата сетки.

Неизбежно, рендереры в ARCore и ARKit будут обрабатывать вещи по-разному — разные устройства будут получать плоскую поверхность с разной скоростью, а рендеринг будет отличаться с точки зрения разрешения оценки освещения.

Отличительной особенностью Model Viewer от ARCore является то, что он будет работать в любом браузере, поэтому вы можете настроить его для обслуживания модели USDZ на iOS (используя свойство ‹ios-src›), а GLB на Android с помощью стандартного тега ‹src›. Вы также получите 3D-просмотрщик, а не миниатюру.

Если вы хотите инвестировать в более сложный анимированный контент в режиме реального времени, мы считаем, что внедрение рабочего процесса GLB — это валюта, которая вам понадобится.