Восстановление бинокулярного зрения с использование VR-технологий. (Часть 3)

     В проведших статьях были затронуты основные способы диагностики и восстановления бинокулярного зрения. Данная часть посвящена реализации тестирования стерео зрение с использованием игрового движка Unity и плагинов open XR, shader graph.

    Описание 4х точечного теста   

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

    Четыре кружка — бинокулярное зрение. Если во время теста человек видит четыре круга, это всегда означает нормальное бинокулярное зрение. Однако те цвета, в которые они окрашены, указывают на отсутствие или наличие ведущего глаза.  Два красных и два зеленых объекта означают, что ведущим глазом является правый.  Если человек видит один красный и три зеленых, то ведущий — левый глаз.  Один желтый, один красный и два зеленых объекта обозначают, что ведущий зрительный орган отсутствует. Если наблюдатель видит фигур меньше четырех, то у него монокулярное зрение, а если больше  четырех  то одновременное зрение. 

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

    Реализация 

    Для реализации данного теста, был выбран игровой движок Unity. Для разделения итоговой сцены на изображения предназначенные для левого и правого глаза  был реализован шейдер в Shader Graph, принимающий на вход информацию о цвете, а также информацию на какой глаз транслировать изображение. В зависимости от входных данных изменяется альфа канал изображения для определенного глаза.  С примером работы можно ознакомиться на рисунке 1. 
Для определение текущего глаза рендеренга изображения (изображение для каждого глаза рендериться отдельно) используется встроенная переменная unity_StereoEyeIndex. Значение unity_StereoEyeIndex равно 0 для рендеринга для левого глаза и 1 для рендеринга для правого глаза.
 

         Рисунке 1. Пример работы приложения (левая и правая половина экрана это изображение левого и правого глаза соответственно)  
 

    Использование шейдера, вместо двух камер, как в прошлом проекте, было связано с использованием openXR. Поскольку в обновленной версии данного плагина, у него осталось лишь одна камера, но с достаточно гибким рендерингом. В проекте используется  однопроходный стереофонический VR-рендеринг (Рисунок 2), в отличие от обычного VR рендеринг( Рисунок  3), однопроходное значительно увеличивает производительность. 
                                Рис.2 Однопроходный стереофонический VR-рендеринг
 

    Рис.3 Обычный VR-рендеринг

Итог

Таким образом, было разработана сцена тестирование по 4х точечному тесту в VR, а также созданы шейдеры для последующей удобной работы над реализацией упражнений для развития стерео зрения.