В проведших статьях были затронуты основные способы диагностики и восстановления бинокулярного зрения. Данная часть посвящена реализации тестирования стерео зрение с использованием игрового движка 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, а также созданы шейдеры для последующей удобной работы над реализацией упражнений для развития стерео зрения.