В 2016 году в компанию LikeVR обратилась компания Mercedes, с запросом реализации масштабируемого презентационного решения виртуальной реальности, для презентации автомобилей Mercedes Benz E-class.
Нами была предложена концепция авто-конфигуратора в формате виртуальной реальности, на базе мобильного android приложения и связки смартфона Samsung Galaxy S6 и гарнитуры виртуальной реальности Samsung Gear VR.
Совместно с заказчиком, мы разработали структуру конфигуратора, в которой заложили возможность конфигурирования 5 комплектаций, 27 видов дисков, 10 цветов, от 3 до 5 видов отделочных материалов на комплектацию, и от 2 до 5 видов декоративных элементов на комплектацию.
В качестве окружения мы выбрали 360 фотографию с Красной площади.
В качестве основной механики управления приложением мы выбрали механику Gaze (Механика, при которой у пользователя есть элемент управления - в нашем случае это крестик в центре экрана, при наведении которого на интерактивный элемент интерфейса срабатывает прогрузка прогресс-бара. Прогрузка занимает от 0,5 до 1 секунды, и, в случае если она проходит до конца, происходит срабатывание интерактивного элемента (нажатие кнопки)). По сути, Gaze - это мышка в виртуальной реальности, управляемая поворотом головы.
Описание функционала
В главной сцене (на главном экране) приложения мы видим экстерьер автомобиля, а также элементы управления:
- Выбор модели
- Выбор цвета
- Выбор дисков
На центральной панели интерфейса располагаются элементы:
- "В начало" (перезапуск приложения)
- "Центрировать"(кнопка поворота камеры для ориентации сцены перед пользователем)
- "Интерьер" (кнопка перехода в интерьер выбранной модели)
- Кнопки поворота автомобиля вправо и влево
Интерьерные меню
Интерфейс в интерьере состоит только из одной (верхней) строки. Элементы интерфейса:
- "Центрировать" (кнопка поворота камеры для ориентации сцены перед пользователем)
- "В экстерьер" (кнопка перехода к экстерьеру выбранной модели)
- "Обивка" (выбор варианта отделки салона)
- "Декоративные элементы" (выбор варианта декоративных элементов)
- "Подсветка" (выбор варианта подсветки салона)
Результаты
В результате выполненных работ мы получили работающее приложение VR конфигуратор, которое мы установили на 68 устройств Samsung Galaxy S6. Эти устройства, в комплекте с устройствами Samsung Gear VR были отправлены в салоны дилеров по всей России, и презентация новой модели E-class в большинстве салонов началась раньше, чем в него поступили машины.
Ход реализации проекта
Реализация проекта началась со сбора описания, референсов и формирования технического задания. Были выбраны техническая и технологическая платформы, был разработан project flow (мы используем Trello для формирование флоу проекта), описаны и размечены milestones (основные стадии проекта, и в чем они выражаются). Не смотря на то, что мы формируем оценку стоимости и срока проекта еще до его начала, прописываем их в договоре и соблюдаем их, команда ведет проект в традициях agile, так нам удобнее отслеживать итерации (спринты), видим где мы проседаем, а где остается запас. В целом, при оценке проекта мы стараемся брать небольшой запас (хотя получается это далеко не всегда, в 70% случаев к нам приходят с горящим проектом, от которого отказались все студии, к которым заказчик пришел до нас).
Мы работаем в основном в движках Unity и Unreal Engine 4, и работы по проекту обычно делятся на 2 глобальные ветки - подготовка контента и подготовка функционала. После того как весь контент готов, ветки сливаются на этапе сборки проекта, и продолжаются этапом тестирования и отладки.
Этап подготовки контента
Сбор references
Этап сбора references (подходящих под описание примеров) в данном случае представлял собой работу по фотосъемке автомобилей в различных конфигурациях и формирования контент-таблиц, по которым в дальнейшем шел график отрисовки контента.
Создание и подготовка моделей
Создание моделей - это работы в редакторе трехмерной графики (наши художники используют большой арсенал - Maya, 3Ds Max, Cinema4D, Blender, и некоторые другие). Модели "рисуются" в процессе, называемом "sculpting", далее в модели выделяются материалы, которые затем будут настроены в движке. Отдельно, для моделей готовятся текстуры - это целый процесс, подразумевающий подготовку отдельных файлов текстур для различных свойств поверхности. В случаях, когда подразумевается дальнейшее анимирование модели - производится rigging (разметка "костей", необходимых для анимации модели)
Этап реализации функционала
Написание ядра функционала и отдельных блоков
Данный проект мы реализовывали на движке Unity 3D, которые подразумевает написание кода на языке C#. На этапе реализации ядра функционала программист формирует общую структуру проекта, выбирает подход, исходя из известных ограничений и требований (Также он подключает все необходимые для функционирования проекта в будущем библиотеки, такие как sdk шлемов виртуальной реальности (в данном случае это был sdk Geat VR. Также, он пишет блоки кода для отдельных функций и фичей.
Сборка проекта
Во время сборки проекта происходит настройка сцен, объектов, материалов, освещения, звуков, собираются интерактивные объекты, прикручиваются блоки функционала к объектам, к которым они относятся, и в общем, происходит весь необходимый объем работы, отделяющий проект от стадии упаковки приложения. Во время сборки также проходят стадии тестирования в движке, в течении которых тестируются отдельные блоки функционала.
Тестирование и отладка
Этот этап наступает после упаковки приложения, и в целом, продолжается до тех пор, пока количество багов, оставшихся в приложении, не станет некритичным. Некритичным оно является в том, случае, если вся их совокупность не прерывает пользовательский опыт, и не приводит к негативному пользовательскому опыту, и потому это критерий субъективный - в нашем случае, как правило, это нечто среднее, между нашей оценкой и оценкой заказчика.
В данном случае мы собрали 62 билда (сборки приложения), до того как получили удовлетворяющий заказчика результат.
Реализация приложения заняла у нас 2 рабочих месяца.
Решенные для достижения результата проблемы:
В данном случае, мы реализовывали мобильной приложение с предполагаемо большим объемом трехмерной графики, что подразумевало большой объем работ по оптимизации графики, поскольку мобильные устройства не имеют видеокарты, и отдельного видео-процессора, а обычно имеют отдельное ядро процессора, видеоускоритель, на которое и ложится вся нагрузка по отрисовке этой графики. В нашем случае, ситуация усугублялась тем, что это было мобильное VR приложение, которое подразумевало рендеринг стереокартинки, что означало, по сути умножение нагрузки на 2. И эта проблема косвенно вела к другой - такая нагрузка на процессор вела к его нагреву, что в свою очередь в перспективе может означать как минимум одно из двух - троттлинг (искуственное замедление процессора системой, для избежания перегрева, или собственно перегрев. Перегрев может вести к целому спектру проблем, от вылетов, зависаний приложения, до зависания и перезагрузки телефона, и в конечном счете к его поломке. Троттлинг же означает понижение фреймрейта (частоты кадров) (которое визуально отражается в "залипании" картинки, что для пользователя виртуальной реальности убийственно (для оптимального опыта виртуальной реальности нужно не допустить снижения fps ниже 90) и ведет к укачиванию и головной боли, и как следствие негативному экспиренсу, негативному фидбеку пользователя и испорченном отношениям между ним и брендом, что является противоположным стремлению бренда в создании приложения.
На выходе мы получили полный объем заявленного функционала и контента с fps 90. О том, какие методы для решения подобных проблем мы используем - в отдельной статье.
LikeVR