Недавно Facebook выпустил экспериментальное Passthrough API для Oculus Quest 2, позволяющее разработчикам создавать приложения дополненной реальности для этой гарнитуры виртуальной реальности. Многие разработчики уже начали создавать такие приложения, и, конечно, они хотят поделиться видео в социальных сетях, но несколько месяцев назад Facebook заблокировал все возможности записи видео в режиме Passthrough. Как же записать такое видео? Очень просто... Позвольте мне рассказать вам всю историю.
Facebook блокирует passthrough... возможно
Несколько месяцев назад я жаловался на то, что Facebook блокирует все возможные способы записи видео с гарнитуры Quest: если вы попытаетесь записать содержимое окружения Quest Home с активированным режимом passthrough, вы увидите черный цвет вместо изображения passthrough при записи через все функции, предлагаемые Quest (фотосъемка, запись видео, трансляция, потоковое вещание и т. д...) и полностью черное видео при захвате экрана через низкоуровневый инструмент ADB и все программы, которые его используют (SideQuest, Strcpy, Vysor и т. д...).
Я прокомментировал это решение как довольно абсурдное, потому что ADB — это специальный инструмент с высокими привилегиями, который должен запускаться при подключенной к компьютеру гарнитуре ( с использованием провода или через Wi-Fi), поэтому он не может быть использован для осуществления любого вида атаки на частную жизнь пользователя, и Facebook должен позволить людям использовать его для записи passthrough-приложений. Я также предсказывал, что при распространении passthrough AR это станет катастрофой, потому что никто не сможет записать свое собственное приложение и поделиться им с сообществом, что сделает невозможным для каждого разработчика показать свои результаты и вдохновить других разработчиков.
В самом деле, когда первое passthrough AR приложение для Quest, Cactus Cowboy AR Passthrough Demo, было выпущено на SideQuest, Upload VR рассказали о нем, но не смогли поделиться какими-либо видеоматериалами. То же самое произошло и с первым руководством по Passthrough AR APIs от Дилмера Валециллоса, которому пришлось записывать видео с Oculus MRC, чтобы продемонстрировать результат первого приложения, которое он создал с помощью этих API. Однако позже я начал встречать видео, снятые в AR-приложениях, созданных на базе Quest, и был весьма озадачен, как такое могло произойти. Несколько недель назад при попытке записать на видео мой Passthrough Home были использованы все возможные способы (я имею в виду, действительно ВСЕ), и я не нашел никакого решения... Так как же эти разработчики смогли так легко записать кадры из своих AR-приложений?
Я связался с Марчем Шраммом, разработчиком Gravity Lab, который только что поделился подобным видео, и спросил его, как он это сделал, какое колдовство он использовал для записи этого видео, потому что когда Facebook заблокировал passsthrough запись, я перепробовал все возможные решения, чтобы заставить ее работать. Он лишь ответил, что использовал scrcpy, и что этот инструмент очень хорошо подходит для поставленной цели.
Scrcpy — это инструмент с открытым исходным кодом (использующий ADB), который также используется в SideQuest для зеркалирования изображения с вашей гарнитуры, и именно так я привык записывать AR контент на Quest до блокировки Facebook, однако впоследствии этот способ перестал работать после того как Facebook запретил пользователям записывать passthrough. После разговора с Марком я попробовал повторить попытку и убедился, что действительно смог без проблем записать AR приложение на Quest. Самое простое решение, в конце концов, оказалось тем, которое действительно работает... но как такое возможно?
Выборочная блокировка Facebook
После различных экспериментов я понял, что Facebook немного изменил механизм записи passthrough после того, как выпустил API passthrough. Теперь происходит следующее:
- Если вы попытаетесь записать свое окружение Passthrough Home (или другие виды системных экранов, использующих AR) с помощью инструментов, относящихся к Oculus (например, сделать снимок, записать видео, кастинг, стриминг), вы четко видите виртуальные элементы, но все области с passthrough видением становятся черными
- Если вы попытаетесь записать домашнюю среду Passthrough (или другой вид системных экранов, использующих AR) с помощью инструментов, относящихся к ADB (например, scrcpy), вы просто увидите все черным. Вы даже не увидите виртуальный контент, а только черный экран
- Если вы пытаетесь записать приложение, используя AR Passthrough APIs через инструменты, используемые Oculus (например, съемка, запись видео, кастинг, потоковая передача), вы прекрасно увидите виртуальные элементы, но все области с прозрачным фоном станут черными
- Если вы попробуете записать приложение, используя AR Passthrough APIs через инструменты, использующие ADB, вы увидите непосредственно то, что отображается пользователю, то есть виртуальные элементы поверх реального фона. Это также относится к приложениям с частичным AR-контентом, таким как Horizon Workrooms, позволяющим видеть клавиатуру в дополненной реальности
Короче говоря: Facebook разблокировал возможность записи AR приложений через ADB, но он все еще держит ее заблокированной для системных меню в AR. Это означает, что все разработчики могут легко записывать свои приложения с помощью scrcpy или аналогичных систем!
Как записать изображение AR приложения на Oculus Quest 2?
Недавно выяснилось, что можно использовать все инструменты на базе ADB для захвата видео AR приложения, запущенного на вашем Oculus Quest. Это означает, что можно напрямую использовать команду «adb screenrecord» для записи видеофайла того, что отображается внутри гарнитуры, или для потоковой передачи его непосредственно на ПК. Чтобы не углубляться в командную строку, я просто расскажу вам, как выполнить потоковую передачу с помощью SideQuest (который, я думаю, установлен у каждого из нас), который внутри использует scrcpy, а тот в свою очередь использует ADB (по сути, это матрёшка). Таким образом, всего два клика — и все готово, и не нужно возиться с кучей строк командной строки, как хакеры в кинофильмах.
Итак, чтобы записать геймплей AR игры на Quest, вам нужно всего лишь:
- Установить и настроить SideQuest, если вы еще не сделали этого.
- Подключить устройство Oculus Quest к компьютеру с помощью USB-кабеля, но без активации Oculus Link
- Откройте SideQuest и подождите, пока он соединится с устройством Quest
- Если хотите, нажмите на иконку Wi-fi, чтобы подключиться по Wi-fi к устройству Quest, так что вы будете без связи во время записи видео. Я бы посоветовал делать это только в том случае, если у вас отличное Wi-fi соединение, иначе качество получаемого видео может ухудшиться
- Нажмите на иконку стриминга SideQuest в меню, которое находится в правом верхнем углу вашего экрана
- Во всплывающем окне выберите «Quest 2 Crop», а затем «Start Stream»
- В этот момент на вашем экране должно появиться окно, показывающее AR контент гарнитуры
- Запишите содержимое экрана с помощью вашего любимого приложения: Я бы посоветовал вам использовать Open Broadcaster Software (OBS) или Xbox Game Bar для Windows 10 (вы вызываете его, нажав Win + G)
Вот и все... легко и просто. Конечно, неудобно, что нельзя записывать все прямо с устройства, как это делается в приложениях VR, но эта процедура не такая уж сложная, и вы быстро к ней привыкнете.
Альтернативные методы
Что делать, если описанный выше метод не работает или вы хотите записать вместо этого среду Passthrough Home? Я нашел еще две альтернативные возможности:
- Используйте смартфон или веб-камеру для записи содержимого гарнитуры. Убедитесь, что вы правильно установили значение экспозиции камеры, чтобы получить как можно меньше видимых горизонтальных полос. При использовании этого метода полученное видео обычно имеет некоторые артефакты (движущиеся горизонтальные полосы, размытие и т. д...), а поскольку камера находится внутри гарнитуры, вы не можете фактически использовать ее, поэтому сложно показать взаимодействие в AR. Этот метод пригодится, только если вы хотите сделать небольшой GIF о каком-то AR окне, например, чтобы снять короткое видео о сцене установки Guardian.
- Используйте смартфон, закрепленный перед вашим устройством, и компьютер для смешивания записи смартфона и гарнитуры, чтобы получить некоторое подобие видео смешанной реальности. Преимущество этого метода заключается в том, что с помощью Quest можно записывать даже цветные AR-видео, а недостатки заключаются в том, что он слишком громоздкий и не позволяет правильно записывать виртуальные элементы, которые имеют черный цвет. Идея принадлежит Ави Барелю, и вы можете найти его отличное руководство по этому вопросу здесь.
Насколько мне известно, альтернативных методов записи AR на Quest не существует... конечно, если вы знаете другой метод, дайте мне знать, и я добавлю его в этот список, чтобы помочь другим разработчикам!
На этом я заканчиваю это руководство... Надеюсь, оно может быть полезным для всех вас, создателей контента XR, чтобы поделиться своими творениями с остальным миром! Если вам понравилось, не могли бы вы поделиться им с вашими сообществами в социальных сетях, чтобы он мог дойти до других заинтересованных разработчиков? Спасибо!