В начале августа мы выпустили в AppStore наше первое приложение с дополненной реальностью — AReal. «Нам казалось, что ничего в этом сложного нет: мы просто возьмём готовые SDK, изучим туториалы и за пару месяцев соберём приложение. Мы ошибались».
Исходный код AReal: https://github.com/urbica/areal
В этом посте хотим рассказать про AReal как проект с картой и поделиться впечатлениями, каково после веб-картографии переключиться на дополненную реальность.
Мы всегда воспринимали работу с картами как работу с пространством, и дополненная реальность для нас — это новый способ играть с окружающей средой. Приложение AReal может дополнить картой и достопримечательностями Петербурга совершенно любое место в мире, даже самое неожиданное — мы, например, экспериментировали в аэропорту Сингапура и на Уралмаше в Екатеринбурге. Это занятие — одновременно довольно забавное и полезное, потому что помогает расширить представления о пространстве и его возможностях.
Зачем нужна локация в дополненной реальности?
AR-платформы развиваются быстрыми темпами, и в ближайшем будущем дополненная реальность может стать цифровым слоем поверх «обычной». AR способна изменить многие сферы жизни: торговлю, рынок услуг, навигацию. Точки интереса переместятся с карты на экран телефона, и опыт перемещения в пространстве, в том числе вождения автомобиля, тоже преобразится.
Чтобы воплотить в жизнь AR-мечты, нужно научиться привязывать дополненную реальность к местам реального мира, работать с картами как AR-объектами и настраивать навигацию в AR. Возможности карт в AR даже сейчас, на ранней стадии развития технологии, довольно впечатляющие. За всем этим скрывается целая пачка технологий.
Как и на чём делать AR-приложение?
Наше приложение сделано на платформе ARKit и движке Unity.
Оказалось, что Unity — это гораздо больнее, чем мы надеялись. У движка есть собственный графический интерфейс — Unity Editor, но выяснилось, что он даёт только базовую функциональность: например, просто показать 3D-модели. Сами по себе возможности Unity довольно широки, но чтобы реализовать логику интерфейса, взаимодействие объектов и даже анимации, приходится писать скрипты на C#. Так мы начали разбираться не только с новой областью, но и с новым языком программирования.
В 3D-картах можно довольно эффектно показывать на карте высоты домов или рельефы. Нашей территорией был Санкт-Петербург, где рельеф плоский, поэтому мы поэкспериментировали только с объёмом домов.
Для реализации карты мы использовали Maps SDK для Unity, разработанный компанией Mapbox. Это — средство разработки, которое позволило нам подключить геоданные и карту с настроенным дизайном в среду Unity. Уже в самой 3D-среде мы сделали дома объёмными и их стилизовали.
Особенности дизайна карт в AR
Мы придумали необычный дизайн карты, но теперь нужно было понять, как она, будучи виртуальным объектом, встроится в окружающую реальность. Оказалось, что карта в AR — совсем не то же самое, что обычная карта на экране, и подходить к её дизайну надо иначе.
★ Положение: карта должны располагаться хорошо и относительно поверхности, на которую проецируется, и относительно экрана телефона.
★ Освещение: на карту влияют и виртуальный свет, настроенный кодом, и свет из реального мира, например, лампы или солнце;
★ Цвета: дизайн, который будет контрастировать с реальностью, потому что карту можно спроецировать в любое место, и в любом месте она должна быть видна;
★ Прозрачность: мы сделали карту наполовину прозрачной, потому что так её фоном как будто становится сама среда;
★ Форма: карта стала круглой — просто потому, что карты почти всегда квадратные и мы решили поэкспериментировать.
Работать с картой в дополненной реальности оказалось сложно и интересно. Главное — научиться думать о ней как об объекте реального мира.
Urbica — московская компания, которая занимается дизайном и консалтингом в области визуализации данных. Наша область экспертизы — пользовательский опыт человека в городе.