Использование беспроводного подключения смартфона для VR на PC c видеокартами NVIDIA (используем смартфон вместо Oculus Rift, HTC Vivo,..)

Современные смартфоны можно вставить в очки за 1 т.р. и получить виртуальную реальность (VR). Но проблема в том, что эта VR мобильная - работают только мобильные игры.

А что вот если бы можно было играть на PC, а видео передавать по Wi-Fi на смартфон? Тогда бы можно было получить функционал очков за 40 т.р. заплатив 1 т.р. за пластиковую коробку для очков?

Кратко: да, это возможно и я расскажу как.

Технические требования

1. Видеокарта NVIDIA с поддержкой GameStream (проверялось на nvidia GTX 1060) и 3D Vision.
2. Смартфон с разрешением FullHD или большим.
3. Wi-Fi с возможностью подключения смартфона к ПК через сеть.

Общие принципы

Нам надо добиться, чтобы игра показывалась Side by Side (SBS), т.е. кадр слева и кадр справа на экране монитора.

Этот экран монитора мы захватываем в видеопоток и отправляем на смартфон.

На смартфоне декодируем видео и отображаем на весь экран.

Управлять будем с клавиатуры сидя за ПК.

Отображение игры в SBS


1.1 Устанавливаем драйвера NVIDIA с GeForce Experience.

1.2 Заходим в панель управления драйвером и включаем NVIDIA 3D Vision в режиме анаглифного видео (драйвер NVIDIA не поддерживает SBS).

1.3 Скачиваем программу 3DMigoto последней версии https://github.com/bo3b/3Dmigoto/releases и распаковываем ее. Это программа патчит DirectX таким образом, чтобы вместо анаглифного видео получить SBS (т.е. исправляет работу драйвера NVIDIA).

1.4 В распакованной папке лежит куча файлов для x64 и x86 игр (программ), написанных с использованием DirectX. В зависимости от того под какую архитектуру написана игра, надо скопировать файлы в ту папку с игрой, в которой находится запускающий игру EXE-файл. Windows увидит эти DLL и загрузит игру с ними вместо системных.

1.5 Открыть файл d3dx.ini из папки 3DMigoto и раскомментировать строчку "include = ShaderFixes\3dvision2sbs.ini" (удалить символ ";" в начале строки) в секции [Include].

1.6 В секции [Constants] файла d3dx.ini заменить "x7 = 0" на "x7 = 2" для активации SBS.

1.7 Запустить игру.

1.8 Нажать Ctrl+T для активации NVIDIA 3D Vision.

Если все сделали правильно, то вместо анаглифного стерео будет SBS.

Кодирование видео и отправка на смартфон

В современных видеокартах уже встроены аппаратные кодировщики видео, в том числе в NVIDIA. Они почти не нагружают центральный процессор т.к. используют встроенный в видеокарту аппаратный кодировщик видео.

Есть такое и для NVIDIA (Shadow Play). В нашем случае надо просто поставить на смартфон программу Moonlight https://moonlight-stream.com.

Программа Moonlight при запуске спросит к какому компьютеру подключиться. Укажите IP-адрес вашего ПК и она сама сможет подключаться к ПК и показывать экран с него с низкой задержкой.

Фактически программа получает видео с ПК и больше ничего не умеет, но больше и не надо, т.к. управлять мы собираемся с самого ПК.

Если все сделано правильно, на смартфоне мы увидим SBS видео как клон экрана монитора. Остается только вставить смартфон в очки.

Тестирование

Проверка была выполнена в F.E.A.R. 3 (не поддерживает SBS) и в DOOM 3 BFG Edition (нативно поддерживает SBS).

В F.E.A.R. 3 все в принципе работает кроме оружия. Почему-то в правом кадре оно справа, а в левом слево (а должно быть чуть смещенным справа) из-за чего в момент прицеливания оружие раздваивается и прицелиться не удается. В остальном все нормально.

В DOOM 3 BFG стерео работает хорошо, но "укачивает" и иногда передача по Wi-Fi начинает подлагивать.

Заключение

Задача технически выполнена, можно играть сидя за ПК в игры в режиме виртуальной реальности на смартфоне.

Конечно, аналогичным образом можно запустить с ПК 3D-видео и отправиться на диван смотреть его в очках.

Подход в целом достаточно универсален, но надо иметь в виду, что возможны проблемы как с низкой скоростью работы Wi-Fi, так и с неполной совместимостью игр с 3Dmigoto (в частности, игра должна быть на DirectX). Ну и расстройство вестибулярного аппарата.

Если вы хотите смотреть только видео в SBS, запущенное с ПК, то 3Dmigoto и NVIDIA 3D Vision вам не нужны, просто установите Moonlight на смартфон.

Комментарии

Популярные сообщения из этого блога

Архитектура катастрофоустойчивого сервиса

Обзор почтового клиента Pronto Pro!

Использование USB 3.0 UVC платы захвата ezcap 261 для захвата HDMI видео в FullHD 60 fps.