Я верю, что программисты могут работать более продуктивно в виртуальной реальности (ВР). Почему? Во-первых, программист сможет работать, будучи окружённым трёхмерной средой разработки вместо двумерных мониторов. Во-вторых, взаимодействие с ВР более естественно и свободно, чем работа с мышью и клавиатурой.
Я опишу преимущества ВР, два уже существующих прототипа устройств, которые могут помочь программистам, и что ожидает ВР в области программирования.
Преимущества ВР
Если вы не знакомы с ВР: это большой шаг к тому, чтобы люди могли взаимодействовать с цифровым миром так, как это привычно в физическом мире. Это взаимодействие гораздо полнее использует возможности человеческого тела, что в принципе может привести к более продуктивной работе, меньшим затратам на обучение и увеличению удовлетворения пользователя.
Глубина
Стереоскопическая картинка – это техника, которая используется в ВР-очках типа Oculus Rift, когда для каждого из глаз демонстрируются немного отличные картинки.
Таким образом, человек ощущает глубину виртуального мира, прямо как в реальном. Глубина задействует пространственное
К примеру, инструмент Data Mountain был создан для хранения веб-закладок на наклонной плоскости. Создатели посчитали, что добавляя глубину, они задействуют пространственное
Движения тела
Целый набор устройств умеет считывать движения тела. Это даёт больше шансов на самовыражение, в результате чего появляются новые возможности.
Очки вроде Oculus Rift считывают повороты и положение головы. Leap Motion Controller – небольшое устройств, считывающее движения рук и пальцев. Камера Kinect распознаёт движения ног, рук и туловища. Всенаправленная беговая дорожка Virtuix Omni позволяет транслировать ваши движения в движения игрового аватара. Устройство Cyberith Virtualizer также позволяет делать прыжки и приседания.
Недавно был проведён эксперимент по управлению компьютером через
Внеся в общение с компьютером движения тела, пользователи получают больше свободы в этом общении. И, как я опишу дальше, эта дополнительная свобода приводит к очень практическим выгодам – таким, как возрастающая производительность.
Пластичность виртуального окружения
Одна из причин полезности ВР – их легче изменить, чем физическое окружение. А значит, задачи в ВР можно будет выполнить быстрее и дешевле.
К примеру, американские солдаты проходят обучение в симуляторе боя. Солдаты могут в один момент проходить тренировку в горах, а в следующий – попадать в пустыню. ВР позволяет сделать это быстро и дёшево.
ВР комбинирует лучшие свойства физического и виртуального миров, и предоставляет новое средство для соединения их в один.
Применения
Вот несколько примеров существующих прототипов ВР, позволяющих программировать и проверять код, демонстрирующих преимущества ВР.
RiftSketch — «живой» кодинг
RiftSketch – среда для программирования в ВР, позволяющая описывать трёхмерную сцену в Three.js
Дерево создаётся рекурсивным алгоритмом, который программируется пользователем в «плавающем» в виртуальном пространстве редакторе. Птички – это твиты, которые поступили через Twitter API.
«Живой кодинг», который описывает в своей статье Стивен Танимото, это среда разработки, позволяющая редактировать программу во время её выполнения. Традиционный цикл разработки включает 4 фазы: редактирование, компиляция, линковка, запуск. В живом кодинге есть только одна фаза. Программа постоянно выполняется даже во время редактирования.
Проект позволяет быстро наблюдать изменения, вносимые в код. Также утверждается, что разработчику проще увидеть, где он допустил ошибку.
RiftSketch предлагает пользователю простой текстовый редактор, летающий перед ним в пустой ВР. Когда программист начинает вводить код, виртуальный мир обновляется и демонстрирует трёхмерную сцену, зависящую от кода. Сцену можно анимировать через функцию обратного вызова. Состояние сцены можно менять, задавая поведение объектов. Просмотр её через погружение в ВР заставляет пользователя почувствовать себя находящимся внутри сцены.
Для облегчения работы с клавиатурой веб-камера, закреплённая на устройстве, передаёт картинку из реального мира, которая накладывается на виртуальный.
Кроме этого, проект предлагает горячие клавиши и другие системы для ввода информации, позволяющие быстро менять текст программы. При помощи обработки жестов достигается большая скорость редактирования и изменения параметров программы. Например, жестами можно быстро менять значение цифрового параметра, который может обозначать что угодно – от координат и угла поворота, до компонентов RGB или скорости объекта.
Пример использования
Представьте, что космический аппарат только что приземлился на поверхность кометы. После 10 лет полёта зонд оказывается в такой позиции, что его не достигает солнечный свет. У вас есть 24 часа до того, как его батареи полностью разрядятся. Вам нужно поменять программу зонда так, чтобы он смог поменять своё положение. Сопровождающий его спутник собрал всю необходимую информацию о поверхности, на которую приземлился зонд.
Вы создаёте ВР на основании полученной информации и изучаете окружение при помощи такого инструмента, как RiftSketch. Вы перебираете все возможности, изменяя программу и наблюдая за тем, как работает симуляция. Вы обходите в ВР вокруг вашего зонда после каждой попытки, чтобы убедиться, что он твёрдо встал на опоры и занял пригодную для дальнейшей работы позицию. Наконец, после удовлетворительной симуляции вы передаёте вашу программу на проверку.
Immersion — проверка кода
Immersion представляет методы как фрагменты кода и показывает группы из фрагментов в виде кучек на полу. Кучку можно развернуть в трёхмерное кольцо. Возможность семантического увеличения фрагментов делает код читаемым, даже когда части кода получаются довольно мелкими.
Проверяющий читает код для смены положения зонда. Слева находится кольцо из фрагментов кода. Модель кометы и пути облёта находятся слева вверху. Справа вверху показаны подробные данные об изменениях кода.
Проверяющий изначально видит текущий фрагмент кода в центре экрана, в то время, как другие связанные с ним фрагменты лежат в кучах на полу. Ориентируясь в ВР, проверяющий оценивает степень отношения кучек фрагментов к текущему по тому, как близко они расположены, и по их размеру.
Immersion делит пол на секции, основываясь на пакетах программы, и выделяет их цветом, показывающим, как сильно изменился пакет. Проверяющие, «гуляя» по ВР, могут строить улучшенные зрительные модели благодаря такому пространственному представлению кода. Также это должно облегчить вызов из памяти деталей проекта, поскольку
Взаимодействие через жесты
Проверяющий может сгрести кучу фрагментов и поднять её вверх, превратив в кольцо для более пристального изучения. Теперь можно прочесть ближайший фрагмент или прокрутить кольцо до другого фрагмента. Можно переместить изучаемый фрагмент вверх или вниз. Когда нужно отменить действие, можно сделать движение, будто очищаешь стол.
Будущее ВР и программирования
Удалённое взаимодействие
Работающие в одном помещении команды могут общаться лично. Распределённые пробуют, но пока видеоконференции работают слишком медленно, а обмен мгновенными сообщениями слишком ограничен. Скоростной обмен данными, достаточный для передачи трёхмерной картинки, обеспечит эффект присутствия. Стартап High Fidelity разрабатывает инфраструктуру, которая позволит передавать аудио и видео с задержкой не более 90 миллисекунд. Кроме этого их программа умеет сканировать в реальном времени лицо человека и распознавать его эмоции, передавая их на его аватар.
Другие датчики движения и положения тела, Leap Motion и PrioVR, тоже можно использовать для передачи языка тела.
Парное программирование
Одним из преимуществ совместной работы является возможность парного программирования, когда двое разработчиков работают над программой одновременно на одном компьютере, и могут отлавливать ошибки друг друга. ВР позволит таким разработчикам работать за одним виртуальным рабочим местом. Просматривать одновременно файл, разговаривать и даже показывать друг другу на фрагменты кода.
Парная разработка
Работающие вместе дизайнеры могут общаться у доски для рисования. Разделяемая ВР может предоставить виртуальную комнату, где каждый сможет увидеть то, что делают другие. В ней можно будет перетаскивать файлы или части кода или графические фрагменты, рисовать диаграммы и структуры программ и баз данных.
Симуляция
При помощи огромных возможностей для симуляции ВР открывает новые перспективы для проверки проектов. Можно пройтись по проекту фабрики или завода, попробовать взаимодействие с симуляцией робота или нового автомобиля.
Вопросы и проблемы ВР
Степень погружённости
Устройства вроде Microsoft HoloLens предназначены для работы в реальном мире, на который накладываются некие виртуальные объекты – в дополненной реальности. ДР расширяет физический мир, в то время как ВР погружает человека в полностью виртуальный. Что более полезно и более продуктивно?
Формы ввода
Контроллеры видеоигр удобно использовать для навигации и выполнения простых действий, а клавиатура позволяет вводить более сложные данные. Однако эти устройства требуют, чтобы пользователь взаимодействовал одновременно и с реальным и с виртуальным миром. Распознавание жестов исключает необходимость работать с реальным миром, но это может быть крайне утомительным занятием. Какой способ лучше всего подойдёт для ввода данных пользователя в ВР?
Отделение от физического мира
Ношение очков ВР означает отключение от физической реальности, в т.ч. от сослуживцев. Это ограничивает возможности физического общения, да и вообще взаимодействия с реальным миром. Если приспособить на очки веб-камеру, это поможет организовать трансляцию реального мира в виртуальный, но ограничит область видимости.
Трансляция в 3D
Некоторые задачи сложно представлять в 3D. Например Immersion пытается представлять двумерные куски кода в 3D, но у кода нет третьего измерения, поэтому его репрезентация неполна. В этой области можно начать изобретать некое трёхмерное программирование, как, в частности, предлагается в работе Энди Ко.
Технические ограничения
У Oculus Rift Development Kit 2 разрешение составляет 1080p. Текст читать можно, но для нормального программирования нужно больше. Для использования Rift нужно правильно измерять расстояние между зрачками, однако текущие инструменты либо долгие в использовании, либо неудобные. Очкарикам приходится мучаться ещё больше, настраивая Rift для работы в очках.
Виртуальная реальность уже здесь
Двумерные окружения для разработки не используют все возможности человеческого тела. ВР – это шаг к среде разработки, которая сможет эффективно связать трёхмерную картинку и движения тела. С такими преимуществами возникают новые возможности по созданию инструментов, которые раньше были недоступны. Эти возможности дают увеличение продуктивности, большой простор для творчества и больше удобств для пользователя.
Скорее всех выигрывают при использовании ВР те разработчики и дизайнеры, которые создают что-либо в 3D. Двумерная картинка на мониторе сильно ограничивает их работу. И другие области разработки тоже выиграют от использования 3D – но для этого нам нужно, чтобы как можно больше людей создавало инструменты для работы ВР.
Виртуальность уже здесь. Что вы можете сделать, чтобы помочь ей?
Автор: SLY_G