Дизайн Andrey Karmatsky
1 974

AReal — объёмная карта Санкт-Петербурга в дополненной реальности

В приложении доступны семь 3D-моделей знаковых зданий города.

В закладки

Urbica постоянно делает карты. Мы решили поэкспериментировать и выпустить приложение про Петербург в дополненной реальности. Выпустили сегодня. Рассказываем опыт команды.

Сегодня мы запустили своё первое AR-приложение — про Петербург в дополненной реальности. Оно очень простое: на плоскую поверхность проецируется карта центра города с маркерами, по тапу на которые можно изучить одну из семи 3D-моделей знаковых зданий.

В самом начале проекта нам казалось, что ничего в этом сложного нет: мы просто возьмём готовые SDK, изучим туториалы и за пару месяцев соберём приложение. Мы ошибались. В этой истории мне хочется поделиться опытом нашей команды и заодно структурировать эти знания для себя.

Хайп вокруг AR- и VR-технологий не стихает уже давно. Кажется, ещё многое предстоит выяснить, порой не разобраться, где реальная польза, а где только обещания сделать этот мир лучше. В 2012 году вышло множество приложений с технологией дополненной реальности: поиск достопримечательностей, помощь в навигации в городе и прочее.

Я тогда отвечал за интерфейсы «Яндекс.Карт», и мы горячо обсуждали внутри, нужно ли встраивать эту технологию в массовый продукт. В то время технология предполагала позиционирование только по компасу и локации, что в итоге создавало не очень хороший пользовательский опыт.

Всё начало меняться с развитием «железа» в смартфонах, стало возможным применение алгоритмов компьютерного зрения на устройстве. И конечно же, большие компании, такие как Google и Apple, начали смотреть в сторону AR и VR, предлагая разработчикам всё более удобные SDK.

Почему и зачем мы в это ввязались

История Urbica началась три года назад, когда я и картограф Тая Лавриненко сделали редизайн карты популярных офлайн-карт Maps.me. Этот дизайн карты и сейчас актуален, и его видят миллионы пользователей.

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

Наши проекты — преимущественно про улучшение сервисов в контексте городской среды. Например, мы помогали с анализом данных для запуска сети наземного транспорта «Магистраль» в центре Москвы, а также проанализировали и улучшили сервис проката велосипедов «Велобайк».

Наблюдая за шумом вокруг AR и VR, мы решили не стоять в стороне и попробовать новые способы взаимодействия пользователя с картографическими данными. Unity — популярная платформа для разработки 3D-игр, сейчас активно развивает тему AR и VR. Есть множество туториалов, коннекторов и плагинов, которые помогают разработчику получить на выходе готовое к релизу приложение.

Кроме этого, компания Mapbox, предоставляющая наиболее продвинутую картографическую платформу для разработчиков, развивает SDK для Unity и регулярно радует релизами.

Как всё прошло

Изначальный план был крайне простым и дерзким. Под чутким руководством менеджера Анны выделить время картографа Таи на изучение Unity Studio и туториалов, чтобы поработать с визуализацией карты; силами дизайнера Кристины спроектировать интерфейс и всё запрограммировать мобильным разработчиком Серёжей.

Тут стоит сразу оговориться: все участники проекта, не считая последних двух героических недель, были заняты проектом парт-тайм параллельно с другими коммерческими проектами компании (в среднем где-то треть времени).

Первый прототип по туториалу Mapbox и Unity показал, что идея запихнуть карту в AR не такая уж удачная. Точнее, реальность вносит свои коррективы. Нельзя отрендерить весь город (тормозит), а пользоваться этим не очень удобно.

Первые прототипы с картой в AR. Изначально мы хотели дать возможность «погулять» по дополненному Петербургу, но выяснилось, что это в использовании не так удобно и получается скучно

Дальше нужно было решить, на какой технологической платформе это реализовывать. Например, стоит ли использовать фреймворки вроде Vuforia, чтобы расширить парк устройств, но при этом потерять в точности позиционирования?

Vuforia отлично справляется с позиционированием, если есть маркер, но нам показалось, что это неудобно для конечного пользователя. После серии экспериментов ребята решили использовать ARKit и ограничиться устройствами, которые эту технологию поддерживают (iPhone 6S, SE и более поздние).

Мы с самого начала догадывались, что между туториалами а-ля «поиграться в песочнице» и готовым продуктом, который можно показывать другим людям, пролегает пропасть. Однако мы не представляли, насколько велика эта пропасть.

С одной стороны, Unity сразу предлагает на выходе готовый проект для XCode, который достаточно собрать и опубликовать в AppStore. С другой — это накладывает ряд существенных ограничений и перекраивает весь процесс разработки.

Серёжа и Тая разбираются с Unity

Раз на выходе Unity выдаёт готовый проект, весь интерфейс приложения необходимо реализовывать там: подсказки, переходы, поведение и даже сплэш-экран с иконкой приложения. Например, Кристина, которая, вообще-то дизайнер, совсем незаметно для себя освоила программирование на C #. Кроме этого, есть способы связать Unity и нативный код, но мы поняли, что на этом этапе нам нужно смириться с концепцией одной платформы.

Так выглядит проект c картой в Unity Studio

Следующим испытанием была история с 3D-моделями. Мы и не предполагали, насколько глубок и специфичен мир 3D и геймдев-разработки. Сначала мы взяли какие-то бесплатные модели и прикрутили их. Получилось колхозно.

Углубившись в детали, мы выяснили, что текстуры, настройка освещения, позиционирование модели в пространстве — ключевые моменты, поэтому 3D-моделями занимаются специальные люди, которые в этом разбираются. После серии консультаций по знакомым наших знакомых мы нашли человека и заказали смоделировать семь интересующих нас достопримечательностей.

Медного всадника можно «усадить» куда угодно и в любом городе. Можно сказать, добавить немного Петербурга в любом месте

Особая тема — AR и то, как работают технологии распознавания изображений. Apple ARKit по-прежнему требователен к хорошей освещённости помещения, а попытка «зацепиться» камерой за монотонную поверхность приводит к неточному позиционированию, объекты «ползут», и это немного смазывает ощущение волшебства.

А ещё очень сложно быть заказчиком самому себе и делать такие pet-projects. Кажется, нет заказчика — нет проблемы, можно делать что хочешь, но на самом деле, не имея внешних ограничений, можно долго копаться с деталями, ничего не опубликовав. Последнюю неделю я имел на руках почти готовую сборку и начал играть с приложением.

Это действительно весело — поместить медного всадника, пока ждёшь вылета, в аэропорт Сингапура, или, например, дополнить Александровской колонной Площадь первой пятилетки на Уралмаше в Екатеринбурге. Я начал накидывать какие-то новые идеи и требовать их реализовать, а ребята героически защищали заранее оговоренный объём минимальной версии и намеченные сроки запуска. За что им, на самом деле, огромное спасибо.

Отдельное спасибо нашему знакомому Денису и его другу Денди за содействие в съёмках ролика про AReal для соцсетей ;)

Резюме

  • Мы начали в начале марта, предполагая закончить этот эксперимент в начале июня.
  • Если быть откровенными, мы видим, что многое получалось благодаря счастливому стечению обстоятельств, и если оно работает, для нас остаётся загадкой.
  • Возможно, будь это проект с заказчиком за деньги, он мог бы не случиться, ведь на старте у нас совсем не было опыта, а риски были высоки.
  • Как и у всех в подобных историях, где-то посередине проекта было огромное желание бросить эту затею.
  • В мире бывают специальные люди и команды, которые хорошо работают с AR и 3D, но на пересечении таких интересов, как картография и AR, мало с кем можно пообщаться.
  • Можно бесконечное количество времени читать статьи или изучать туториалы, но без реального процесса разработки это всё не имеет никакой ценности.

Лучше быть лохами с приложением в AppStore, чем быть лохами без приложения в AppStore.

Серёжа
мобильный разработчик

А назвали приложение очень просто — AReal.

#дизайн #стартапы

Материал опубликован пользователем. Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "Andrey Karmatsky", "author_type": "self", "tags": ["\u0441\u0442\u0430\u0440\u0442\u0430\u043f\u044b","\u0434\u0438\u0437\u0430\u0439\u043d"], "comments": 5, "likes": 33, "favorites": 1, "is_advertisement": false, "subsite_label": "design", "id": 43021, "is_wide": false, "is_ugc": true, "date": "Thu, 02 Aug 2018 10:39:47 +0300" }
{ "id": 43021, "author_id": 32070, "diff_limit": 1000, "urls": {"diff":"\/comments\/43021\/get","add":"\/comments\/43021\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/43021"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199114, "possessions": [] }

5 комментариев 5 комм.

Популярные

По порядку

2

Оставьте контакты с кем можно по сотрудничеству пообщаться!

Ответить
0

А сами вы территориально в Питере или Москве?

Ответить
2

Москва

Ответить

1

Мы занимаемся погодными данными в реальном времени и есть свои разработки для города. Было бы интересно пообщаться.

Ответить
0
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } } ]
Приложение-плацебо скачали
больше миллиона раз
Подписаться на push-уведомления
{ "page_type": "default" }