Давным-давно, ... в общем появился у Sony PlayStation шлем VR. Штука оказалась интересная и позволяла не только играть в vr-игры, но и смотреть фильмы.
Правда, сразу выяснились некоторые "тонкости": нормальное использование возможно было только при использовании с Sony PlayStation (что, в общем-то, очевидно) и через специализированную программу Rad (бывший LittlStar). Причём особого разнообразия программ-проигрывателей не было, использование же программы Rad требовало оплаты подписки. Сначала всё было хорошо: и подписка платилась, и кино смотрелось. Потом появились санкции и, вдруг, оказалось, что заплатить из России нельзя. И вообще вы ничего не можете, "... until those restrictions and sanctions have been lifted ...".
Конечно, такое отношение не может радовать пользователей. С другой стороны, это является хорошим поводом постучать по клавиатуре и сделать немного импортозамещения.
Чтобы шлем работал, необходимо было отвязать функцию просмотра фильмов от специализированного / платного / не-российского программного обеспечения. И ниже описан процесс такого "отвязывания".
Для мнеленьчитать результат здесь: https://github.com/evgenykislov/psvr_player.
Во-первых, определимся с тем, что нам нужно:
просмотр 3D фильмов: в режиме полусферы и в режиме плоского экрана;
использование программ с открытым исходным кодом. Желательно вообще бесплатных;
поддержка Linux;
функционал плейера (перемотки, паузы, стоп).
Что не требовалось:
вывод звука на наушники шлема.
Поиск по интернету показал, что есть пара жизнеспособных подходов:
использование Steam, протокола SteamVR и драйвера OpenPSVR;
отдельный проигрыватель с нужными функциями.
После короткого исследования первый вариант отвалился: использование драйверов под SteamVR в Linux-е это слегка нетривиально. Кроме того, привязываешься не только к Steam, но к проигрывателю из Steam (это уже плохо: сегодня он есть, завтра его нет или требует подписки).
Со вторым вариантом тоже всё не сахарно: много проигрывателей в стадии заготовок: умеем выводить картинку и иногда считывать сенсоры.
В результате выбор пал на проигрыватель psvr от Florian Märkl, который и был подвергнут доработке. Проигрыватель обладал рядом "плюшек":
реализован функционал проигрывания видеофайлов с использованием библиотеки vlc;
вывод изображения "на сферу" с использованием шейдеров;
отслеживание положения шлема и корректировка изображения;
проигрыватель заявлен как кросс-платформенный: Windows, Linux;
для использования шлема не требовалась сама Sony PlayStation;
код открыт и бесплатен (лицензия GPL3).
В общем, много чего уже было сделано. Хотя и осталось тоже достаточно:
запуск без прав root (актуально для Linux);
включение режима VR;
добавить клавиатурные комбинации и вывести дополнительную информацию;
добавить плоский вид: для просмотра "обычных" 3D фильмов;
реализовать компенсацию дисторсии;
реализовать компенсацию хроматической абберации.
В следующих статьях рассмотрим доработки подробнее.
Изображение взято из открытого источника.