Ещё в мае 2016-го Google громко анонсировал VR-платформу Daydream, но только теперь она становится действительно актуальна: маркировку «Daydream-ready» вслед за флагманом Pixel стали получать и другие смартфоны. Означает ли это, что для Android-разработчиков настало время разбираться с VR? Есть ли смысл посвящать этому своё время, если не имеешь отношения к игровой индустрии? С чем на практике сталкиваешься в мобильной VR-разработке?

На такие вопросы лучше всего может ответить человек с соответствующим опытом, и этот опыт есть у Александра Коршака: сначала он делал VR-приложение из личного интереса, затем в компании MERA разрабатывал мобильный видеоредактор с поддержкой 360-градусного видео, а теперь участвует в стартапе, связанном со сферическим видео, интернет- и TV-трансляциями. В результате он успел поработать и с тем же Daydream, и с предшествовавшим ему Cardboard, и с Gear VR — а мы расспросили его обо всём и сразу.


— Первый вопрос, возникающий в связи с мобильной VR-разработкой: для смартфонов есть целая куча устройств (шлем Daydream, Cardboard, Gear VR, шлемы компаний вроде Homido), под что из этого надо разрабатывать отдельно?

— На самом деле, всё достаточно просто. В мобильном VR существуют два гиганта, две основные платформы. Одна — это Oculus, на этой платформе работает Gear VR от Samsung. Всё остальное — это бывший Cardboard, ныне Daydream, то есть консолидированная VR-платформа от Google. API у Cardboard и Daydream почти ничем не различаются, для разработки под обе платформы используется Google VR SDK. Поэтому при большом разнообразии headset’ов, если смотреть на платформенную часть, всё не так страшно.

Кроме того, как и в случае мобильной разработки, существует возможность кроссплатформенной разработки, только не под условные iOS и Android, а под Oculus, Cardboard и Daydream. На ум сразу приходит Unity, однако есть и другие решения.

— При этом у Daydream по сравнению с Cardboard появился контроллер. Сильно ли это всё изменило?

— Ну, со стороны пользователя это, конечно, меняет всё коренным образом. Интерактив, который раньше сводился просто к поворотам головой в VR-пространстве, теперь достигается и за счёт движений руками, кнопочек, тачпада — в общем, всего того, к чему мы привыкли за годы использования смартфонов. Это очень здорово, у пользователей появляется гораздо больше степеней свободы в VR-мире, а у разработчиков больше возможностей для реализации своих идей.

Но чисто технически контроллер — это всего лишь набор сенсоров, пара кнопочек и тачпад. Разработчику с API контроллера можно справиться без особого труда. Приложение, написанное под Cardboard, запросто запустится на Daydream. Приложение, написанное под Daydream, запустится на Cardboard, но без поддержки контроллера, его API просто не будут вызываться и работать.

— Но при этом, вероятно, какие-то Daydream-приложения без контроллера окажутся бессмысленными?

— Да, такая возможность есть, с этим ничего не поделать. Хотя всегда можно добавить поддержку стороннего игрового контроллера и использовать его вместо «дейдримовского». В таком случае получим то же самое, только другим путём. Но, конечно, вопрос в том, захотят ли подключать сторонний контроллер пользователи.

— А на iOS сейчас VR в каком состоянии?

— В очень зачаточном. Про Cardboard всё понятно, но Cardboard уже не котируется. А в случае с Daydream нововведение заключается не только в добавлении контроллера, но и в обновлении всего Android специально под платформу (подробнее об этом я рассказывал на Droidcon Moscow). То есть разработчики Google добавили в принадлежащую им систему дополнительные средства оптимизации, которые работают автоматически и позволяют достичь оптимального качества и производительности Daydream-приложений, если они запущены на Android 7.x. Поскольку iOS не принадлежит Google, её они изменить не могли — а Apple пока что не представила какого-либо собственного VR-решения.

— В связи с мобильным VR говорят о проблеме сильного нагрева устройств — что ваш опыт говорит об этом?

— Проблема очень острая и насущная, да. Единственное средство, при помощи которого сейчас любая платформа избегает перегревания устройства — это насильная остановка работы приложения в VR-режиме. Система покажет сообщение о том, что устройство требует охлаждения, а дальнейшая работа приложения временно невозможна.

Эту проблему отчётливо чувствуешь на себе при разработке. В течение дня приходится проводить много отладки кода, устройства задействованы очень активно и частенько перегреваются.

Как с проблемой будут бороться, я не знаю. Опыт игровой индустрии говорит нам, что игровые ноутбуки — не те, в которых просто установлено очень хорошее железо, а те, в которых вместе с этим железом стоит хорошая система охлаждения. А в случае мобильного VR очень тяжело придумать какую-то классную систему охлаждения, способную вытянуть работу с высокими настройками графики, сохраняя мобильность устройства.

Но тут многое зависит от того, что именно показывать в VR. В случае с играми, конечно, проблема интересная, а в 360-градусном видео, которым я занимаюсь, всё лучше. Правило простое: чем меньше мы рисуем на экране и чем реже, тем дольше происходит нагрев устройства. В случае с играми это миллионы частиц, которые необходимо отрисовать не менее чем в 60 FPS, что очень тяжело для CPU и GPU устройства. В случае видео — просто отрисовка видео-кадров и параллельное проигрывание аудио, что гораздо проще.

— Нагрев — это «подводный камень»: о нём не узнаешь из красивых презентаций VR-платформ, сталкиваешься уже на практике. С какими ещё неочевидными проблемами пришлось столкнуться на личном опыте?

— Смотря про какую платформу говорить. В случае с Daydream мне вспоминается, как я пробовал разработку ещё до появления в продаже Daydream-шлема и контроллера, используя Android 7 Preview и эмулятор контроллера. Оказалось, что эмулятор с очень странной частотой возвращает данные акселерометра и магнитометра: наблюдались большие, необъяснимые задержки в передаче данных. Печальный опыт. С контроллером, который сейчас продаётся, всё гораздо лучше, но периодически проблема с сенсорами наблюдается.



— Daydream анонсирован меньше года назад — насколько стабильным он сейчас ощущается, приходится ли сталкиваться с проблемами вида «ещё сыро»?

— Проблем «на ровном месте» почти не видно, хотя год назад они находились. К примеру, год назад Google VR SDK отказывался работать на x64-архитектурах. Очевидных проблем стало меньше, хотя, с другой стороны, есть и неочевидные. Требования индустрии не до конца сформированы, поэтому многое приходится реализовывать самому.

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

— Опять же, смотря какая платформа. Oculus я был недоволен ещё год назад: документация постоянно оказывалась неактуальной от одной версии SDK к другой, а на форуме Oculus было достаточно тяжело дождаться ответов от разработчиков и сообщества. В случае с Daydream и Cardboard с документацией всё замечательно, API очень приятные и доступные для понимания, и поэтому особых проблем с ними никогда не возникало.

При упоминании VR люди обычно думают о приложениях, полностью завязанных на виртуальную реальность. Но вы работали над видеоредактором, где с VR связана только часть функциональности. Широкая ли это ниша — «обычные» приложения, где VR является опциональным дополнением?

— Да. Мне нравится пример с одной американской риэлторской компанией, которая добавила возможность просмотра продаваемых квартир в VR-режиме. Для занятых людей это замечательная возможность подобрать жильё без лишней траты времени…

— В видеоредакторе, над которым вы работали, 360-градусное видео можно видеть не только в VR, но и в «обычном» режиме, так? Есть ли у вас статистика по тому, как смотрели чаще?

— Да, всё верно. По аналитике отслеживали, что если человек открывает сферическое видео, то чаще всего просматривает его именно в VR-режиме.

— Предположим, мобильный разработчик после этого интервью задумался, стоит ли добавить в его приложение опциональную VR-функциональность. Вопрос: не окажется ли так, что ему нецелесообразно разбираться с новой областью ради одной фичи? Насколько высок порог входа?

— Мне кажется, на данный момент порог вхождения в основном сводится к знанию минимальных основ компьютерной графики, и не более. Опять же, если отталкиваться от Cardboard и Daydream, у них и документация, и API достаточно простые и прозрачные для разработчика, который только начинает заниматься VR.

— Последний вопрос: а приходится ли сталкиваться с тем, что сейчас в платформах мобильного VR чего-то ощутимо не хватает, но в их следующих версиях это ещё может появиться?

— Да, c моей колокольни разработчика, занимающегося 360-градусным видео, таких моментов видно немало. Вот в качестве примера. На рынке есть различные 360-камеры — Google Jump, Gear 360 и целый ряд подобных. Все они снимают и передают видео в разных форматах и проекциях, которые не обязательно поддерживаются SDK для Cardboard, Daydream или GearVR. Соответственно, возникает задача расширить стандартную функциональность широко известных фреймворков, а еще лучше сделать ее кроссплатформенной.

На ближайшей конференции Mobius я буду много говорить о видеоформатах, кастомизации проигрывания VR-видео и так далее… Все эти вопросы появились как раз из-за того, что стандартного функционала Cardboard SDK или Oculus SDK мне было недостаточно.



В прошлом году на Mobius 2016 Александр уже рассказывал о VR-разработке, попав в топ докладов конференции. На тот момент он ещё не работал с Gear VR, Daydream был только-только анонсирован, а доклад был основан на опыте pet project. Теперь же, получив на рабочем месте много опыта работы с 360-градусным видео, Александр поделится им на конференции в новом докладе «Сферическое видео в Android: на 50 оттенков темнее». Mobius 2017 состоится в Санкт-Петербурге 21-22 апреля.
Поделиться с друзьями
-->

Комментарии (2)


  1. Fortisa
    21.02.2017 16:02
    +3

    Слышала выступление Александра вживую, это круто — редкое сочетание профессионализма, юмора и завораживания аудитории.


    1. 23derevo
      21.02.2017 18:00

      нам тоже нравится, поэтому и решили с ним отдельно пообщаться.