Использование беспроводного подключения смартфона для 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!

Подключаем ZFS over iSCSI на Oracle Linux 8 (CentOS) в Proxmox

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